ααααβααα’
ααΎαααΆαα ααααααααααΆα αααΎααααααΆααααΆαααΈααα·αααα·ααα½αα ααα½ααααα αααα»αααΈαα½ααα ααΎααααα αα’αΆααΈαααααααΆααααΌαααααα Hetzner α αα αααα»αα αααααααΈαα½αα ααΎαααΆααααΆαααΈααααα½α ααΌααααα½ααααααΉαααααΌαααΆαααα ααααΈααΆ α αΎαα ααα αΆααααααααααααααααα·αα αααΆαααΈααα·αααα·αααΆααα’αααα αααα»αα αααααα
αααααααΆαααααααα·αα’αα»ααααΆαα±ααααΎαααααΎ gitlab-runners ααΆααααααΆαα αααααΆααααα αΆααΆα αααΎαααΎαα‘αΎααα ααααααα’αααααααααααΆαα α»ααααααααΌα ααααΆααΆα αααΎαααα α‘αΎα ααααααα»αα±ααααΎαααααααααααααααααΆα α αΎααααααα’ααααα/ααααα ααααΆααααα
ααααααα ααααΆαα·ααααααΆααΆαα’αα»ααααααα’αααα»αααααα ααα»αααααααααααααΆααααα αΆααααΌα ααΆααΆααααα½α αα·αααΆααααααΆααααα’αΆα ααααΎαα ααΆαα
αααααΆααααΆααααααα ααΌαααΎαααααΆα
αααα
αααααααααΌαααΆααα
ααΎαααΆαααΈαααα
- αααααααΆαα
- Git
- α―αααΆααααααααΎααααΆααα α»α ssh
αααααΆαααααΌαα ααααΆαα’αα»ααααααΆαααΆααααααααααααααααααααααα·αα ααΎαααΆαααΈααα·αααα·αααΆααα’ααααΊααΆα’αααααααΌαααΆααααΆαααΈαααα Ansible ααΉαααααΌαααΆαααα‘αΎαα ααΈαααΆαααΈαααα ansible ααΉαααααΎααΆααααααααΆ git pull α αΎαα αΆααααααΎαααααΆαααααααααΆαααααΎαα αα α»ααααααααΆαα‘αΎααα·αα αααααΆαααααααααααΆααααα ααΎαααΆααααααΎααααΆαααΈααα·αααα·αααΆα ααααα‘αααα½ααα ααΆααααα α ααααα α αΎαααα‘αΎααα ααΎααΆα
- αααααααΆαα
- ansible
- α’αααααα gitlab
ααΈαααα αΆααααΆααα - α’αααααααΌαα
α»αααααα gitlab-runner, αααααΎα ssh-keygen, αααα αα ssh key ααΆααΆααααααααααΆαααΈαααααα
.ssh/authorized_keys
αα
ααΎαααΆαααΈααα ααΌαααΎαα
ααα 22 αααααΆαα ansible αα
ααΎαααΆαααΈαααα
α₯α‘αΌααααααααααα ααΆαααααααα ansible
αααααΆαααααα
ααααααΎαααΊααααΎα’αααΈαααααααααΆααααα’αΆα
ααααΎαα
ααΆααααααααααααααααα·α αα
αααα»αα―αααΆα /etc/ansible/ansible.cfg
ααΎαβααΉαβαα·αβαααα
ααβααα·βααΎβαααααΆαα host_key_checking = False
ααΌα
αααα ansible αα·αααααΎαα»αααΆααααααΆααααΈαααΆαααΈαααααΈα
αααααΆααααα’αααααααΌααααααΎαα―αααΆαααΆαααΎααααααααααααααααααααα·αααααΆαα ansible ααΈαααααααααααΆααΉααα ip αααααααΆαααΈααααα’αααααααΌαααααΎ git pull α
ααΎααααααΎαα―αααΆαααααααααααΎ API αααα Hetzner α’αααα’αΆα αααααααΈαααΆαααΈαααΈ AWS, Asure, database ααααα’ααα (α’αααααΆα API ααααααααΆαα½αααΎααααΈαααα αΆααααΆαααΈαααααααα»αααααΎαααΆαααααα’αααααααα?)α
αα ααΆααααααααααα―αααΆαααΆαααΎαααααααΆαααΆααααααΆααααΆαααααααΆαα Ansible ααΆαα½αααααΎααα ααΌα αααα
[Π³ΡΡΠΏΠΏΠ°]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
[Π³ΡΡΠΏΠΏΠ°2]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
ααΎααααΈαααααΎαα―αααΆααααααα ααΎαααΉααααααΎαααααααΈαααΆαααααα½α (αααα α
ααΆα vm_list
):
#!/bin/bash
echo [group] > /etc/ansible/cloud_ip &&
"Π²Π°Ρ CLI Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ IP Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ
ΠΌΠ°ΡΠΈΠ½ Π² ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅" >> /etc/ansible/cloud_ip
echo " " >> /etc/ansible/cloud_ip
echo [group2] > /etc/ansible/cloud_ip &&
"Π²Π°Ρ CLI Π·Π°ΠΏΡΠΎΡ Π½Π° ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠ΅ IP Π·Π°ΠΏΡΡΠ΅Π½Π½ΡΡ
ΠΌΠ°ΡΠΈΠ½ Π² Π΄ΡΡΠ³ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠ΅" >> /etc/ansible/cloud_ip
ααΆααααααα αΎαααΎααααΈαα·αα·αααααΎαααΆ Ansible ααααΎαααΆα αα·αααΆαααΆααα½αααΆαααΆααααΆααααΆαα½αααΉαααΆαααα½αα’αΆααααααΆα IPα
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
αααααααα½αααααΆαααααααααΆαααΈααααααααΆαααΈααααααΆααααααααΆααααΌαααΆαααααα·ααααα·α
ααΆαααααΈαααΈα’αααΈααΆαααααααααααα
- /etc/ansible/./vm_list - αααααΎααααααΈαααΆαααΈα
- -i - ααααΌαααΆα αααΆααα ααΆααα―αααΆαααΆαααΎααααα
- -m - ααααΆαα ansible α±ααααααΎαααΌαα»αααα
- -a ααΊααΆα’αΆαα»αααααα ααΆααααααααΆααΆαα½αα’αΆα ααααΌαααΆααααα αΌααα ααΈααα
- αααα»α - ααααααααααα»αααααα’αααα ααααα·αααΎα’αααααααΌαααΆαααααΎααΆαα ααΎα αααααααΆααα’αα ααΌαααααΌααααα»ααα ααΆααα’ααααααΆ
ααααα ααααααα - αααααααΆααΆαααααΎ git pull ααΎαααΆαααΈααα·αααα·αααααααΎαα
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
ααααα·αααΎαα αααα»ααααααααααααΎαααΎααα½α ααΆααααα α¬αααα»ααααα»αα ααααΈααααΆαα αααα’αααΈαααααΎαααΆαα αΎαα
α₯α‘αΌαβαααβααΊβααΆβα’αααΈβαααβααΆβααΆαβαααβαααααΆααβααΆααβα’αα
α αΌαααΎαααααααααααααΈαααααααΎαα±ααααααΎαααΆααααααααααααααααα·αα αααααααΆαααα ααΆααΆαααα αααα»α gitlab
ααααΌαβααΎαβααααΎβα±ααβααααααΈαβααααβααΎαβααΆααβααβαααααβααα’αΆα α αΎαβααΆααβααΆβαααα»αβα―αααΆαβαααβα’αΆα βααααα·ααααα·βααΆα (α α βααΆβααΆ exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
ααααα
gitlab ααααααΎαα αΎααααααΎαα―αααΆααα
αααα»ααααααα .gitlab-ci.yml
ααΎαααΆααααΆαααααααα
ααΆααααα»αα
variables:
GIT_STRATEGY: none
VM_GROUP: group
stages:
- pull
- restart
run_exec_pull:
stage: pull
script:
- /etc/ansible/exec_pull 'cd /path/to/project/'$CI_PROJECT_NAME' && git pull' $VM_GROUP
only:
- master
run_service_restart:
stage: restart
script:
- /etc/ansible/exec_pull 'your_app_stop && your_app_start' $VM_GROUP
only:
- master
ααΆααα’αααα½α ααΆααα αΎαα α₯α‘αΌαβααα -
- ααααααααΆα α·ααα
- αααα»αααΈαααΆααααα’αααΈαααααΎαααΆα
αα
αααααααα .yml αα
αααααααααααααα α’αααααααΆααααααααΌαααααΌααααααααααΆααααααΎααααΈα
αΆααααααΎαα‘αΎααα·α αα·ααααααααααα
ααααααααααΆααααααααΆ ansible ααΉαααααΌαααΆαααααα·ααααα·α
ααααα: www.habr.com