เดถเตเดญเดฆเดฟเดจเด
เดเดฐเตเดจเตเดจเดฟเดฒเตเด เดงเดพเดฐเดพเดณเด เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เดเตเดฒเตเดกเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเตพ เดจเดฎเตเดเตเดเตเดฃเตเดเต. เดเดเตเดเตพ เด เดฎเตเดดเตเดตเตป เดฌเดฟเดธเดฟเดจเดธเตเดธเตเด เดนเตเดฑเตเดฑเตโเดธเตโเดจเดฑเดฟเตฝ เดนเตเดธเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเต. เดเดฐเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเด เดจเดฎเตเดเตเดเต เดเดฐเต เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเตเดทเตเตป เดเดฃเตเดเต, เด เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เดเดฐเต เดธเตเดจเดพเดชเตเดชเตเดทเตเดเตเดเต เดเดเตเดคเตเดคเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต เดเดฒเตเดฒเดพ เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเดฟเดฒเตเดเตเดเตเด เดธเตเดตเดฏเดฎเตเดต เดตเดฟเดคเดฐเดฃเด เดเตเดฏเตเดฏเตเดจเตเดจเต.
เด เดธเตเดเตเด เดเดเตเดเดณเต เดธเดพเดงเดพเดฐเดฃเดเดคเดฟเดฏเดฟเตฝ gitlab-runners เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เด เดจเตเดตเดฆเดฟเดเตเดเตเดจเตเดจเดฟเดฒเตเดฒ, เดเดพเดฐเดฃเด เดเดฐเต เดชเตเดฒเตเดฏเตเดณเตเดณ เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดค เดจเดฟเดฐเดตเดงเดฟ เดฑเดฃเตเดฃเตผเดฎเดพเตผ เดชเตเดฐเดคเตเดฏเดเตเดทเดชเตเดชเตเดเตเดฎเตเดชเตเตพ เดงเดพเดฐเดพเดณเด เดชเตเดฐเดถเตเดจเดเตเดเตพ เดเดฃเตเดเดพเดเตเดจเตเดจเต, เดเดคเต เดเดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเดพเตผเดเตเดเด เดเดฃเตเดเตเดคเตเดคเดพเดจเตเด เด เดฒเตเดเดจเด/เดฎเดพเดจเตเดตเตฝ เดเดดเตเดคเดพเดจเตเด เดเดเตเดเดณเต เดชเตเดฐเตเดฐเดฟเดชเตเดชเดฟเดเตเดเต.
เดเดคเต เดเดฐเตเดชเดเตเดทเต เดฎเดฟเดเดเตเด เดชเดฐเดฟเดถเตเดฒเดจเดฎเดฒเตเดฒ, เดชเดเตเดทเต เด เดชเดฐเดฟเดนเดพเดฐเด เดเดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดธเตเดเดฐเตเดฏเดชเตเดฐเดฆเดตเตเด เดฒเดณเดฟเดคเดตเตเดฎเดพเดฃเตเดจเตเดจเต เดคเตเดจเตเดจเตเดจเตเดจเต.
เดเตเดฏเตเดเตเดเตเดฑเดฟเดฏเดฒเดฟเดจเดพเดฏเดฟ, เดฆเดฏเดตเดพเดฏเดฟ เดชเตเดเตเด เดเดพเดฃเตเด.
เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเตเดทเตเดจเดฟเตฝ เดเดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเดเตเดเตเดเตเดเตพ:
- เดชเตเดคเตเดคเตบ
- เดเดฟเดฑเตเดฑเดฟเดจเต
- ssh เดเตเดเตพ เดเดณเตเดณ เดซเดฏเตฝ
เดเดฒเตเดฒเดพ เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเดฟเดฒเตเด เดเดเตเดเตเดฎเดพเดฑเตเดฑเดฟเดเต เดเดเตเดเต เดชเตเตพ เดจเดเดชเตเดชเดฟเดฒเดพเดเตเดเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดชเตเดคเตเดตเดพเดฏ เดคเดคเตเดตเด, เดจเดฟเดเตเดเตพเดเตเดเต เดเดฐเต เดฎเตเดทเตเตป เดเดตเดถเตเดฏเดฎเดพเดฃเต, เด เดคเดฟเตฝ เด เตปเดธเดฟเดฌเดฟเตพ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเด. เด เดฎเตเดทเตเดจเดฟเตฝ เดจเดฟเดจเตเดจเต, ansible git pull เดเดฎเดพเตปเดกเตเดเตพ เด เดฏเดฏเตโเดเตเดเตเดเดฏเตเด เด เดชเตโเดกเตเดฑเตเดฑเต เดเตเดฏเตโเดค เดธเตเดตเดจเด เดชเตเดจเดฐเดพเดฐเดเดญเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดฏเตเด. เด เดเดตเดถเตเดฏเดเตเดเตพเดเตเดเดพเดฏเดฟ, เดเดเตเดเตพ เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเตพเดเตเดเต เดชเตเดฑเดคเตเดคเต เดเดฐเต เดชเตเดฐเดคเตเดฏเตเด เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเตป เดธเตเดทเตเดเดฟเดเตเดเตเดเดฏเตเด เด เดคเดฟเตฝ เดเตปเดธเตเดฑเตเดฑเดพเตพ เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดคเต:
- เดชเตเดคเตเดคเตบ
- เดเดคเตเดคเดฐเด
- เดเดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ
เดเตผเดเดจเตเดธเตเดทเดฃเตฝ เดชเตเดฐเดถเตเดจเดเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต - เดจเดฟเดเตเดเตพ gitlab-runner เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต, ssh-keygen เดเดฃเตเดเดพเดเตเดเตเด, เด เดฎเตเดทเตเดจเตเดฑเต เดชเตเดคเต ssh เดเต เด
เดชเตโเดฒเตเดกเต เดเตเดฏเตเดฏเตเด .ssh/authorized_keys
เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเตเดทเตเดจเดฟเตฝ, เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเตเดทเตเดจเดฟเตฝ เด
เตปเดธเดฟเดฌเดฟเดณเดฟเดจเดพเดฏเดฟ เดชเตเตผเดเตเดเต 22 เดคเตเดฑเดเตเดเตเด.
เดเดจเดฟ เดจเดฎเตเดเตเดเต ansible เดเตเตบเดซเดฟเดเตผ เดเตเดฏเตเดฏเดพเด
เดธเดพเดงเตเดฏเดฎเดพเดฏเดคเตเดฒเตเดฒเดพเด เดเดเตเดเตเดฎเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเด เดเดจเตเดจเดคเดพเดฃเต เดเดเตเดเดณเตเดเต เดฒเดเตเดทเตเดฏเด เดเดจเตเดจเดคเดฟเดจเดพเตฝ. เดซเดฏเดฒเดฟเตฝ /etc/ansible/ansible.cfg
เดเดเตเดเตพ เดตเดฐเดฟ เด
เตบเดเดฎเดจเตเดฑเต เดเตเดฏเตเดฏเตเด host_key_checking = False
เด
เดคเดฟเดจเดพเตฝ เดชเตเดคเดฟเดฏ เดฎเตเดทเตเดจเตเดเดณเตเดเต เดธเตเดฅเดฟเดฐเตเดเดฐเดฃเด เด
เตปเดธเดฟเดฌเดฟเตพ เดเดตเดถเตเดฏเดชเตเดชเตเดเตเดจเตเดจเดฟเดฒเตเดฒ.
เด เดเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเดเตเดเตพ เด เตปเดธเดฟเดฌเดฟเดณเดฟเดจเดพเดฏเดฟ เดธเตเดตเดฏเดฎเตเดต เดเดฐเต เดเตปเดตเตเดจเตเดฑเดฑเดฟ เดซเดฏเตฝ เดเดจเดฑเตเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเต, เด เดตเดฟเดเต เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพ เดเดฟเดฑเตเดฑเต เดชเตเตพ เดเตเดฏเตเดฏเตเดฃเตเด เดฎเตเดทเตเดจเตเดเดณเตเดเต เดเดชเดฟ เดเดเตเดเตเดเตเด.
Hetzner's API เดเดชเดฏเตเดเดฟเดเตเดเต เดเดเตเดเตพ เด เดซเดฏเตฝ เดเดจเดฑเตเดฑเตเดฑเตเดเตเดฏเตเดฏเตเดจเตเดจเต, เดจเดฟเดเตเดเดณเตเดเต AWS, Asure, เดกเดพเดฑเตเดฑเดพเดฌเตเดธเดฟเตฝ เดจเดฟเดจเตเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดนเตเดธเตเดฑเตเดฑเตเดเดณเตเดเต เดฒเดฟเดธเตเดฑเตเดฑเต เดเดเตเดเตเดเดพเด (เดจเดฟเดเตเดเดณเตเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจ เดฎเตเดทเตเดจเตเดเตพ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเดคเดฟเดจเต เดจเดฟเดเตเดเตพเดเตเดเต เดเดตเดฟเดเตเดฏเต เดเดฐเต API เดเดฃเตเดเต, เด เดฒเตเดฒเต?).
เดเตปเดตเตเดจเตเดฑเดฑเดฟ เดซเดฏเดฒเดฟเดจเตเดฑเต เดเดเดจ เด เตปเดธเดฟเดฌเดฟเดณเดฟเดจเต เดตเดณเดฐเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต; เดเดคเต เดเดคเตเดชเตเดฒเตเดฏเดพเดฏเดฟเดฐเดฟเดเตเดเดฃเด:
[ะณััะฟะฟะฐ]
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
เด เตปเดธเดฟเดฌเดฟเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเตเดฃเตเดเตเดจเตเดจเตเด IP เดตเดฟเดฒเดพเดธเดเตเดเตพ เดธเตเดตเตเดเดฐเดฟเดเตเดเตเดจเตเดจเดคเตเดฎเดพเดฏเดฟ เดธเตเดนเตเดฆเดชเดฐเดฎเดพเดฃเตเดจเตเดจเตเด เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฃเตเด เดธเดฎเดฏเดฎเดพเดฃเดฟเดคเต:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
เดเดฎเดพเตปเดกเต เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเต เดเตเดฏเตเดค เดฎเตเดทเตเดจเตเดเดณเตเดเต เดนเตเดธเตเดฑเตเดฑเตเดจเดพเดฎเดเตเดเตพ เดเดเตเดเตเดชเตเดเตเดเดฟเตฝ เด
เดเดเตเดเดฟเดฏเดฟเดฐเดฟเดเตเดเดฃเด.
เดตเดพเดเตเดฏเดเดเดจเดฏเตเดเตเดเตเดฑเดฟเดเตเดเต เดเตเดฑเดเตเดเต เดตเดพเดเตเดเตเดเตพ:
- /etc/ansible/./vm_list - เดฎเตเดทเตเดจเตเดเดณเตเดเต เดเดฐเต เดฒเดฟเดธเตเดฑเตเดฑเต เดธเตเดทเตเดเดฟเดเตเดเตเด
- -i - เดเตปเดตเตเดจเตเดฑเดฑเดฟ เดซเดฏเดฒเดฟเดฒเตเดเตเดเตเดณเตเดณ เดธเดฎเตเดชเตเตผเดฃเตเดฃ เดชเดพเดค
- -m - เดทเตเตฝ เดฎเตเดกเตเดฏเตเตพ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เด เตปเดธเดฟเดฌเดฟเดณเดฟเดจเตเดเต เดชเดฑเดฏเตเด
- -เด เดเดจเตเดจเดคเดพเดฃเต เดตเดพเดฆเด. เดเดคเต เดเดฎเดพเตปเดกเตเด เดเดตเดฟเดเต เดจเตฝเดเดพเด
- เดเตเดฐเตเดชเตเดชเต - เดจเดฟเดเตเดเดณเตเดเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต เดชเตเดฐเต. เดเดฒเตเดฒเดพ เดเตเดฒเดธเตเดฑเตเดฑเดฑเตเดเดณเดฟเดฒเตเด เดเดคเต เดเตเดฏเตเดฏเตเดฃเตเดเดคเตเดฃเตเดเตเดเตเดเดฟเตฝ, เดเตเดฐเตเดชเตเดชเต เดเดฒเตเดฒเดพเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเตเด
เดจเดฎเตเดเตเดเต เดฎเตเดจเตเดจเตเดเตเดเต เดชเตเดเดพเด - เดจเดฎเตเดฎเตเดเต เดตเตเตผเดเตเดตเตฝ เดฎเตเดทเตเดจเตเดเดณเดฟเตฝ เดเดฟเดฑเตเดฑเต เดชเตเตพ เดเตเดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
เดเดเตเดเตเดชเตเดเตเดเดฟเตฝ เดจเดฎเตเดฎเตพ เดเดคเดฟเดจเดเด เดเดพเดฒเดฟเดเดฎเดพเดฏเดคเต เดฑเดฟเดชเตเดชเตเดธเดฟเดฑเตเดฑเดฑเดฟเดฏเดฟเตฝ เดจเดฟเดจเตเดจเต เด เตบเดฒเตเดกเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเต เดเดพเดฃเตเดจเตเดจเตเดตเตเดเตเดเดฟเตฝ, เดเดฒเตเดฒเดพเด เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเตเดจเตเดจเต.
เดเดชเตเดชเตเตพ เดเดคเตเดฒเตเดฒเดพเด เดเดฆเตเดฆเตเดถเดฟเดเตเดเดคเต เดเดคเดพเดฃเต
เดเดฟเดฑเตเดฑเตโเดฒเดพเดฌเดฟเดฒเต เดฎเดพเดธเตเดฑเตเดฑเตผ เดฌเตเดฐเดพเดเตเดเดฟเตฝ เดเดฎเตเดฎเดฟเดฑเตเดฑเต เดเตเดฏเตเดฏเตเดฎเตเดชเตเตพ เดธเตเดตเดฏเดฎเตเดต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเตป เดจเดฎเตเดฎเตเดเต เดธเตโเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดชเด เดฟเดชเตเดชเดฟเดเตเดเดพเด
เดเดฆเตเดฏเด, เดจเดฎเตเดเตเดเต เดจเดฎเตเดฎเตเดเต เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเต เดเตเดเตเดคเตฝ เดฎเดจเตเดนเดฐเดฎเดพเดเตเดเดฟ เดเดเตเดธเดฟเดเตเดฏเตเดเตเดเดฌเดฟเตพ เดซเดฏเดฒเดฟเตฝ เดเดเดพเด (เดจเดฎเตเดเตเดเต เด เดคเดฟเดจเต 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