Macquul ah + auto git ayaa soo jiidaya koox mashiinada farsamada gacanta ee daruuraha

Macquul ah + auto git ayaa soo jiidaya koox mashiinada farsamada gacanta ee daruuraha

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 = Falsesi 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

Add a comment