Ansible + auto git แƒ˜แƒ–แƒ˜แƒ“แƒแƒ•แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒก แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒจแƒ˜

Ansible + auto git แƒ˜แƒ–แƒ˜แƒ“แƒแƒ•แƒก แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒก แƒฆแƒ แƒฃแƒ‘แƒ”แƒšแƒจแƒ˜

แฒ™แƒแƒ แƒ’แƒ˜ แƒ“แƒฆแƒ”

แƒฉแƒ•แƒ”แƒœ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ แƒแƒ›แƒ“แƒ”แƒœแƒ˜แƒ›แƒ” แƒฆแƒ แƒฃแƒ‘แƒšแƒแƒ•แƒแƒœแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜ แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒšแƒจแƒ˜ แƒ“แƒ˜แƒ“แƒ˜ แƒ แƒแƒแƒ“แƒ”แƒœแƒแƒ‘แƒ˜แƒ— แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒ—. แƒฉแƒ•แƒ”แƒœ แƒ›แƒ—แƒ”แƒš แƒแƒ› แƒ‘แƒ˜แƒ–แƒœแƒ”แƒกแƒก แƒ•แƒฃแƒ›แƒแƒกแƒžแƒ˜แƒœแƒซแƒšแƒ”แƒ‘แƒ— Hetzner-แƒจแƒ˜. แƒ—แƒ˜แƒ—แƒแƒ”แƒฃแƒš แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒจแƒ˜ แƒ’แƒ•แƒแƒฅแƒ•แƒก แƒ”แƒ แƒ—แƒ˜ แƒ›แƒ—แƒแƒ•แƒแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ, แƒ›แƒ˜แƒกแƒ’แƒแƒœ แƒแƒ แƒ˜แƒก แƒแƒฆแƒ”แƒ‘แƒฃแƒšแƒ˜ แƒกแƒœแƒ”แƒžแƒจแƒแƒขแƒ˜ แƒ“แƒ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒœแƒแƒฌแƒ˜แƒšแƒ“แƒ”แƒ‘แƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”.

แƒ”แƒก แƒกแƒฅแƒ”แƒ›แƒ แƒแƒ  แƒ’แƒ•แƒแƒซแƒšแƒ”แƒ•แƒก แƒกแƒแƒจแƒฃแƒแƒšแƒ”แƒ‘แƒแƒก แƒœแƒแƒ แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ แƒ’แƒแƒ›แƒแƒ•แƒ˜แƒงแƒ”แƒœแƒแƒ— gitlab-runners, แƒ แƒแƒ“แƒ’แƒแƒœ แƒ‘แƒ”แƒ•แƒ แƒ˜ แƒžแƒ แƒแƒ‘แƒšแƒ”แƒ›แƒ แƒฉแƒœแƒ“แƒ”แƒ‘แƒ, แƒ แƒแƒ“แƒ”แƒกแƒแƒช แƒฉแƒœแƒ“แƒ”แƒ‘แƒ แƒ›แƒ แƒแƒ•แƒแƒšแƒ˜ แƒ˜แƒ“แƒ”แƒœแƒขแƒฃแƒ แƒ˜ แƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒ”แƒ‘แƒฃแƒšแƒ˜ แƒ›แƒแƒ แƒ‘แƒ”แƒœแƒแƒšแƒ˜, แƒ แƒแƒ›แƒแƒช แƒ›แƒแƒ’แƒ•แƒ˜แƒงแƒ•แƒแƒœแƒ แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒ“แƒ แƒ“แƒแƒ’แƒ•แƒ”แƒฌแƒ”แƒ แƒ แƒ”แƒก แƒกแƒขแƒแƒขแƒ˜แƒ/แƒกแƒแƒฎแƒ”แƒšแƒ›แƒซแƒฆแƒ•แƒแƒœแƒ”แƒšแƒ.

แƒ”แƒก แƒแƒšแƒ‘แƒแƒ— แƒแƒ  แƒแƒ แƒ˜แƒก แƒกแƒแƒฃแƒ™แƒ”แƒ—แƒ”แƒกแƒ แƒžแƒ แƒแƒฅแƒขแƒ˜แƒ™แƒ, แƒ›แƒแƒ’แƒ แƒแƒ› แƒ”แƒก แƒ’แƒแƒ›แƒแƒกแƒแƒ•แƒแƒšแƒ˜ แƒ›แƒแƒฅแƒกแƒ˜แƒ›แƒแƒšแƒฃแƒ แƒแƒ“ แƒ›แƒแƒกแƒแƒฎแƒ”แƒ แƒฎแƒ”แƒ‘แƒ”แƒšแƒ˜ แƒ“แƒ แƒ›แƒแƒ แƒขแƒ˜แƒ•แƒ˜ แƒฉแƒแƒœแƒ“แƒ.

แƒ’แƒแƒ™แƒ•แƒ”แƒ—แƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก แƒ˜แƒฎแƒ˜แƒšแƒ”แƒ— แƒ™แƒแƒขแƒ.

แƒกแƒแƒญแƒ˜แƒ แƒ แƒžแƒแƒ™แƒ”แƒขแƒ”แƒ‘แƒ˜ แƒ›แƒแƒกแƒขแƒ”แƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”:

  • แƒžแƒ˜แƒ—แƒแƒœแƒ˜
  • แƒขแƒฃแƒ แƒ˜แƒ–แƒ›แƒ˜
  • แƒคแƒแƒ˜แƒšแƒ˜ ssh แƒ™แƒšแƒแƒ•แƒ˜แƒจแƒ”แƒ‘แƒ˜แƒ—

แƒงแƒ•แƒ”แƒšแƒ แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ  แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ” แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒ˜ แƒœแƒแƒฌแƒšแƒแƒ•แƒ˜แƒก แƒ“แƒแƒœแƒ”แƒ แƒ’แƒ•แƒ˜แƒก แƒ–แƒแƒ’แƒแƒ“แƒ˜ แƒžแƒ แƒ˜แƒœแƒชแƒ˜แƒžแƒ˜ แƒแƒ แƒ˜แƒก แƒ˜แƒก, แƒ แƒแƒ› แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒ›แƒแƒœแƒฅแƒแƒœแƒ, แƒ แƒแƒ›แƒ”แƒšแƒ–แƒ”แƒช แƒ“แƒแƒ›แƒแƒœแƒขแƒแƒŸแƒ“แƒ”แƒ‘แƒ Ansible. แƒแƒ› แƒ›แƒแƒœแƒฅแƒแƒœแƒ˜แƒ“แƒแƒœ, ansible แƒ’แƒแƒ’แƒ–แƒแƒ•แƒœแƒ˜แƒก git pull แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ”แƒ‘แƒก แƒ“แƒ แƒ’แƒแƒ“แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ•แƒก แƒ’แƒแƒœแƒแƒฎแƒšแƒ”แƒ‘แƒฃแƒš แƒกแƒ”แƒ แƒ•แƒ˜แƒกแƒก. แƒแƒ› แƒ›แƒ˜แƒ–แƒœแƒ”แƒ‘แƒ˜แƒกแƒแƒ—แƒ•แƒ˜แƒก แƒฉแƒ•แƒ”แƒœ แƒจแƒ”แƒ•แƒฅแƒ›แƒ”แƒœแƒ˜แƒ— แƒชแƒแƒšแƒ™แƒ” แƒ•แƒ˜แƒ แƒขแƒฃแƒแƒšแƒฃแƒ แƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ”แƒ‘แƒ˜แƒก แƒ’แƒแƒ แƒ”แƒ— แƒ“แƒ แƒ“แƒแƒ•แƒแƒ˜แƒœแƒกแƒขแƒแƒšแƒ˜แƒ แƒ”แƒ— แƒ›แƒแƒกแƒ–แƒ”:

  • แƒžแƒ˜แƒ—แƒแƒœแƒ˜
  • แƒžแƒแƒกแƒฃแƒฎแƒ˜แƒกแƒ›แƒ’แƒ”แƒ‘แƒ”แƒšแƒ˜
  • แƒ’แƒ˜แƒขแƒšแƒแƒ‘-แƒ›แƒ แƒ‘แƒแƒšแƒ˜

แƒแƒ แƒ’แƒแƒœแƒ˜แƒ–แƒแƒชแƒ˜แƒฃแƒšแƒ˜ แƒกแƒแƒ™แƒ˜แƒ—แƒฎแƒ”แƒ‘แƒ˜แƒ“แƒแƒœ - แƒ—แƒฅแƒ•แƒ”แƒœ แƒฃแƒœแƒ“แƒ แƒ“แƒแƒแƒ แƒ”แƒ’แƒ˜แƒกแƒขแƒ แƒ˜แƒ แƒแƒ— gitlab-runner, แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— ssh-keygen, แƒแƒขแƒ•แƒ˜แƒ แƒ—แƒแƒ— แƒแƒ› แƒแƒžแƒแƒ แƒแƒขแƒ˜แƒก แƒกแƒแƒฏแƒแƒ แƒ ssh แƒ’แƒแƒกแƒแƒฆแƒ”แƒ‘แƒ˜ .ssh/authorized_keys แƒ›แƒ—แƒแƒ•แƒแƒ  แƒ›แƒแƒœแƒฅแƒแƒœแƒแƒ–แƒ”, แƒ’แƒแƒฎแƒกแƒ”แƒœแƒ˜แƒ— แƒžแƒแƒ แƒขแƒ˜ 22 แƒกแƒแƒ›แƒแƒ’แƒ˜แƒกแƒขแƒ แƒ แƒแƒžแƒแƒ แƒแƒขแƒ–แƒ” แƒแƒœแƒกแƒ˜แƒ‘แƒ˜แƒšแƒ˜แƒกแƒ—แƒ•แƒ˜แƒก.

แƒแƒฎแƒšแƒ แƒ›แƒแƒ“แƒ˜แƒ— แƒ’แƒแƒ•แƒแƒ™แƒแƒœแƒคแƒ˜แƒ’แƒฃแƒ แƒ˜แƒ แƒแƒ— ansible

แƒ•แƒ˜แƒœแƒแƒ˜แƒ“แƒแƒœ แƒฉแƒ•แƒ”แƒœแƒ˜ แƒ›แƒ˜แƒ–แƒแƒœแƒ˜แƒ แƒงแƒ•แƒ”แƒšแƒแƒคแƒ แƒ˜แƒก แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒ˜แƒ–แƒแƒชแƒ˜แƒ, แƒ แƒแƒช แƒจแƒ”แƒกแƒแƒซแƒšแƒ”แƒ‘แƒ”แƒšแƒ˜แƒ. แƒคแƒแƒ˜แƒšแƒจแƒ˜ /etc/ansible/ansible.cfg แƒฉแƒ•แƒ”แƒœ แƒ’แƒแƒ•แƒแƒฃแƒฅแƒ›แƒ”แƒ‘แƒ— แƒฎแƒแƒ–แƒก host_key_checking = Falseแƒ แƒแƒ—แƒ ansible แƒแƒ  แƒ˜แƒ—แƒฎแƒแƒ•แƒก แƒแƒฎแƒแƒšแƒ˜ แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒ“แƒแƒ“แƒแƒกแƒขแƒฃแƒ แƒ”แƒ‘แƒแƒก.

แƒจแƒ”แƒ›แƒ“แƒ”แƒ’แƒ˜, แƒ—แƒฅแƒ•แƒ”แƒœ แƒแƒ•แƒขแƒแƒ›แƒแƒขแƒฃแƒ แƒแƒ“ แƒฃแƒœแƒ“แƒ แƒจแƒ”แƒฅแƒ›แƒœแƒแƒ— แƒ˜แƒœแƒ•แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒคแƒแƒ˜แƒšแƒ˜ ansible-แƒ˜แƒกแƒ—แƒ•แƒ˜แƒก, แƒกแƒแƒ˜แƒ“แƒแƒœแƒแƒช แƒ˜แƒก แƒ›แƒ˜แƒ˜แƒฆแƒ”แƒ‘แƒก แƒ˜แƒ› แƒ›แƒแƒœแƒฅแƒแƒœแƒ”แƒ‘แƒ˜แƒก IP-แƒก, แƒ แƒแƒ›แƒšแƒ”แƒ‘แƒ–แƒ”แƒช แƒฃแƒœแƒ“แƒ แƒ’แƒแƒแƒ™แƒ”แƒ—แƒแƒ— git pull.

แƒฉแƒ•แƒ”แƒœ แƒ•แƒแƒ’แƒ”แƒœแƒ”แƒ แƒ˜แƒ แƒ”แƒ‘แƒ— แƒแƒ› แƒคแƒแƒ˜แƒšแƒก Hetzner-แƒ˜แƒก API-แƒก แƒ’แƒแƒ›แƒแƒงแƒ”แƒœแƒ”แƒ‘แƒ˜แƒ—, แƒจแƒ”แƒ’แƒ˜แƒซแƒšแƒ˜แƒแƒ— แƒแƒ˜แƒฆแƒแƒ— แƒฐแƒแƒกแƒขแƒ”แƒ‘แƒ˜แƒก แƒกแƒ˜แƒ แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ AWS, Asure, แƒ›แƒแƒœแƒแƒชแƒ”แƒ›แƒ—แƒ แƒ‘แƒแƒ–แƒ˜แƒ“แƒแƒœ (แƒ—แƒฅแƒ•แƒ”แƒœ แƒ’แƒแƒฅแƒ•แƒ— 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-แƒก แƒ’แƒแƒ›แƒแƒ˜แƒงแƒ”แƒœแƒแƒก shell แƒ›แƒแƒ“แƒฃแƒšแƒ˜
  • -แƒ แƒแƒ แƒ˜แƒก แƒแƒ แƒ’แƒฃแƒ›แƒ”แƒœแƒขแƒ˜. แƒแƒฅ แƒœแƒ”แƒ‘แƒ˜แƒกแƒ›แƒ˜แƒ”แƒ แƒ˜ แƒ‘แƒ แƒซแƒแƒœแƒ”แƒ‘แƒ˜แƒก แƒจแƒ”แƒงแƒ•แƒแƒœแƒ แƒจแƒ”แƒ˜แƒซแƒšแƒ”แƒ‘แƒ
  • แƒฏแƒ’แƒฃแƒคแƒ˜ - แƒ—แƒฅแƒ•แƒ”แƒœแƒ˜ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ˜แƒก แƒกแƒแƒฎแƒ”แƒšแƒ˜. แƒ—แƒฃ แƒแƒ›แƒ˜แƒก แƒ’แƒแƒ™แƒ”แƒ—แƒ”แƒ‘แƒ แƒ’แƒญแƒ˜แƒ แƒ“แƒ”แƒ‘แƒแƒ— แƒงแƒ•แƒ”แƒšแƒ แƒ™แƒšแƒแƒกแƒขแƒ”แƒ แƒ–แƒ”, แƒจแƒ”แƒชแƒ•แƒแƒšแƒ”แƒ— แƒฏแƒ’แƒฃแƒคแƒ˜ แƒงแƒ•แƒ”แƒšแƒ

แƒ›แƒแƒ“แƒ˜แƒ— แƒฌแƒแƒ•แƒ˜แƒ“แƒ”แƒ— แƒฃแƒคแƒ แƒ แƒจแƒแƒ แƒก - แƒ›แƒแƒ“แƒ˜แƒ— แƒ•แƒชแƒแƒ“แƒแƒ— 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

แƒแƒฎแƒแƒšแƒ˜ แƒ™แƒแƒ›แƒ”แƒœแƒขแƒแƒ แƒ˜แƒก แƒ“แƒแƒ›แƒแƒขแƒ”แƒ‘แƒ