Maalin wacan
Waxaan haynaa dhowr rucubood oo daruuro ah oo mid walba ku jira tiro badan oo mashiinno farshaxan ah. Ganacsigan oo dhan waxaanu ku martigelinaa Hetzner. Kutlad kasta waxaan ku leenahay hal mashiin, sawir sawir ah ayaa laga qaadayaa waxaana si toos ah loogu qaybiyaa dhammaan mishiinnada farsamada ee kutlada dhexdeeda.
Nidaamkani ma ogola inaan u isticmaalno gitlab-runners si caadi ah, maadaama dhibaatooyin badan ay soo baxaan marka ay soo baxaan orodyahano badan oo isku mid ah, taas oo nagu kalliftay inaan helno hab-hawleed oo aan qorno maqaalkan / buug-gacmeedka.
Tani waxay u badan tahay inaysan ahayn habka ugu wanaagsan, laakiin xalkani wuxuu u muuqday mid ku habboon oo fudud intii suurtagal ah.
Casharrada, fadlan eeg bisad.
Baakadaha loo baahan yahay ee mashiinka sayidkiisa:
- python
- git
- faylka leh furayaasha ssh
Mabda'a guud ee hirgelinta jiidista tooska ah ee mindhicirka tooska ah ee dhammaan mishiinnada farsamada waa inaad u baahan tahay mashiin kaas oo macquul ah lagu rakibi doono. Mashiinkan, macquul ayaa soo diri doona amarrada jiidista git oo dib u bilaabaya adeegga la cusboonaysiiyay. Ujeeddooyinkan, waxaan u abuurnay mishiin farsamaysan oo gooni ah oo ka baxsan kooxaha oo aan ku rakibnay:
- python
- macquul ah
- gitlab-orodyahan
Laga soo bilaabo arrimaha ururka - waxaad u baahan tahay inaad iska diiwaangeliso gitlab-runner, samee ssh-keygen, soo rar furaha ssh dadweynaha ee mashiinkan .ssh/authorized_keys
mashiinka Master-ka, oo furan dekedda 22 ee loogu talagalay mashiinka mastarka.
Hadda aynu habaynno wax macquul ah
Mar haddii yoolkeenu yahay inaan otomaatig u samayno wax kasta oo suurtagal ah. Faylka ku jira /etc/ansible/ansible.cfg
waanu jabin doonaa khadka host_key_checking = False
si aan macquul ahayn u waydiisan xaqiijinta mashiinada cusub.
Marka xigta, waxaad u baahan tahay inaad si toos ah u soo saarto faylka alaabada ee suurtogalka ah, halkaas oo ay ka qaadan doonto ip ee mashiinnada aad u baahan tahay inaad ku sameyso git jiid.
Waxaan soo saareynaa faylkan anagoo adeegsanayna Hetzner's API, waxaad ka qaadan kartaa liiska martigaliyayaasha AWS kaaga, Asure, database (waxaad leedahay API meel aad ku muujiso mishiinnadaada socda, sax?).
Qaab dhismeedka faylka alaabada ayaa aad muhiim ugu ah Awoodda; waa inuu u ekaado sidan:
[группа]
ip-адрес
ip-адрес
[группа2]
ip-адрес
ip-адрес
Si loo soo saaro faylkan, waxaanu samayn doonaa qoraal fudud (aan wacno 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
Waa waqtigii la hubin lahaa in macquulka ah uu shaqeeyo oo uu saaxiib la yahay helitaanka cinwaannada IP:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group
Wax-soo-saarku waa inuu ka kooban yahay magacyada martida loo yahay ee mashiinnada amarka lagu fuliyay.
Dhowr eray oo ku saabsan syntax:
- /etc/ansible/./vm_list - soo saar liiska mashiinada
- -i - dariiqa saxda ah ee loo maro faylka alaabada
- -m - u sheeg suurtogalka ah in la isticmaalo moduleka qolofka
- -a waa doodda. Amar kasta waa la geli karaa halkan
- kooxda - magaca kooxdaada. Haddii aad u baahan tahay inaad tan ku samayso dhammaan kooxaha, kooxda u beddel dhammaan
Aan sii socono - aan isku dayno inaan sameyno git jiid mashiinadayada farsamada:
/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group
Haddii wax soo saarka aan horay u aragno ilaa taariikhda ama ka soo dejinta kaydka, markaa wax walba waa shaqeynayaan.
Hadda tani waa waxa dhammaan loogu talagalay
Aan barno qoraalkayaga inuu si otomaatig ah u shaqeeyo marka aanu u go'anayno laanta sayid ee gitlab
Marka hore aan ka dhigno qoraalkayaga mid aad u qurux badan oo aan ku dhejinno fayl la fulin karo (aan u yeerno exec_pull) -
#!/bin/bash
/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"
Aan tagno gitlab oo aan ku abuurno fayl mashruuca .gitlab-ci.yml
Waxa aanu gudaha galnay waxa soo socda:
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
Dhammaan waa diyaar. Hadda -
- ballan qaad
- Waan ku faraxsanahay in wax walba ay shaqeynayaan
Markaad u wareejinayso .yml mashaariicda kale, kaliya waxaad u baahan tahay inaad bedesho magaca adeega si aad dib u bilowdo iyo magaca kooxda taas oo amarrada macquulka ah lagu fulin doono.
Source: www.habr.com