Manuia le aso
E iai a matou fa'aputuga ao ma se numera tele o masini mata'utia i totonu ta'itasi. Matou te talimalo i lenei pisinisi atoa i Hetzner. I fuifui ta'itasi e tasi le matou masini mata'i, e ave mai ai se ata ma fa'asoa fa'apitoa i masini komepiuta uma i totonu o le fuifui.
O lenei polokalame e le faʻatagaina i matou e faʻaoga masani gitlab-runners, talu ai e tele faʻafitauli e tulaʻi mai pe a aliali mai le tele o tagata taʻavale resitala tutusa, lea na mafua ai ona matou suʻe se fofo ma tusi lenei tusiga / tusi lesona.
Atonu e le o se faiga sili ona lelei, ae o lenei fofo na foliga mai e faigofie ma faigofie pe a mafai.
Mo le a'oa'oga, fa'amolemole va'ai pusi.
O afifi mana'omia ile masini matai:
- python
- git
- faila ma ssh ki
O le taʻiala lautele o le faʻaogaina o le toso otometi i luga o masini komepiuta uma e te manaʻomia se masini e faʻapipiʻi ai Ansible. Mai lenei masini, o le a tuʻuina atu e ansible le git pull commands ma toe amata le auaunaga ua faʻafouina. Mo nei faʻamoemoega, na matou fatuina se masini faʻapitoa i fafo atu o fuifui ma faʻapipiʻi i luga:
- python
- mafai
- gitlab-runner
Mai faʻalapotopotoga faʻalapotopotoga - e tatau ona e lesitala gitlab-runner, fai ssh-keygen, faʻapipiʻi le lautele ssh ki o lenei masini i .ssh/authorized_keys
i luga ole masini matai, tatala le taulaga 22 mo ansible ile masini matai.
Se'i o tatou configure le ansible
Talu ai o la matou sini o le faʻautometi mea uma e mafai. I le faila /etc/ansible/ansible.cfg
o le a matou tatalaina le laina host_key_checking = False
ina ia le fesili le ansible mo se faʻamaoniga o masini fou.
O le isi, e tatau ona e otometi ona fatuina se faila faila mo le ansible, mai le mea o le a ave ai le ip o masini e te manaʻomia e fai ai git pull.
Matou te gaosia lenei faila e faʻaaoga ai le Hetzner's API, e mafai ona e ave le lisi o 'au mai lau AWS, Asure, database (e iai sau API i se mea e faʻaalia ai au masini taʻavale, saʻo?).
O le fausaga o le faila o faamaumauga e taua tele mo Ansible; e tatau ona foliga faapenei:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
Ina ia faia se faila faapena, matou te faia se tusitusiga faigofie (tatou taʻua 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
Ua oʻo i le taimi e siaki ai o loʻo galue Ansible ma e faauo i le mauaina o tuatusi IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
O le gaioiga e tatau ona aofia ai igoa talimalo o masini na faʻatino ai le poloaiga.
O nai upu e uiga i le syntax:
- /etc/ansible/./vm_list - fai se lisi o masini
- -i - ala atoatoa i le faila faila
- -m - taʻu atu e faʻaaoga le atigi module
- -a o le finauga. So'o se fa'atonuga e mafai ona tu'uina iinei
- vaega - le igoa o lau fuifui. Afai e te manaʻomia le faia o lenei mea i fuifui uma, sui vaega i tagata uma
Sei o tatou agai i luma - tatou taumafai e fai git pull i luga oa tatou masini komepiuta:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Afai i totonu o le gaosiga ua tatou vaʻaia ua uma ona faʻafou pe faʻaulu mai le fale teu oloa, o loʻo galue mea uma.
O lea la o le mea tonu lea na fa'atatau i ai
Sei o tatou aʻoaʻo a tatou tusitusiga e tamoʻe otometi pe a tuʻuina atu i le master branch i gitlab
Muamua, seʻi o tatou faʻalelei atili a tatou tusitusiga ma tuʻu i totonu o se faila faila (tatou taʻua exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Sei o tatou gitlab ma fai se faila i le poloketi .gitlab-ci.yml
Matou te tuʻuina mea nei i totonu:
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
Ua sauni mea uma. Lenei-
- fai se tautinoga
- Ou te fiafia ua lelei mea uma
A faʻafeiloaʻi le .yml i isi poloketi, e tatau ona e suia le igoa o le tautua e toe amata ma le igoa o le fuifui lea o le a faʻataunuʻuina ai poloaiga ansible.
puna: www.habr.com