Lumela
Re na le lihlopha tse 'maloa tsa maru tse nang le palo e kholo ea mechine ea sebele ho e' ngoe le e 'ngoe. Re amohela khoebo ena kaofela ho Hetzner. Sehlopheng se seng le se seng re na le mochini o le mong oa master, senepe se nkuoa ho sona ebe se abeloa mechini eohle e teng ka har'a sehlopha.
Morero ona ha o re lumelle ho sebelisa li-gitlab-runners ka tloaelo, kaha mathata a mangata a hlaha ha limathi tse ngata tse ngolisitsoeng tse tšoanang li hlaha, e leng se ileng sa re susumelletsa ho fumana mosebetsi le ho ngola sehlooho sena / bukana.
Mohlomong sena ha se mokhoa o motle ka ho fetisisa, empa tharollo ena e ne e bonahala e le bonolo ebile e le bonolo ka hohle kamoo ho ka khonehang.
Bakeng sa thupelo, ka kopo bona katse.
Liphutheloana tse hlokahalang mochining o moholo:
- python
- git
- faele e nang le linotlolo tsa ssh
Molao-motheo o akaretsang oa ho kenya ts'ebetso ea "automatic gut pull" ho mechini eohle ea sebele ke hore o hloka mochini oo Ansible o tla kengoa ho oona. Ho tsoa mochining ona, ansible e tla romella litaelo tsa git le ho qala ts'ebeletso e nchafalitsoeng. Bakeng sa merero ena, re thehile mochini o ikhethileng o kantle ho lihlopha mme re kentse ho ona:
- python
- e phetoloang
- gitlab-semathi
Ho tsoa litabeng tsa mokhatlo - o hloka ho ngolisa gitlab-runner, etsa ssh-keygen, kenya senotlolo sa sechaba sa ssh sa mochine ona ho .ssh/authorized_keys
mochining o moholo, koung e bulehileng ea 22 bakeng sa ansible mochining o moholo.
Joale a re ke re configure ansible
Kaha sepheo sa rona ke ho iketsetsa ntho e 'ngoe le e' ngoe e ka khonehang. Ka faele /etc/ansible/ansible.cfg
re tla hlakola mohala host_key_checking = False
e le hore ansible e se ke ea kopa netefatso ea mechini e mecha.
Ka mor'a moo, o hloka ho iketsetsa faele ea inventory bakeng sa ansible, ho tloha moo e tla nka ip ea mechini eo u lokelang ho e etsa git pull.
Re hlahisa faele ena re sebelisa Hetzner's API, o ka nka lethathamo la mabotho ho tloha AWS, Asure, database ea hau (o na le API kae-kae ho bonts'a mechine ea hau e sebetsang, ho joalo?).
Sebopeho sa faele ea thepa se bohlokoa haholo bakeng sa Ansible; e lokela ho shebahala tjena:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
Ho hlahisa faele e joalo, re tla etsa script e bonolo (ha re e bitse 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
Ke nako ea ho lekola hore na Ansible ea sebetsa le hore e na le botsoalle ho amohela liaterese tsa IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Sephetho se tlameha ho ba le mabitso a moamoheli a mechini eo taelo e entsoeng ho eona.
Mantsoe a seng makae ka syntax:
- /etc/ansible/./vm_list - hlahisa lethathamo la mechini
- -i - tsela e felletseng ea faele ea inventory
- -m - bolella ho utloahalang ho sebelisa mojule oa khetla
- -a ke khang. Taelo efe kapa efe e ka kenngoa mona
- sehlopha - lebitso la sehlopha sa hau. Haeba o hloka ho etsa sena ho lihlopha tsohle, fetola sehlopha ho bohle
Ha re ee hole - ha re lekeng ho etsa git pull ka mechini ea rona ea sebele:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Haeba ho tlhahiso eo re e bonang e se e ntse e le teng kapa e laolloa ho tloha polokelong, joale ntho e 'ngoe le e' ngoe e sebetsa.
Joale sena ke sona seo e neng e se reretsoe
Ha re ruteng sengoloa sa rona ho sebetsa ka bohona ha re itlama ho lekala la master ho gitlab
Taba ea mantlha, ha re etseng hore sengoloa sa rona se be setle le ho feta ebe re se kenya faeleng e ka phethisoang (ha re e bitse exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Ha re ee ho gitlab ea rona mme re thehe faele morerong .gitlab-ci.yml
Re kenya tse latelang ka hare:
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
Tsohle di lokile. Joale -
- etsa boitlamo
- Ke thabela hore tsohle lia sebetsa
Ha o fetisetsa .yml ho merero e meng, o hloka feela ho fetola lebitso la ts'ebeletso ho qala hape le lebitso la sehlopha seo litaelo tse utloahalang li tla etsoa.
Source: www.habr.com