แฒแแ แแ แแฆแ
แฉแแแ แแแแฅแแก แ แแแแแแแแ แฆแ แฃแแแแแแแ แแแแกแขแแ แ แแแแแแฃแแจแ แแแแ แ แแแแแแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแแแแ. แฉแแแ แแแแ แแ แแแแแแกแก แแฃแแแกแแแแซแแแแ Hetzner-แจแ. แแแแแแฃแ แแแแกแขแแ แจแ แแแแฅแแก แแ แแ แแแแแแ แ แแแแฅแแแ, แแแกแแแ แแ แแก แแฆแแแฃแแ แกแแแแจแแขแ แแ แแแขแแแแขแฃแ แแ แแแฌแแแแแแ แแแแกแขแแ แแก แงแแแแ แแแ แขแฃแแแฃแ แแแแฅแแแแแ.
แแก แกแฅแแแ แแ แแแแซแแแแก แกแแจแฃแแแแแแก แแแ แแแแฃแ แแ แแแแแแแงแแแแ gitlab-runners, แ แแแแแ แแแแ แ แแ แแแแแแ แฉแแแแแ, แ แแแแกแแช แฉแแแแแ แแ แแแแแ แแแแแขแฃแ แ แ แแแแกแขแ แแ แแแฃแแ แแแ แแแแแแ, แ แแแแช แแแแแแงแแแแ แแแแแกแแแแแ แแ แแแแแแฌแแ แ แแก แกแขแแขแแ/แกแแฎแแแแซแฆแแแแแแ.
แแก แแแแแ แแ แแ แแก แกแแฃแแแแแกแ แแ แแฅแขแแแ, แแแแ แแ แแก แแแแแกแแแแแ แแแฅแกแแแแแฃแ แแ แแแกแแฎแแ แฎแแแแแ แแ แแแ แขแแแ แฉแแแแ.
แแแแแแแแแแกแแแแก แแฎแแแแ แแแขแ.
แกแแญแแ แ แแแแแขแแแ แแแกแขแแ แแแแฅแแแแแ:
- แแแแแแ
- แขแฃแ แแแแ
- แคแแแแ ssh แแแแแแจแแแแ
แงแแแแ แแแ แขแฃแแแฃแ แแแแ แแขแแ แแแขแแแแขแฃแ แ แแแฌแแแแแก แแแแแ แแแแก แแแแแแ แแ แแแชแแแ แแ แแก แแก, แ แแ แแฅแแแ แแญแแ แแแแแ แแแแฅแแแ, แ แแแแแแแช แแแแแแขแแแแแแ Ansible. แแ แแแแฅแแแแแแ, ansible แแแแแแแแแก git pull แแ แซแแแแแแแก แแ แแแแแขแแแ แแแแก แแแแแฎแแแแฃแ แกแแ แแแกแก. แแ แแแแแแแแกแแแแแก แฉแแแ แจแแแฅแแแแแ แชแแแแ แแแ แขแฃแแแฃแ แ แแแแฅแแแ แแแแกแขแแ แแแแก แแแ แแ แแ แแแแแแแกแขแแแแ แแ แแแกแแ:
- แแแแแแ
- แแแกแฃแฎแแกแแแแแแแ
- แแแขแแแ-แแ แแแแ
แแ แแแแแแแชแแฃแแ แกแแแแแฎแแแแแแ - แแฅแแแ แฃแแแ แแแแ แแแแกแขแ แแ แแ gitlab-runner, แแแแแแแแ ssh-keygen, แแขแแแ แแแ แแ แแแแ แแขแแก แกแแฏแแ แ ssh แแแกแแฆแแแ .ssh/authorized_keys
แแแแแแ แแแแฅแแแแแ, แแแฎแกแแแแ แแแ แขแ 22 แกแแแแแแกแขแ แ แแแแ แแขแแ แแแกแแแแแแกแแแแก.
แแฎแแ แแแแแ แแแแแแแแคแแแฃแ แแ แแ ansible
แแแแแแแแ แฉแแแแ แแแแแแแ แงแแแแแคแ แแก แแแขแแแแขแแแแชแแ, แ แแช แจแแกแแซแแแแแแแ. แคแแแแจแ /etc/ansible/ansible.cfg
แฉแแแ แแแแแฃแฅแแแแ แฎแแแก host_key_checking = False
แ แแแ ansible แแ แแแฎแแแก แแฎแแแ แแแแฅแแแแแแก แแแแแกแขแฃแ แแแแก.
แจแแแแแแ, แแฅแแแ แแแขแแแแขแฃแ แแ แฃแแแ แจแแฅแแแแ แแแแแแขแแ แแก แคแแแแ ansible-แแกแแแแก, แกแแแแแแแช แแก แแแแฆแแแก แแ แแแแฅแแแแแแก IP-แก, แ แแแแแแแแช แฃแแแ แแแแแแแแ git pull.
แฉแแแ แแแแแแแ แแ แแแ แแ แคแแแแก Hetzner-แแก API-แก แแแแแงแแแแแแ, แจแแแแซแแแแ แแแฆแแ แฐแแกแขแแแแก แกแแ แแฅแแแแ AWS, Asure, แแแแแชแแแแ แแแแแแแ (แแฅแแแ แแแฅแแ 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-แก แแแแแแงแแแแก shell แแแแฃแแ
- -แ แแ แแก แแ แแฃแแแแขแ. แแฅ แแแแแกแแแแ แ แแ แซแแแแแแก แจแแงแแแแ แจแแแซแแแแ
- แฏแแฃแคแ - แแฅแแแแ แแแแกแขแแ แแก แกแแฎแแแ. แแฃ แแแแก แแแแแแแแ แแญแแ แแแแแ แงแแแแ แแแแกแขแแ แแ, แจแแชแแแแแ แฏแแฃแคแ แงแแแแ
แแแแแ แฌแแแแแแ แฃแคแ แ แจแแ แก - แแแแแ แแชแแแแ 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