Ansible + auto git tarraingt i mbraisle de mheaisíní fíorúla sa scamall

Ansible + auto git tarraingt i mbraisle de mheaisíní fíorúla sa scamall

Lá maith

Tá roinnt braislí scamall againn le líon mór meaisíní fíorúla i ngach ceann acu. Déanaimid óstáil ar an rud ar fad seo ag Hetzner. I ngach braisle tá máistir-mheaisín amháin againn, tógtar pictiúr uaidh agus déantar é a dháileadh go huathoibríoch ar gach meaisín fíorúil laistigh den bhraisle.

Ní cheadaíonn an scéim seo dúinn úsáid a bhaint as reathaí gitlab de ghnáth, mar go n-eascraíonn go leor fadhbanna nuair a thagann go leor reathaithe cláraithe comhionanna, rud a spreag sinn chun teacht ar réiteach agus an t-alt/lámhleabhar seo a scríobh.

Is dócha nach cleachtas is fearr é seo, ach bhí an chuma ar an réiteach seo chomh áisiúil agus simplí agus is féidir.

Le haghaidh an teagaisc, féach cat.

Pacáistí riachtanacha ar an máistir-mheaisín:

  • python
  • git
  • comhad le heochracha ssh

Is é an prionsabal ginearálta a bhaineann le tarraingt uathoibríoch gut a chur i bhfeidhm ar gach meaisín fíorúil ná go dteastaíonn meaisín uait ar a mbeidh Ansible suiteáilte. Ón meaisín seo, seolfaidh ansible orduithe tarraingt git agus atosóidh sé an tseirbhís atá nuashonraithe. Chun na gcríoch seo, chruthaíomar meaisín fíorúil ar leith taobh amuigh de na braislí agus suiteáladh é:

  • python
  • ansible
  • gitlab-rádala

Ó chúrsaí eagraíochtúla - ní mór duit gitlab-runner a chlárú, ssh-keygen a dhéanamh, eochair phoiblí ssh an mheaisín seo a uaslódáil chuig .ssh/authorized_keys ar an meaisín máistir, port oscailte 22 le haghaidh ansible ar an meaisín máistir.

Anois, déanaimis a chumrú asible

Ós rud é go bhfuil sé mar sprioc againn gach rud is féidir a uathoibriú. I gcomhad /etc/ansible/ansible.cfg beidh muid uncomment an líne host_key_checking = Falseionas nach n-iarrfaidh ansible deimhniú maidir le meaisíní nua.

Ansin, ní mór duit comhad fardail a ghiniúint go huathoibríoch le haghaidh ansible, óna nglacfaidh sé IP na meaisíní ar a gcaithfidh tú git a tharraingt.

Gineann muid an comhad seo ag baint úsáide as API Hetzner, is féidir leat liosta na n-óstach a thógáil ó do bhunachar sonraí AWS, Asure (tá API agat áit éigin chun do mheaisíní reatha a thaispeáint, ceart?).

Tá struchtúr an chomhaid fardail an-tábhachtach do Ansible;

[группа]
ip-адрес
ip-адрес

[группа2]
ip-адрес
ip-адрес

Chun comhad den sórt sin a ghiniúint, déanfaimid script shimplí (cuirfimid glaoch air 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

Tá sé in am a sheiceáil go n-oibríonn Ansible agus go bhfuil sé cairdiúil le seoltaí IP a fháil:

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

Ba cheart go mbeadh óstainmneacha na meaisíní ar ar feidhmíodh an t-ordú san aschur.
Cúpla focal faoi chomhréir:

  • /etc/ansible/./vm_list - giniúint liosta de na meaisíní
  • -i - cosán iomlán chuig an gcomhad fardail
  • -m - inis insible an modúl bhlaosc a úsáid
  • -a atá an argóint. Is féidir aon ordú a chur isteach anseo
  • grúpa — ainm do bhraisle. Más gá duit é seo a dhéanamh ar gach braisle, athraigh an grúpa go léir

Rachaimid níos faide - déanaimis iarracht tarraingt git a dhéanamh ar ár meaisíní fíorúla:

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

Más rud é san aschur a fheicimid cheana féin cothrom le dáta nó díluchtú ón stór, ansin tá gach rud ag obair.

Anois is é seo a bhí i gceist leis go léir

Déanaimis ár script a mhúineadh chun rith go huathoibríoch agus sinn ag gabháil don mháistir-bhrainse i gitlab

Ar dtús, déanaimis ár script níos áille agus cuirfimid i gcomhad inrite é (cuirfimid exec_pull air) -

#!/bin/bash

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

A ligean ar dul go dtí ár gitlab agus comhad a chruthú sa tionscadal .gitlab-ci.yml
Cuirimid na rudaí seo a leanas taobh istigh:

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 

Tá gach réidh. Anois -

  • gealltanas a dhéanamh
  • Tá áthas orm go bhfuil gach rud ag obair

Agus .yml á aistriú chuig tionscadail eile, ní gá duit ach ainm na seirbhíse a atosú agus ainm an bhraisle ar a ndéanfar na horduithe insible a fhorghníomhú a athrú.

Foinse: will.com

Add a comment