เบกเบทเปเบเบตเปเบเบต
เบเบงเบโเปเบฎเบปเบฒโเบกเบตโเบเบธเปเบกโเบเบฑเบโเบเปเบฒโเบเบงเบโเบซเบเบถเปเบโเบเบตเปโเบกเบตโเบเปเบฒโเบเบงเบโเบเบฐโเบซเบเบฒเบโเปเบซเบเปโเบเบญเบ virtual machines เปเบโเปเบเปโเบฅเบฐโ. เบเบงเบเปเบฎเบปเบฒเปเบเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบขเบนเป Hetzner. เปเบเปเบเปเบฅเบฐเบเบธเปเบกเบเบงเบเปเบฎเบปเบฒเบกเบตเปเบเบทเปเบญเบเปเบกเปเปเบเบเบซเบเบถเปเบ, เบเบฒเบเบเปเบฒเบเปเบเปเบเบทเบเปเบญเบปเบฒเบกเบฒเบเบฒเบเบกเบฑเบเปเบฅเบฐเปเบเบเบขเบฒเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบซเปเบเบฑเบเปเบเบทเปเบญเบเบเบฑเบ virtual เบเบฑเบเบซเบกเบปเบเบเบฒเบเปเบเบเบธเปเบก.
เปเบเบเบเบฒเบเบเบตเปเบเปเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบเป gitlab-runners เบเบฒเบกเบเบปเบเบเบฐเบเบด, เปเบเบทเปเบญเบเบเบฒเบเบเบฑเบเบซเบฒเบซเบผเบฒเบเบขเปเบฒเบเปเบเบตเบเบเบทเปเบเปเบกเบทเปเบญเบเบนเปเปเบฅเปเบเบฅเบปเบเบเบฐเบเบฝเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบเบซเบผเบฒเบ, เปเบเบดเปเบเบเบฐเบเบธเปเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบญเบเบซเบฒเบงเบดเบเบตเปเบเปเปเบเบเบฑเบเบซเบฒเปเบฅเบฐเบเบฝเบเบเบปเบเบเบงเบฒเบก / เบเบนเปเบกเบทเบเบตเป.
เบเบตเปเบญเบฒเบเบเบฐเบเปเปเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเปเบเบตเบเบตเปเบชเบธเบ, เปเบเปเบเบฒเบเปเบเปเปเบเบเบตเปเปเบเบดเปเบเบเบทเบงเปเบฒเบชเบฐเบเบงเบเปเบฅเบฐเบเปเบฒเบเบเบฒเบเปเบเบปเปเบฒเบเบตเปเปเบเบฑเบเปเบเปเบเป.
เบชเปเบฒเบฅเบฑเบ tutorial, เบเบฐเบฅเบธเบเบฒเปเบเบดเปเบ cat.
เบเบธเบเบเบตเปเบเปเบญเบเบเบฒเบเปเบเปเบเบทเปเบญเบเปเบกเปเบเบปเบ:
- python
- เปเบ
- เปเบเบฅเปเบเบตเปเบกเบตเบเบธเปเบก ssh
เบซเบผเบฑเบเบเบฒเบเบเบปเปเบงเปเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบเบถเบเบฅเปเบฒเปเบชเปเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเปเบเบทเปเบญเบเบเบฑเบ virtual เบเบฑเบเบซเบกเบปเบเปเบกเปเบเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเป Ansible เบเบฐเบเบทเบเบเบดเบเบเบฑเปเบ. เบเบฒเบเปเบเบทเปเบญเบเบเบตเป, ansible เบเบฐเบชเบปเปเบเบเปเบฒเบชเบฑเปเบ git pull เปเบฅเบฐ restart เบเบฒเบเบเปเบฅเบดเบเบฒเบเบเบตเปเปเบเปเบฎเบฑเบเบเบฒเบเบเบฑเบเบเบธเบ. เบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเปเบซเบผเบปเปเบฒเบเบตเป, เบเบงเบเปเบฎเบปเบฒเปเบเปเบชเปเบฒเบเปเบเบทเปเบญเบ virtual เปเบเบเบเปเบฒเบเบซเบฒเบเบขเบนเปเบเบญเบ clusters เปเบฅเบฐเบเบดเบเบเบฑเปเบเบกเบฑเบ:
- python
- เบเบญเบเบฎเบฑเบเปเบเป
- gitlab-runner
เบเบฒเบเบเบฑเบเบซเบฒเบญเบปเบเบเบฒเบเบเบฑเบเบเบฑเปเบ - เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบปเบเบเบฐเบเบฝเบ gitlab-runner, เปเบฎเบฑเบ ssh-keygen, เบญเบฑเบเปเบซเบฅเบเบฅเบฐเบซเบฑเบ ssh เบชเบฒเบเบฒเบฅเบฐเบเบฐเบเบญเบเปเบเบทเปเบญเบเบเบตเปเปเบ. .ssh/authorized_keys
เปเบเปเบเบทเปเบญเบเปเบกเปเปเบเบ, เปเบเบตเบเบเบญเบ 22 เบชเปเบฒเบฅเบฑเบ ansible เปเบเปเบเบทเปเบญเบเปเบกเปเบเบปเบ.
เบเบญเบเบเบตเปเปเบซเปเปเบฎเบปเบฒเบเบฑเปเบเบเปเบฒ ansible
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเปเบเบปเปเบฒเบซเบกเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบกเปเบเปเบเบทเปเบญเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเปเบเบฑเบเปเบเปเบเป. เปเบเปเบเบฅเป /etc/ansible/ansible.cfg
เบเบงเบโเปเบฎเบปเบฒโเบเบฐ uncomment เปเบชเบฑเปเบโ host_key_checking = False
เบเบฑเปเบเบเบฑเปเบ ansible เบเปเปเปเบเปเบฎเปเบญเบเบเปเปเบซเปเบกเบตเบเบฒเบเบขเบทเบเบขเบฑเบเปเบเบทเปเบญเบเบเบฑเบเปเบซเบกเป.
เบเปเปเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเปเบเบฅเปเบเบปเบเบเบฑเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบชเปเบฒเบฅเบฑเบ ansible, เบเบฒเบเบเปเบญเบเบเบตเปเบกเบฑเบเบเบฐเปเบญเบปเบฒ ip เบเบญเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบ git เบเบถเบ.
เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเปเบเบฅเปเบเบตเปเปเบเบเปเบเป 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
เบเบปเบเปเบเปเบฎเบฑเบเบเบงเบเบเบฐเบกเบตเบเบทเปเปเบฎเบเบเบญเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเบเปเบฒเบชเบฑเปเบเบเบทเบเบเบฐเบเบดเบเบฑเบ.
เบชเบญเบเบชเบฒเบกเบเปเบฒเบเปเบฝเบงเบเบฑเบ syntax:
- /etc/ansible/./vm_list โ เบชเปเบฒเบเบฅเบฒเบเบเบทเปเปเบเบทเปเบญเบ
- -i - เปเบชเบฑเปเบเบเบฒเบเบขเปเบฒเบเปเบเปเบเบดเบเปเบเบซเบฒเปเบเบฅเปเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ
- -m - เบเบญเบ ansible เปเบซเปเปเบเปเปเบกเบเบนเบ shell
- -a เปเบกเปเบเบเบฒเบเปเบเปเบเบฝเบ. เบชเบฒเบกเบฒเบเปเบชเปเบเปเบฒเบชเบฑเปเบเปเบเป เบเบตเปเบเบตเป
- เบเบธเปเบก โ เบเบทเปโเบเบญเบโเบเบธเปเบกโเบเบญเบโเบเปเบฒเบโ. เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเปเบเบเบธเบเบเบธเปเบก, เบเปเบฝเบเบเบธเปเบกเปเบเบฑเบเบเบฑเบเบซเบกเบปเบ
เบชเบทเบเบเปเปเปเบ - เบฅเบญเบเปเบฎเบฑเบ git pull เปเบเปเบเบทเปเบญเบ virtual เบเบญเบเบเบงเบเปเบฎเบปเบฒ:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
เบเปเบฒเบซเบฒเบเบงเปเบฒเบขเบนเปเปเบเบเบปเบเบเบฐเบฅเบดเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบซเบฑเบเปเบฅเปเบงเปเบเบดเบเบงเบฑเบเบเบตเบซเบผเบท unloading เบเบฒเบ repository, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเปเบฎเบฑเบเบงเบฝเบ.
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบกเบฑเบเบซเบกเบฒเบเปเบเบดเบเบเบฑเบเบซเบกเบปเบ
เปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเบญเบ script เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบซเปเปเบฎเบฑเบเบงเบฝเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเปเบเปเบงเบฅเบฒเบเบตเป committing เบเบฑเบเบชเบฒเบเบฒเบเบปเปเบเบชเบฐเบเบฑเบเปเบ gitlab
เบเปเบฒเบญเบดเบ, เปเบซเปเบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบซเป script เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฒเบกเบเบถเปเบเปเบฅเบฐเปเบชเปเปเบเปเบเบฅเปเบเบฐเบเบดเบเบฑเบเปเบเป (เปเบซเปเปเบญเบตเปเบเบงเปเบฒ 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