Ojo dada
A ni ọpọlọpọ awọn iṣupọ awọsanma pẹlu nọmba nla ti awọn ẹrọ foju ni ọkọọkan. A gbalejo gbogbo iṣowo yii ni Hetzner. Ninu iṣupọ kọọkan a ni ẹrọ titunto si kan, a ya aworan kan lati inu rẹ ati pinpin laifọwọyi si gbogbo awọn ẹrọ foju inu iṣupọ naa.
Eto yii ko gba wa laaye lati lo awọn asare-gitlab ni deede, nitori ọpọlọpọ awọn iṣoro dide nigbati ọpọlọpọ awọn aṣaja ti o forukọsilẹ ti o jọmọ han, eyiti o jẹ ki a wa iṣẹ-ṣiṣe ki o kọ nkan / Afowoyi yii.
Eyi kii ṣe iṣe ti o dara julọ, ṣugbọn ojutu yii dabi irọrun ati rọrun bi o ti ṣee.
Fun ikẹkọ, jọwọ wo ologbo.
Awọn idii ti a beere lori ẹrọ titunto si:
- Python
- Git
- faili pẹlu awọn bọtini ssh
Ilana gbogbogbo ti imuse ifun ikun laifọwọyi lori gbogbo awọn ẹrọ foju ni pe o nilo ẹrọ kan lori eyiti Ansible yoo fi sii. Lati ẹrọ yii, o ṣeeṣe yoo firanṣẹ awọn aṣẹ fa git ati tun bẹrẹ iṣẹ ti o ti ni imudojuiwọn. Fun awọn idi wọnyi, a ṣẹda ẹrọ foju ọtọtọ ni ita awọn iṣupọ ati fi sori ẹrọ lori rẹ:
- Python
- dahun
- gitlab-olusare
Lati awọn ọran eto - o nilo lati forukọsilẹ gitlab-runner, ṣe ssh-keygen, gbejade bọtini ssh ti gbogbo eniyan ti ẹrọ yii si .ssh/authorized_keys
lori ẹrọ titunto si, ṣiṣi ibudo 22 fun ansible lori ẹrọ titunto si.
Bayi jẹ ki ká tunto ansible
Niwon ibi-afẹde wa ni lati ṣe adaṣe ohun gbogbo ti o ṣeeṣe. Ninu faili /etc/ansible/ansible.cfg
a yoo uncomment ila host_key_checking = False
ki ansible ko beere fun ìmúdájú ti titun ero.
Nigbamii ti, o nilo lati ṣe ina faili ọja-ọja laifọwọyi fun aibikita, lati ibiti yoo gba ip ti awọn ẹrọ lori eyiti o nilo lati fa git fa.
A ṣe agbekalẹ faili yii ni lilo Hetzner's API, ṣugbọn o le mu atokọ ti awọn ọmọ-ogun lati AWS rẹ, Asure, database (o ni API kan ni ibikan lati ṣafihan awọn ẹrọ ṣiṣe rẹ, otun?).
Eto ti faili akojo oja ṣe pataki pupọ fun Ansible; o yẹ ki o dabi eyi:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
Lati ṣe iru faili bẹ, a yoo ṣe iwe afọwọkọ ti o rọrun (jẹ ki a pe 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
O to akoko lati ṣayẹwo pe Ansible ṣiṣẹ ati pe o jẹ ọrẹ pẹlu gbigba awọn adirẹsi IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Ijade yẹ ki o ni awọn orukọ olupin ti awọn ẹrọ lori eyiti a ti mu aṣẹ naa ṣiṣẹ.
Awọn ọrọ diẹ nipa sintasi:
- /etc/ansible/./vm_list - ṣe agbejade atokọ ti awọn ẹrọ
- -i - ọna pipe si faili akojo oja
- -m - so fun ansible lati lo ikarahun module
- -a ni ariyanjiyan. Eyikeyi aṣẹ le wa ni titẹ si ibi
- ẹgbẹ - orukọ iṣupọ rẹ. Ti o ba nilo lati ṣe eyi lori gbogbo awọn iṣupọ, yi ẹgbẹ pada si gbogbo
Jẹ ki a lọ siwaju - jẹ ki a gbiyanju lati ṣe git fa lori awọn ẹrọ foju wa:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Ti o ba wa ninu iṣelọpọ ti a rii tẹlẹ lati ọjọ tabi ṣiṣi silẹ lati ibi ipamọ, lẹhinna ohun gbogbo n ṣiṣẹ.
Bayi eyi ni ohun ti gbogbo rẹ tumọ si fun
Jẹ ki a kọ iwe afọwọkọ wa lati ṣiṣẹ laifọwọyi nigbati o ba ṣe si ẹka titunto si ni gitlab
Ni akọkọ, jẹ ki a jẹ ki iwe afọwọkọ wa lẹwa diẹ sii ki a fi sii sinu faili ti o le ṣiṣẹ (jẹ ki a pe ni exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Jẹ ki a lọ si gitlab wa ki o ṣẹda faili kan ninu iṣẹ naa .gitlab-ci.yml
A fi nkan wọnyi sinu:
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
Gbogbo rẹ ti šetan. Bayi -
- ṣe adehun
- Inu mi dun pe ohun gbogbo n ṣiṣẹ
Nigbati o ba n gbe .yml lọ si awọn iṣẹ akanṣe miiran, o kan nilo lati yi orukọ iṣẹ naa pada lati tun bẹrẹ ati orukọ iṣupọ lori eyiti awọn aṣẹ ti o ṣeeṣe yoo jẹ ṣiṣe.
orisun: www.habr.com