Ansible + auto git misintona andiana milina virtoaly ao anaty rahona

Ansible + auto git misintona andiana milina virtoaly ao anaty rahona

Andro tsara

Manana cluster rahona maromaro misy milina virtoaly marobe ao amin'ny tsirairay. Mampiantrano an'ity orinasa rehetra ity ao amin'ny Hetzner izahay. Ao amin'ny cluster tsirairay dia manana milina master iray isika, maka sary avy ao ary zaraina ho azy amin'ny milina virtoaly rehetra ao anatin'ilay cluster.

Ity tetika ity dia tsy mamela antsika hampiasa gitlab-runners amin'ny fomba mahazatra, satria be dia be ny olana mipoitra rehefa misy mpihazakazaka misoratra anarana mitovy, izay nanosika anay hitady vahaolana ary hanoratra ity lahatsoratra / boky ity.

Mety tsy fanao tsara indrindra izany, saingy toa mety sy tsotra araka izay azo atao io vahaolana io.

Ho an'ny lesona dia jereo ny saka.

Fonosana ilaina amin'ny milina master:

  • Python
  • Mandehana
  • rakitra miaraka amin'ny fanalahidy ssh

Ny fitsipika ankapobeny amin'ny fampiharana ny fisintonana tsinay mandeha ho azy amin'ny milina virtoaly rehetra dia ny mila milina iray hametrahana an'i Ansible. Avy amin'ity milina ity, ny ansible dia handefa baiko git pull ary hamerina ny serivisy izay nohavaozina. Ho an'ireo tanjona ireo dia namorona milina virtoaly misaraka ivelan'ny cluster izahay ary napetraka teo aminy:

  • Python
  • azo atao
  • gitlab-runner

Avy amin'ny olana momba ny fandaminana - mila misoratra anarana gitlab-runner ianao, manaova ssh-keygen, ampidiro ny lakile ssh ho an'ny daholobe amin'ity milina ity. .ssh/authorized_keys eo amin'ny milina master, sokafy ny port 22 ho ansible amin'ny milina master.

Andeha hojerentsika ny ansible

Satria ny tanjonay dia ny hanao automatique izay rehetra azo atao. Ao anaty rakitra /etc/ansible/ansible.cfg hofoanana ny tsipika izahay host_key_checking = Falsemba tsy hangatahan'i ansible ny fanamafisana ny milina vaovao.

Manaraka izany dia mila mamorona fisie inventory ho an'ny ansible ianao, avy eo dia haka ny ip amin'ireo milina izay ilainao hanaovana git pull.

Mamorona ity rakitra ity izahay amin'ny alΓ lan'ny Hetzner's API, azonao atao ny maka ny lisitry ny mpampiantrano avy amin'ny AWS, Asure, database (manana API ianao any amin'ny toerana iray hanehoana ny milina mandeha, sa tsy izany?).

Tena zava-dehibe ho an'ny Ansible ny firafitry ny antontan-drakitra; tokony ho toy izao izy io:

[Π³Ρ€ΡƒΠΏΠΏΠ°]
ip-адрСс
ip-адрСс

[Π³Ρ€ΡƒΠΏΠΏΠ°2]
ip-адрСс
ip-адрСс

Mba hamoronana rakitra toy izany dia hanao script tsotra izahay (aleo antsoina hoe 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

Fotoana izao hanamarinana fa miasa ny Ansible ary sariaka amin'ny fandraisana adiresy IP:

/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'hostname' group

Ny vokatra dia tokony ahitana ny anaran'ny mpampiantrano ny milina nanaovana ny baiko.
Teny vitsivitsy momba ny syntax:

  • /etc/ansible/./vm_list - mamorona lisitry ny milina
  • -i - lalana tanteraka mankany amin'ny rakitra firaketana
  • -m - lazao ansible ny fampiasana ny module shell
  • -a ny argument. Ny baiko rehetra dia azo ampidirina eto
  • vondrona - ny anaran'ny cluster anao. Raha mila manao izany amin'ny cluster rehetra ianao dia ovay ny vondrona ho an'ny rehetra

Andao handeha lavitra - andeha isika hanao git pull amin'ny milina virtoaly:

/etc/ansible/./vm_list && ansible -i /etc/ansible/cloud_ip -m shell -a 'cd /path/to/project && git pull' group 

Raha ao amin'ny famoahana dia hitantsika fa efa nohavaozina na misintona avy amin'ny tahiry, dia mandeha ny zava-drehetra.

Ankehitriny dia izany no nanaovana izany rehetra izany

Andao ampianaro ny scripty mandeha ho azy rehefa manolo-tena amin'ny sampana master ao amin'ny gitlab

Voalohany, andao hatao tsara tarehy kokoa ny scripty ary apetraho ao anaty rakitra azo tanterahana (aleo atao hoe exec_pull) -

#!/bin/bash

/etc/ansible/./get_vms && ansible -i /etc/ansible/cloud_ip -m shell -a "$@"

Andeha ho any amin'ny gitlab ary hamorona rakitra ao amin'ny tetikasa .gitlab-ci.yml
Mametraka ireto manaraka ireto izahay ao anatiny:

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 

Efa vonona ny rehetra. Ankehitriny -

  • manaova fanoloran-tena
  • Faly aho fa mandeha ny zava-drehetra

Rehefa mamindra .yml amin'ny tetikasa hafa ianao dia mila manova ny anaran'ny serivisy hanombohana sy ny anaran'ny cluster izay hanatanterahana ny baiko azo ampiasaina.

Source: www.habr.com

Add a comment