Tsiku labwino
Tili ndi magulu angapo amtambo okhala ndi makina ambiri pafupifupi aliyense. Timachitira bizinesi yonseyi ku Hetzner. Pagulu lililonse timakhala ndi makina amodzi, chithunzithunzi chimatengedwa kuchokera pamenepo ndikugawidwa pamakina onse omwe ali mkati mwa tsango.
Chiwembuchi sichilola kuti tigwiritse ntchito gitlab-runners nthawi zonse, chifukwa mavuto ambiri amadza pamene othamanga ambiri ofanana omwe amalembetsa amawonekera, zomwe zinatipangitsa ife kupeza njira yogwirira ntchito ndikulemba nkhaniyi / bukhuli.
Izi mwina sizochita bwino, koma njira iyi idawoneka ngati yabwino komanso yosavuta momwe ndingathere.
Kwa maphunziro, chonde onani mphaka.
Zofunikira pamakina apamwamba:
- python
- Pitani
- fayilo yokhala ndi makiyi a ssh
Mfundo yayikulu yogwiritsira ntchito kukoka kwamatumbo pamakina onse ndikuti mumafunika makina omwe Ansible adzayikirapo. Kuchokera pamakina awa, ansible amatumiza git kukoka malamulo ndikuyambitsanso ntchito yomwe yasinthidwa. Pazifukwa izi, tidapanga makina apadera kunja kwa masango ndikuyikapo:
- python
- zovuta
- gitlab-wothamanga
Kuchokera pazabungwe - muyenera kulembetsa gitlab-runner, kupanga ssh-keygen, kwezani kiyi yapagulu ya ssh yamakina awa kuti .ssh/authorized_keys
pa makina ambuye, tsegulani doko 22 la ansible pamakina apamwamba.
Tsopano tiyeni tikonze ansible
Popeza cholinga chathu ndi automate zonse zomwe tingathe. Mu fayilo /etc/ansible/ansible.cfg
tidzachotsa mzerewu host_key_checking = False
kotero kuti ansible safunsa kutsimikizira kwa makina atsopano.
Chotsatira, muyenera kupanga fayilo yachidziwitso cha ansible, kuchokera pomwe idzatengera ip yamakina omwe muyenera kuchita git kukoka.
Timapanga fayiloyi pogwiritsa ntchito Hetzner's API, mukhoza kutenga mndandanda wa makamu kuchokera ku AWS, Asure, database yanu (muli ndi API kwinakwake kuti muwonetse makina anu othamanga, chabwino?).
Mapangidwe a fayilo yazinthu ndizofunikira kwambiri kwa Ansible; ziyenera kuwoneka motere:
[Π³ΡΡΠΏΠΏΠ°]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
[Π³ΡΡΠΏΠΏΠ°2]
ip-Π°Π΄ΡΠ΅Ρ
ip-Π°Π΄ΡΠ΅Ρ
Kuti mupange fayilo yotere, tipanga script yosavuta (tiyeni tiyitchule 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
Yakwana nthawi yoti muwone ngati Ansible ikugwira ntchito komanso kuti ndi wochezeka polandila ma adilesi a IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Zomwe zimatuluka ziyenera kukhala ndi mayina a makina omwe lamulolo linaperekedwa.
Mawu ochepa okhudza syntax:
- /etc/ansible/./vm_list - pangani mndandanda wamakina
- -i - njira yeniyeni yopita ku fayilo yazinthu
- -m - auzeni zomveka kugwiritsa ntchito gawo la chipolopolo
- -a ndiye mkangano. Lamulo lirilonse likhoza kulowetsedwa pano
- gulu - dzina la gulu lanu. Ngati mukufuna kuchita izi pamagulu onse, sinthani gulu kukhala onse
Tiyeni tipitirire - tiyeni tiyese kupanga git kukoka pamakina athu enieni:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Ngati muzotulutsa tikuwona kale kapena kutsitsa kuchokera kumalo osungira, ndiye kuti zonse zikuyenda.
Tsopano izi ndi zomwe zidalingidwira
Tiyeni tiphunzitse zolemba zathu kuti ziziyenda zokha podzipereka ku master nthambi mu gitlab
Choyamba, tiyeni tipange zolemba zathu zokongola kwambiri ndikuziyika mu fayilo yotheka (tiyeni tiyitchule exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Tiyeni tipite ku gitlab yathu ndikupanga fayilo mu polojekitiyi .gitlab-ci.yml
Timayika zotsatirazi mkati:
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
Zonse zakonzeka. Tsopano -
- panga lonjezo
- Ndine wokondwa kuti zonse zikuyenda
Mukasamutsa .yml kumapulojekiti ena, mumangofunika kusintha dzina la utumiki kuti muyambitsenso ndi dzina la gulu lomwe malamulo oyenerera adzaperekedwa.
Source: www.habr.com