Ansible + auto git kumea i roto i te kahui miihini mariko i te kapua

Ansible + auto git kumea i roto i te kahui miihini mariko i te kapua

Pai rā

He maha a matou kahui kapua me te maha o nga miihini mariko kei roto ia ia. Ka manaaki matou i tenei pakihi katoa i Hetzner. I roto i ia kapoi kotahi to matou miihini matua, ka tangohia he whakaahua mai i a ia ka tohatoha aunoa ki nga miihini mariko katoa i roto i te roopu.

Kaore tenei kaupapa e whakaae ki te whakamahi i nga gitlab-runners i te nuinga o te waa, na te mea he maha nga raru ka puta mai te maha o nga kaiwhaiwhai kua rehitatia, na reira matou ki te rapu huarahi whakatika me te tuhi i tenei tuhinga / pukapuka.

Ehara pea tenei i te mahi tino pai, engari he pai te ahua me te ngawari o tenei otinga.

Mo te akoranga, tirohia koa te ngeru.

Ko nga kohinga e hiahiatia ana i runga i te miihini matua:

  • nānati
  • git
  • kōnae me nga taviri ssh

Ko te maataapono whanui mo te whakatinana i te kume puku aunoa i runga i nga miihini mariko katoa me hiahia koe ki tetahi miihini ka whakauruhia a Ansible. Mai i tenei miihini, ka tukuna e ansible nga whakahau git pull ka whakaara ano i te ratonga kua whakahoutia. Mo enei kaupapa, i hanga e matou he miihini mariko motuhake i waho o nga tautau ka whakauruhia ki runga:

  • nānati
  • kitea
  • gitlab-runner

Mai i nga take whakahaere - me rehita koe i te gitlab-runner, hanga ssh-keygen, tuku i te taviri ssh whanui o tenei miihini ki .ssh/authorized_keys i runga i te miihini matua, whakatuwhera te tauranga 22 mo te ansible i runga i te miihini matua.

Inaianei me whirihora ansible

I te mea ko ta matou whainga ko te whakaaunoa i nga mea katoa ka taea. I roto i te kōnae /etc/ansible/ansible.cfg ka whakakorehia e matou te raina host_key_checking = Falsekia kore a ansible e tono mo te whakatuturutanga o nga miihini hou.

I muri mai, me whakaputa aunoa koe i tetahi konae pukapuka mo te ansible, mai i te waahi ka tangohia te ip o nga miihini e hiahia ana koe ki te mahi git pull.

Ka whakaputahia e matou tenei konae ma te whakamahi i te API a Hetzner, ka taea e koe te tango i te rarangi o nga kaihautu mai i to AWS, Asure, papaa raraunga (kei a koe he API ki tetahi waahi hei whakaatu i o mihini rere, tika?).

He mea nui te hanganga o te konae pukapuka mo Ansible; me penei te ahua:

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

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

Hei whakaputa i taua konae, ka mahia e matou he tuhinga ngawari (me karangahia 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

Kua tae ki te wa ki te tirotiro kei te mahi a Ansible me te pai ki te whiwhi wahitau IP:

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

Kei roto i te putanga nga ingoa kaihautu o nga miihini i mahia ai te whakahau.
He kupu torutoru mo te wetereo:

  • /etc/ansible/./vm_list - hangaia he rarangi mihini
  • -i - ara tino ki te konae pukapuka
  • -m - korero ki ansible ki te whakamahi i te kōwae anga
  • -a ko te tohenga. Ka taea te whakauru i tetahi tono ki konei
  • roopu — te ingoa o to huinga. Ki te hiahia koe ki te mahi i tenei ki nga tautau katoa, huri roopu ki te katoa

Me haere whakamua - me ngana ki te mahi git pull i runga i a tatou miihini mariko:

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

Mena kei roto i te putanga ka kite tatou i nga mea kua tae mai ki te waa, te tango mai ranei i te putunga, katahi ka mahi nga mea katoa.

Inaianei koinei te tikanga o te katoa

Whakaakohia a maatau tuhinga kia rere aunoa ina uru ana ki te peka matua i gitlab

Tuatahi, me whakaahua ake ta tatou tuhinga ka maka ki roto i te konae ka taea te kawe (kia kiia ko exec_pull) -

#!/bin/bash

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

Me haere ki to tatou gitlab me te hanga i tetahi konae ki roto i te kaupapa .gitlab-ci.yml
Ka whakauruhia e matou nga mea e whai ake nei ki roto:

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 

Kua reri katoa. Inaianei -

  • hanga he kupu whakarite
  • Kei te koa ahau kei te mahi nga mea katoa

I te wa e whakawhiti ana i te .yml ki etahi atu kaupapa, me huri noa te ingoa o te ratonga ki te whakaara ano me te ingoa o te roopu ka mahia nga whakahau ansible.

Source: will.com

Tāpiri i te kōrero