Zuva rakanaka
Isu tine akati wandei makore masumbu ane nhamba huru yemashini chaiwo mune imwe neimwe. Isu tinotora bhizinesi iri rese paHetzner. Muchikwata chega chega tine muchina mumwe chete, snapshot inotorwa kubva mairi uye yogovaniswa otomatiki kumashini ese ari mukati meboka.
Ichi chirongwa hachitibvumidze kushandisa gitlab-runners zvakajairika, sezvo matambudziko mazhinji anomuka apo vazhinji vakafanana vakanyoreswa vanomhanya vanoonekwa, izvo zvakaita kuti isu tiwane workaround uye tinyore chinyorwa ichi / bhuku.
Iyi ingangove isiri yakanakisa maitiro, asi iyi mhinduro yairatidzika seyakanakira uye iri nyore sezvinobvira.
Pakudzidzisa, ndapota ona katsi.
Inodiwa mapakeji pamushini mukuru:
- python
- Git
- faira ine ssh makiyi
Iyo yakajairika misimboti yekushandisa otomatiki gut kudhonza pamashini ese chaiwo ndeyekuti iwe unoda muchina unozoiswa Ansible. Kubva muchina uyu, ansible anotumira git dhonza mirairo uye kutangazve sevhisi yakagadziridzwa. Nezvinangwa izvi, isu takagadzira yakasarudzika muchina kunze kwemasumbu uye yakaiswa pairi:
- python
- anable
- gitlab-runner
Kubva kunyaya dzesangano - iwe unofanirwa kunyoresa gitlab-runner, kugadzira ssh-keygen, kurodha yeruzhinji ssh kiyi yemuchina uyu .ssh/authorized_keys
pamushini mukuru, vhura port 22 yeanobatika pamushini mukuru.
Zvino ngatigadzirisei zvinonzwisisika
Sezvo chinangwa chedu chiri kuita otomatiki zvese zvinogoneka. Mufaira /etc/ansible/ansible.cfg
isu tichasunungura mutsara host_key_checking = False
kuitira kuti zvinonzwisisika hazvibvunze kusimbiswa kwemichina mitsva.
Tevere, iwe unofanirwa kugadzira otomatiki faira rekuisa kune inobatika, kubva kwainozotora iyo ip yemichina yaunoda kuita git kudhonza.
Isu tinogadzira iyi faira tichishandisa Hetzner's API, unogona kutora runyorwa rwemauto kubva kuAWS yako, Asure, dhatabhesi (iwe une API kumwe kuratidza yako inomhanya michina, handiti?).
Mamiriro eiyo inventory faira yakakosha kune Ansible; inofanirwa kutaridzika seizvi:
[Π³ΡΡΠΏΠΏΠ°]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
[Π³ΡΡΠΏΠΏΠ°2]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
Kuti tigadzire faira rakadaro, tichaita script iri nyore (ngatidaidzei 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
Yave nguva yekutarisa kuti Ansible inoshanda uye ine hushamwari nekugamuchira IP kero:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Izvo zvinobuda zvinofanirwa kunge zvine mazita ekugamuchira emichina yakatemerwa murairo.
Mazwi mashoma nezve syntax:
- /etc/ansible/./vm_list - gadzira runyorwa rwemichina
- -i - nzira yakakwana kune iyo inventory faira
- -m - udza zvinonzwisisika kushandisa shell module
- -a ndiyo nharo. Chero murairo unogona kuiswa pano
- boka - zita rechikwata chako. Kana iwe uchida kuita izvi pamasumbu ese, chinja boka kune ese
Ngatiendei mberi - ngatiedzei kuita git kudhonza pamakina edu chaiwo:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Kana mune zvakabuda tinoona zvatove zvazvino kana kuburitsa kubva mudura, saka zvese zviri kushanda.
Zvino izvi ndizvo zvazvairehwa
Ngatidzidzisei script yedu kuti iite otomatiki kana tichizvipira kune master bazi mugitlab
Kutanga, ngatiite kuti script yedu iwedzere kunaka uye tiise mufaira rinogoneka (ngatidaidze exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Handei kune yedu gitlab uye tigadzire faira mupurojekiti .gitlab-ci.yml
Tinoisa zvinotevera mukati:
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
Zvese zvagadzirira. Zvino -
- ita chitsidzo
- Ndinofara kuti zvese zviri kushanda
Paunenge uchiendesa .yml kune mamwe mapurojekiti, unongoda kushandura zita resevhisi kuti utangezve uye zita reboka iro mirairo inonzwisisika ichaitwa.
Source: www.habr.com