Ansible + auto git viverra in botro virtualis machinis in nube

Ansible + auto git viverra in botro virtualis machinis in nube

Bonus dies

Plures ligaturas habemus nubes cum magna multitudine virtualis machinis in unaquaque. Nos totum hoc negotium apud Hetzner hospitemus. In unoquoque botro habemus unum machinam magistri, scapham ex eo accipitur et automatice omnibus machinis virtualibus intra botrum distribuitur.

Haec schema non sinit nos solere cursoribus uti gitlabrum, quia multae difficultates oriuntur cum multi cursores identici descripti apparent, quae nos incitaverunt ad inveniendum laborem et hunc articulum/manuale scribendum.

Probabiliter haec non optima usus est, sed haec solutio quam maxime opportuna ac simplex videbatur.

Nam consequat, felis sed commodo.

Requiritur fasciculi in machina domini:

  • python
  • ad
  • file cum ssh claves

Generale principium exsequendi viscerum automatice in omnibus machinis virtualibus trahere est ut machina indiges in qua Ansible instituatur. Ex hac machina, ansibilis mittet mandata viverra git et sileo servitium quod renovatum est. Ad haec, machinam virtualem separatam extra racemos creavimus et in ea constituimus;

  • python
  • ansible
  • gitlab-cursor

Ex constitutionibus normarum - opus cursorem gitlabrum subcriptio, fac ssh-keygen, clavem ssh publici huius machinae ad upload .ssh/authorized_keys on the master machine, open port 22 for ansible on the master machine.

Nunc configurare ansible

Propositum quippe nostrum est automate omnia quae possibilia sunt. In file /etc/ansible/ansible.cfg nos linea uncomment host_key_checking = Falseut ansible novarum machinarum confirmationem non petit.

Deinde, necesse est inventarium documentum automatice generare pro ansible, unde capiet ip machinarum in quibus trahere debes facere.

Hunc fasciculum generamus utens Hetzner's API, sed album exercituum e tuis AWS, Asure, datorum capere potes (habes alicubi API ut machinas tuas currentes ostendas, ius?).

Structura fasciculi inventarii magni momenti est pro Ansible, hoc debet respicere sic:

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

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

Ut talem fasciculum generare, litteras simplices faciamus (it' appellemus 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

Tempus est inspiciendi opera Ansible et amicabilis cum IP inscriptionibus accipiendis:

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

Output continere debet machinis hostnames quibus mandatum factum est.
Paucis verbis de syntaxi:

  • /etc/ansible/./vm_list - elenchum machinarum generale
  • -i - absolutum iter ad inventarium fasciculi
  • -m - dico ansible ut modulus testa
  • argumentum -a est. Mandatum aliquod hic iniri potest
  • globus — nomen botri tui. Si opus est hoc facere in omnibus racemis, mutatio coetus in omnes

Longius eamus - tentamus facere git trahere in machinis virtualibus nostris:

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

Si in output iam recentes vel exonerandos e promptuario videmus, omnia operatur.

Hoc autem totum significatum est

Doceamus scriptorium nostrum statim currere cum magistro ramo in gitlab mandans

Primum, scriptorium nostrum pulchrius faciamus et illud in documento exsecutabili (vocemus illud exec_pull) -

#!/bin/bash

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

Eamus ad gitlab nostrum et limam crea in project .gitlab-ci.yml
sequentia intus ponemus;

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 

Omnia parata sunt. Nunc -

  • committere
  • Gaudeo quod omne laborat

Cum transferendo .yml ad alia incepta, solum debes mutare nomen servitii ad sileo et nomen botri in quo mandata ansibilis exsecutioni mandabuntur.

Source: www.habr.com

Add a comment