Ansible + auto git αž‘αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž–αž–αž€

Ansible + auto git αž‘αžΆαž‰αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž“αŸƒαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž“αŸ…αž€αŸ’αž“αž»αž„αž–αž–αž€

αžαŸ’αž„αŸƒβ€‹αž›αŸ’αž’

αž™αžΎαž„αž˜αžΆαž“αž…αž„αŸ’αž€αŸ„αž˜αž–αž–αž€αž‡αžΆαž…αŸ’αžšαžΎαž“αžŠαŸ‚αž›αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž˜αž½αž™αž…αŸ†αž“αž½αž“αž’αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž“αžΈαž˜αž½αž™αŸ—αŸ” αž™αžΎαž„αžšαŸ€αž”αž…αŸ†αž’αžΆαž‡αžΈαžœαž€αž˜αŸ’αž˜αž‘αžΆαŸ†αž„αž˜αžΌαž›αž“αŸαŸ‡αž“αŸ… Hetzner αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αž“αžΈαž˜αž½αž™αŸ— αž™αžΎαž„αž˜αžΆαž“αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž˜αž½αž™ αžšαžΌαž”αžαžαž˜αž½αž™αžŸαž“αŸ’αž›αžΉαž€αžαŸ’αžšαžΌαžœαž”αžΆαž“αž™αž€αž…αŸαž‰αž–αžΈαžœαžΆ αž αžΎαž™αž…αŸ‚αž€αž…αžΆαž™αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ…αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž…αž„αŸ’αž€αŸ„αž˜αŸ”

αž‚αŸ’αžšαŸ„αž„αž€αžΆαžšαžŽαŸαž“αŸαŸ‡αž˜αž·αž“αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž™αžΎαž„αž”αŸ’αžšαžΎ gitlab-runners αž‡αžΆαž’αž˜αŸ’αž˜αžαžΆαž‘αŸ αžŠαŸ„αž™αžŸαžΆαžšαž”αž‰αŸ’αž αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž€αžΎαžαž‘αžΎαž„αž“αŸ…αž–αŸαž›αžŠαŸ‚αž›αž’αŸ’αž“αž€αžšαžαŸ‹αžŠαŸ‚αž›αž”αžΆαž“αž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‡αžΆαž…αŸ’αžšαžΎαž“αž›αŸαž…αž‘αžΎαž„ αžŠαŸ‚αž›αž‡αŸ†αžšαž»αž‰αž±αŸ’αž™αž™αžΎαž„αžŸαŸ’αžœαŸ‚αž„αžšαž€αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™ αž αžΎαž™αžŸαžšαžŸαŸαžšαž’αžαŸ’αžαž”αž‘/αžŸαŸ€αžœαž—αŸ…αžŽαŸ‚αž“αžΆαŸ†αž“αŸαŸ‡αŸ”

αž“αŸαŸ‡αž”αŸ’αžšαž αŸ‚αž›αž‡αžΆαž˜αž·αž“αž˜αŸ‚αž“αž‡αžΆαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž›αŸ’αž’αž”αŸ†αž•αž»αžαž“αŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŠαŸ†αžŽαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž“αŸαŸ‡αž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž„αžΆαž™αžŸαŸ’αžšαž½αž› αž“αž·αž„αžŸαžΆαž˜αž‰αŸ’αž‰αžαžΆαž˜αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαž”αž„αŸ’αžšαŸ€αž“ αžŸαžΌαž˜αž˜αžΎαž›αž†αŸ’αž˜αžΆαŸ”

αž€αž‰αŸ’αž…αž”αŸ‹αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ–

  • αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹
  • Git
  • αž―αž€αžŸαžΆαžšαžŠαŸ„αž™αž”αŸ’αžšαžΎαž‚αŸ’αžšαžΆαž”αŸ‹αž…αž»αž… ssh

αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‘αžΌαž‘αŸ…αž“αŸƒαž€αžΆαžšαž’αž“αž»αžœαžαŸ’αžαž€αžΆαžšαž‘αžΆαž‰αž–αŸ„αŸ‡αžœαŸ€αž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αžΊαžαžΆαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž› Ansible αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ†αž‘αžΎαž„αŸ” αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αŸαŸ‡ ansible αž“αžΉαž„αž•αŸ’αž‰αžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ git pull αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ‚αž›αž”αžΆαž“αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž‘αžΎαž„αžœαž·αž‰αŸ” αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž‘αžΆαŸ†αž„αž“αŸαŸ‡ αž™αžΎαž„αž”αžΆαž“αž”αž„αŸ’αž€αžΎαžαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αž“αŸ…αžαžΆαž„αž€αŸ’αžšαŸ…αž…αž„αŸ’αž€αŸ„αž˜ αž αžΎαž™αžŠαŸ†αž‘αžΎαž„αž“αŸ…αž›αžΎαžœαžΆαŸ–

  • αž–αžŸαŸ‹αžαŸ’αž›αžΆαž“αŸ‹
  • ansible
  • αž’αŸ’αž“αž€αžšαžαŸ‹ gitlab

αž–αžΈαž”αž‰αŸ’αž αžΆαžŸαŸ’αžαžΆαž”αŸαž“ - αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž…αž»αŸ‡αžˆαŸ’αž˜αŸ„αŸ‡ gitlab-runner, αž”αž„αŸ’αž€αžΎαž ssh-keygen, αž”αž„αŸ’αž αŸ„αŸ‡ ssh key αžŸαžΆαž’αžΆαžšαžŽαŸˆαžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αŸαŸ‡αž‘αŸ… .ssh/authorized_keys αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ αžŸαžΌαž˜αž”αžΎαž€αž…αŸ’αžšαž€ 22 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ ansible αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαŸ”

αž₯αž‘αžΌαžœαžαŸ„αŸ‡αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ ansible

αžŠαŸ„αž™αžŸαžΆαžšαž‚αŸ„αž›αžŠαŸ…αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαž’αŸ’αžœαžΎαž’αŸ’αžœαžΈαŸ—αž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž›αž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš /etc/ansible/ansible.cfg αž™αžΎαž„β€‹αž“αžΉαž„β€‹αž˜αž·αž“β€‹αž”αž‰αŸ’αž…αŸαž‰β€‹αž˜αžαž·β€‹αž›αžΎβ€‹αž”αž“αŸ’αž‘αžΆαžαŸ‹ host_key_checking = FalseαžŠαžΌαž…αŸ’αž“αŸαŸ‡ ansible αž˜αž·αž“αžŸαŸ’αž“αžΎαžŸαž»αŸ†αž€αžΆαžšαž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž–αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžαŸ’αž˜αžΈαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŸαžΆαžšαž–αžΎαž—αŸαžŽαŸ’αžŒαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ ansible αž–αžΈαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αžœαžΆαž“αžΉαž„αž™αž€ ip αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž’αŸ’αžœαžΎ git pull αŸ”

αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž“αŸαŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎ API αžšαž”αžŸαŸ‹ Hetzner αž’αŸ’αž“αž€αž’αžΆαž…αž™αž€αž”αž‰αŸ’αž‡αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž–αžΈ AWS, Asure, database αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ (αž’αŸ’αž“αž€αž˜αžΆαž“ API αž€αž“αŸ’αž›αŸ‚αž„αžŽαžΆαž˜αž½αž™αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž αžΆαž‰αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αž˜αŸ‚αž“αž‘αŸ?)αŸ”

αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αž“αŸƒαž―αž€αžŸαžΆαžšαžŸαžΆαžšαž–αžΎαž—αŸαžŽαŸ’αžŒαž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŽαžΆαžŸαŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹ Ansible αžœαžΆαž‚αž½αžšαžαŸ‚αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

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

αžŠαžΎαž˜αŸ’αž”αžΈαž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž”αŸ‚αž”αž“αŸαŸ‡ αž™αžΎαž„αž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŸαžΆαž˜αž‰αŸ’αž‰αž˜αž½αž™ (αžαŸ„αŸ‡αž αŸ…αžœαžΆαŸ” 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

αžœαžΆαžŠαž›αŸ‹αž–αŸαž›αž αžΎαž™αžŠαžΎαž˜αŸ’αž”αžΈαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αžαžΆ Ansible αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž˜αžΆαž“αž—αžΆαž–αžšαž½αžŸαžšαžΆαž™αžšαžΆαž€αŸ‹αž‘αžΆαž€αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž‘αž‘αž½αž›αž’αžΆαžŸαž™αžŠαŸ’αž‹αžΆαž“ IPαŸ–

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

αž›αž‘αŸ’αž’αž•αž›αž‚αž½αžšαžαŸ‚αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžšαž”αžŸαŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αžŠαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ”
αž–αžΆαž€αŸ’αž™αž–αžΈαžšαž”αžΈαž’αŸ†αž–αžΈαžœαžΆαž€αŸ’αž™αžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αŸ–

  • /etc/ansible/./vm_list - αž”αž„αŸ’αž€αžΎαžαž”αž‰αŸ’αž‡αžΈαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“
  • -i - αž•αŸ’αž›αžΌαžœαžŠαžΆαž…αŸ‹αžαžΆαžαž‘αŸ…αž€αžΆαž“αŸ‹αž―αž€αžŸαžΆαžšαžŸαžΆαžšαž–αžΎαž—αŸαžŽαŸ’αžŒ
  • -m - αž”αŸ’αžšαžΆαž”αŸ‹ ansible αž±αŸ’αž™αž”αŸ’αžšαžΎαž˜αŸ‰αžΌαžŒαž»αž›αžŸαŸ‚αž›
  • -a αž‚αžΊαž‡αžΆαž’αžΆαž‚αž»αž™αž˜αŸ‰αž„αŸ‹αŸ” αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŽαžΆαž˜αž½αž™αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž‰αŸ’αž…αžΌαž›αž“αŸ…αž‘αžΈαž“αŸαŸ‡
  • αž€αŸ’αžšαž»αž˜ - αžˆαŸ’αž˜αŸ„αŸ‡αž“αŸƒαž€αŸ’αžšαž»αž˜αžšαž”αžŸαŸ‹αž’αŸ’αž“αž€αŸ” αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžαŸ’αžšαžΌαžœαž€αžΆαžšαž’αŸ’αžœαžΎαžœαžΆαž“αŸ…αž›αžΎαž…αž„αŸ’αž€αŸ„αž˜αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŸαžΌαž˜αž”αŸ’αžαžΌαžšαž€αŸ’αžšαž»αž˜αž‘αŸ…αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆ

αžαŸ„αŸ‡αž‘αŸ…αž”αž“αŸ’αžαž‘αŸ€αž - αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜αž’αŸ’αžœαžΎ git pull αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž“αž·αž˜αŸ’αž˜αž·αžαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ–

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

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž›αž‘αŸ’αž’αž•αž›αžŠαŸ‚αž›αž™αžΎαž„αžƒαžΎαž‰αžšαž½αž…αž‡αžΆαžŸαŸ’αžšαŸαž… αž¬αž€αŸ†αž–αž»αž„αž•αŸ’αž‘αž»αž€αž…αŸαž‰αž–αžΈαžƒαŸ’αž›αžΆαŸ†αž„ αž“αŸ„αŸ‡αž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž αžΎαž™αŸ”

αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡β€‹αž‚αžΊβ€‹αž‡αžΆβ€‹αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αžœαžΆβ€‹αž˜αžΆαž“β€‹αž“αŸαž™β€‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹β€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹

αž…αžΌαžšαž™αžΎαž„αž”αž„αŸ’αžšαŸ€αž“αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžšαž”αžŸαŸ‹αž™αžΎαž„αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž–αŸαž›αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžŸαžΆαžαžΆαž˜αŸαž“αŸ…αž€αŸ’αž“αž»αž„ gitlab

αžŠαŸ†αž”αžΌαž„β€‹αž™αžΎαž„β€‹αž’αŸ’αžœαžΎβ€‹αž±αŸ’αž™β€‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž€αžΆαž“αŸ‹β€‹αžαŸ‚β€‹αžŸαŸ’αžšαžŸαŸ‹β€‹αžŸαŸ’αž’αžΆαž αž αžΎαž™β€‹αžŠαžΆαž€αŸ‹β€‹αžœαžΆβ€‹αž€αŸ’αž“αž»αž„β€‹αž―αž€αžŸαžΆαžšβ€‹αžŠαŸ‚αž›β€‹αž’αžΆαž…β€‹αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·β€‹αž”αžΆαž“ (αž αŸ…β€‹αžœαžΆβ€‹αžαžΆ exec_pull) -

#!/bin/bash

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

αžαŸ„αŸ‡αž‘αŸ… gitlab αžšαž”αžŸαŸ‹αž™αžΎαž„αž αžΎαž™αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž‚αž˜αŸ’αžšαŸ„αž„ .gitlab-ci.yml
αž™αžΎαž„αžŠαžΆαž€αŸ‹αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αŸ–

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 

αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžšαž½αž…αžšαžΆαž›αŸ‹αž αžΎαž™αŸ” αž₯αž‘αžΌαžœβ€‹αž“αŸαŸ‡ -

  • αž”αŸ’αžαŸαž‡αŸ’αž‰αžΆαž…αž·αžαŸ’αž
  • αžαŸ’αž‰αž»αŸ†αžšαžΈαž€αžšαžΆαž™αžŠαŸ‚αž›αž’αŸ’αžœαžΈαŸ—αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αž“αŸ…αž–αŸαž›αž•αŸ’αž‘αŸαžš .yml αž‘αŸ…αž‚αž˜αŸ’αžšαŸ„αž„αž•αŸ’αžŸαŸαž„αž‘αŸ€αž αž’αŸ’αž“αž€αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž‘αžΎαž„αžœαž·αž‰ αž“αž·αž„αžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αž…αž„αŸ’αž€αŸ„αž˜αžŠαŸ‚αž›αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ ansible αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹