Ansible + auto git toso i totonu o se fuifui masini masini i le ao

Ansible + auto git toso i totonu o se fuifui masini masini i le ao

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

Faaopoopo i ai se faamatalaga