ืืื ืืื
ืืฉ ืื ื ืืื ืืฉืืืืืช ืขื ื ืขื ืืกืคืจ ืจื ืฉื ืืืื ืืช ืืืจืืืืืืืช ืืื ืืื. ืื ืื ื ืืืจืืื ืืช ืื ืืขืกืง ืืื ืืืฆื ืจ. ืืื ืืฉืืื ืืฉ ืื ื ืืืฉื ืืืกืืจ ืืื, ื ืืงืืช ืืื ื ืชืืื ืช ืืฆื ืืืืคืฆืช ืืืืืืืืช ืืื ืืืืื ืืช ืืืืืจืืืืืืืช ืืชืื ืืืฉืืื.
ืกืืืื ืื ืืื ื ืืืคืฉืจืช ืื ื ืืืฉืชืืฉ ื-gitlab-runners ืืืืคื ืจืืื, ืืืืืื ืฉืืจืื ืืขืืืช ืืชืขืืจืจืืช ืืืฉืจ ืืืคืืขืื ืจืฆืื ืจืฉืืืื ืจืืื ืืืื, ืื ืฉืืจื ืื ื ืืืฆืื ืคืชืจืื ืขืืงืฃ ืืืืชืื ืืช ืืืืืจ/ืืืืจืื ืืื.
ืื ืื ืจืื ืื ืืฉืืื ืืืืื ืืืืชืจ, ืืื ืืคืชืจืื ืืื ื ืจืื ื ืื ืืคืฉืื ืืื ืืืคืฉืจ.
ืืืืจืื, ืจืื ืืชืื.
ืืืืืืช ื ืืจืฉืืช ืืืืื ื ืืจืืฉืืช:
- ืคึผึดืืชืึนื
- ืกืืืื
- ืงืืืฅ ืขื ืืงืฉื ssh
ืืขืืงืจืื ืืืืื ืฉื ืืืืขืช ืืฉืืื ืืืืืืืืช ืฉื ืืืื ืืื ืืืืื ืืช ืืืืจืืืืืืืช ืืื ืฉืืชื ืฆืจืื ืืืื ื ืฉืขืืื ืชืืชืงื Ansible. ืืืืืฉื ืืื, ansible ืืฉืื ืคืงืืืืช git pull ืืชืคืขืื ืืืืฉ ืืช ืืฉืืจืืช ืฉืขืืืื. ืืืืจืืช ืืื, ืืฆืจื ื ืืืื ื ืืืจืืืืืืช ื ืคืจืืช ืืืืฅ ืืืฉืืืืืช ืืืชืงื ื ืขืืื:
- ืคึผึดืืชืึนื
- ansible
- gitlab-ranner
ืืืขืืืช ืืจืืื ืืืช - ืขืืื ืืจืฉืื ืืช gitlab-runner, ืืืฆืืจ ssh-keygen, ืืืขืืืช ืืช ืืคืชื ื-ssh ืืฆืืืืจื ืฉื ืืืืฉื ืืื .ssh/authorized_keys
ืืืืื ื ืืจืืฉืืช, ืคืชื ืืช ืืฆืืื 22 ืืืคืฉืจืืช ืืืืื ื ืืจืืฉืืช.
ืขืืฉืื ืืื ื ืืืืจ ืืช ansible
ืืื ืืืืจื ืฉืื ื ืืื ืืืคืื ืืช ืื ืื ืฉืืคืฉืจ. ืืงืืืฅ /etc/ansible/ansible.cfg
ื ืืื ืืช ืืืขืจืืช ืืฉืืจื host_key_checking = False
ืื ืฉืื ืกืืื ืื ืืืงืฉ ืืืฉืืจ ืฉื ืืืื ืืช ืืืฉืืช.
ืืืืจ ืืื, ืืชื ืฆืจืื ืืืฆืืจ ืืืืืืืืช ืงืืืฅ ืืืื ืขืืืจ ansible, ืืฉื ืืื ืืืงื ืืช ื-IP ืฉื ืืืืื ืืช ืฉืืื ืืชื ืฆืจืื ืืขืฉืืช git pull.
ืื ืื ื ืืืืฆืจืื ืืช ืืงืืืฅ ืืื ืืืืฆืขืืช ื-API ืฉื Hetzner, ืืชื ืืืื ืืงืืช ืืช ืจืฉืืืช ืืืืจืืื ืืืกื ืื ืชืื ืื ืฉื 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 - ืชืืื ืืื ืกืืื ืืืฉืชืืฉ ืืืืืื ืืืขืืคืช
- -ื ืืื ืืืืขืื. ื ืืชื ืืืืื ืืื ืื ืคืงืืื
- ืงืืืฆื - ืฉื ืืืฉืืื ืฉืื. ืื ืืชื ืฆืจืื ืืขืฉืืช ืืืช ืืื ืืืฉืืืืืช, ืฉื ื ืงืืืฆื ืืืืื
ืืืื ื ืื ืจืืืง ืืืชืจ - ืืืื ื ื ืกื ืืขืฉืืช 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 ืืคืจืืืงืืื ืืืจืื, ืืชื ืจืง ืฆืจืื ืืฉื ืืช ืืช ืฉื ืืฉืืจืืช ืืืคืขืื ืืืืฉ ืืืช ืฉื ืืืฉืืื ืขืืื ืืืืฆืขื ืืคืงืืืืช ืืืคืฉืจืืืช.
ืืงืืจ: www.habr.com