เจ•เจฒเจพเจ‰เจก เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจœเจตเจพเจฌเจฆเฉ‡เจน + เจ†เจŸเฉ‹ เจ—เจฟเฉฑเจŸ เจชเฉเฉฑเจฒ

เจ•เจฒเจพเจ‰เจก เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจœเจตเจพเจฌเจฆเฉ‡เจน + เจ†เจŸเฉ‹ เจ—เจฟเฉฑเจŸ เจชเฉเฉฑเจฒ

เจšเฉฐเจ—เจพ เจฆเจฟเจจ

เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจนเจฐ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจตเฉฑเจกเฉ€ เจ—เจฟเจฃเจคเฉ€ เจตเจฟเฉฑเจš เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจตเจพเจฒเฉ‡ เจ•เจˆ เจ•เจฒเจพเจ‰เจก เจ•เจฒเฉฑเจธเจŸเจฐ เจนเจจเฅค เจ…เจธเฉ€เจ‚ เจนเฉ‡เจŸเจœเจผเจจเจฐ เจตเจฟเจ–เฉ‡ เจ‡เจธ เจชเฉ‚เจฐเฉ‡ เจ•เจพเจฐเฉ‹เจฌเจพเจฐ เจฆเฉ€ เจฎเฉ‡เจœเจผเจฌเจพเจจเฉ€ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚เฅค เจนเจฐเฉ‡เจ• เจ•เจฒเฉฑเจธเจŸเจฐ เจตเจฟเฉฑเจš เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจฎเจพเจธเจŸเจฐ เจฎเจธเจผเฉ€เจจ เจนเฉˆ, เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจธเจจเฉˆเจชเจธเจผเจพเจŸ เจฒเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ†เจชเจฃเฉ‡ เจ†เจช เจนเฉ€ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฟเจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ‡เจน เจธเจ•เฉ€เจฎ เจธเจพเจจเฉ‚เฉฐ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ—เจฟเจŸเจฒเฉˆเจฌ-เจฐเจจเจฐเจธ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฆเฉ€ เจ‡เจœเจพเจœเจผเจค เจจเจนเฉ€เจ‚ เจฆเจฟเฉฐเจฆเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฌเจนเฉเจค เจธเจพเจฐเฉ€เจ†เจ‚ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจชเฉˆเจฆเจพ เจนเฉเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ เจœเจฆเฉ‹เจ‚ เจฌเจนเฉเจค เจธเจพเจฐเฉ‡ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเฉ‡ เจฐเจœเจฟเจธเจŸเจฐเจก เจฆเฉŒเฉœเจพเจ• เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจธ เจจเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจนเฉฑเจฒ เจฒเฉฑเจญเจฃ เจ…เจคเฉ‡ เจ‡เจธ เจฒเฉ‡เจ–/เจฎเฉˆเจจเฉ‚เจ…เจฒ เจจเฉ‚เฉฐ เจฒเจฟเจ–เจฃ เจฒเจˆ เจชเฉเจฐเฉ‡เจฐเจฟเจ†เฅค

เจ‡เจน เจธเจผเจพเจ‡เจฆ เจธเจญ เจคเฉ‹เจ‚ เจตเจงเฉ€เจ† เจ…เจญเจฟเจ†เจธ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ เจ‡เจน เจนเฉฑเจฒ เจœเจฟเฉฐเจจเจพ เจธเฉฐเจญเจต เจนเฉ‹ เจธเจ•เฉ‡ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจ…เจคเฉ‡ เจธเจฐเจฒ เจœเจพเจชเจฆเจพ เจธเฉ€เฅค

เจŸเจฟเจŠเจŸเฉ‹เจฐเจฟเจ…เจฒ เจฒเจˆ, เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ cat เจตเฉ‡เจ–เฉ‹เฅค

เจฎเจพเจธเจŸเจฐ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเฉ‡ เจชเฉˆเจ•เฉ‡เจœ:

  • เจชเจพเจ‡เจฅเจจ
  • Git
  • ssh เจ•เฉเฉฐเจœเฉ€เจ†เจ‚ เจจเจพเจฒ เจซเจพเจˆเจฒ

เจธเจพเจฐเฉ€เจ†เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ เจ†เจŸเฉ‹เจฎเฉˆเจŸเจฟเจ• เจ—เจŸ เจชเฉเฉฑเจฒ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เจฐเจจ เจฆเจพ เจ†เจฎ เจธเจฟเจงเจพเจ‚เจค เจ‡เจน เจนเฉˆ เจ•เจฟ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ Ansible เจ‡เฉฐเจธเจŸเจพเจฒ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค เจ‡เจธ เจฎเจธเจผเฉ€เจจ เจคเฉ‹เจ‚, เจœเจตเจพเจฌเจฆเฉ‡เจน เจ—เจฟเฉฑเจŸ เจชเฉเฉฑเจฒ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจญเฉ‡เจœเฉ‡เจ—เจพ เจ…เจคเฉ‡ เจ…เจชเจกเฉ‡เจŸ เจ•เฉ€เจคเฉ€ เจ—เจˆ เจธเฉ‡เจตเจพ เจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเฉ‡เจ—เจพเฅค เจ‡เจนเจจเจพเจ‚ เจ‰เจฆเฉ‡เจธเจผเจพเจ‚ เจฒเจˆ, เจ…เจธเฉ€เจ‚ เจ•เจฒเฉฑเจธเจŸเจฐเจพเจ‚ เจฆเฉ‡ เจฌเจพเจนเจฐ เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฌเจฃเจพเจˆ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ 'เจคเฉ‡ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเฉ€ เจนเฉˆ:

  • เจชเจพเจ‡เจฅเจจ
  • เจœเจตเจพเจฌเจฆเฉ‡เจน
  • gitlab-เจฆเฉŒเฉœเจพเจ•

เจธเฉฐเจ—เจ เจจเจพเจคเจฎเจ• เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจคเฉ‹เจ‚ - เจคเฉเจนเจพเจจเฉ‚เฉฐ gitlab-runner เจจเฉ‚เฉฐ เจฐเจœเจฟเจธเจŸเจฐ เจ•เจฐเจจ, ssh-keygen เจฌเจฃเจพเจ‰เจฃ, เจ‡เจธ เจฎเจธเจผเฉ€เจจ เจฆเฉ€ เจœเจจเจคเจ• ssh เจ•เฉเฉฐเจœเฉ€ เจจเฉ‚เฉฐ เจ…เฉฑเจชเจฒเฉ‹เจก เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ .ssh/authorized_keys เจฎเจพเจธเจŸเจฐ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡, เจฎเจพเจธเจŸเจฐ เจฎเจธเจผเฉ€เจจ 'เจคเฉ‡ เจœเจตเจพเจฌเจฆเฉ‡เจนเฉ€ เจฒเจˆ เจชเฉ‹เจฐเจŸ 22 เจจเฉ‚เฉฐ เจ–เฉ‹เจฒเฉเจนเฉ‹เฅค

เจ†เจ‰ เจนเฉเจฃ เจœเจตเจพเจฌเจฆเฉ‡เจน เจจเฉ‚เฉฐ เจธเฉฐเจฐเจšเจฟเจค เจ•เจฐเฉ€เจ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจธเจพเจกเจพ เจŸเฉ€เจšเจพ เจนเจฐ เจธเฉฐเจญเจต เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจธเจตเฉˆเจšเจฒเจฟเจค เจ•เจฐเจจเจพ เจนเฉˆเฅค เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš /etc/ansible/ansible.cfg เจ…เจธเฉ€เจ‚ เจฒเจพเจˆเจจ 'เจคเฉ‡ เจŸเจฟเฉฑเจชเจฃเฉ€ เจจเจนเฉ€เจ‚ เจ•เจฐเจพเจ‚เจ—เฉ‡ host_key_checking = Falseเจคเจพเจ‚ เจœเฉ‹ เจœเจตเจพเจฌเจฆเฉ‡เจน เจจเจตเฉ€เจ†เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ€ เจชเฉเจธเจผเจŸเฉ€ เจฆเฉ€ เจฎเฉฐเจ— เจจเจพ เจ•เจฐเฉ‡เฅค

เจ…เฉฑเจ—เฉ‡, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจœเจตเจพเจฌเจฆเฉ‡เจน เจฒเจˆ เจธเจตเฉˆเจšเจฒเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจตเจธเจคเฉ‚ เจซเจพเจˆเจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจ‡เจน เจ‰เจนเจจเจพเจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ€ เจ†เจˆเจชเฉ€ เจฒเฉˆ เจฒเจตเฉ‡เจ—เฉ€ เจœเจฟเจจเฉเจนเจพเจ‚ 'เจคเฉ‡ เจคเฉเจนเจพเจจเฉ‚เฉฐ git เจชเฉเฉฑเจฒ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉเฉฐเจฆเฉ€ เจนเฉˆเฅค

เจ…เจธเฉ€เจ‚ เจนเฉ‡เจŸเจœเจผเจจเจฐ เจฆเฉ‡ API เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ‡เจน เจซเจพเจˆเจฒ เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚, เจคเฉเจธเฉ€เจ‚ เจ†เจชเจฃเฉ‡ AWS, Asure, เจกเฉ‡เจŸเจพเจฌเฉ‡เจธ เจคเฉ‹เจ‚ เจนเฉ‹เจธเจŸเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจฒเฉˆ เจธเจ•เจฆเฉ‡ เจนเฉ‹ (เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจคเฉเจนเจพเจกเฉ€เจ†เจ‚ เจšเฉฑเจฒ เจฐเจนเฉ€เจ†เจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจจเฉ‚เฉฐ เจชเฉเจฐเจฆเจฐเจธเจผเจฟเจค เจ•เจฐเจจ เจฒเจˆ เจ•เจฟเจคเฉ‡ API เจนเฉˆ, เจ เฉ€เจ• เจนเฉˆ?)เฅค

เจ‡เจจเจตเฉˆเจ‚เจŸเจฐเฉ€ เจซเจพเจˆเจฒ เจฆเฉ€ เจฌเจฃเจคเจฐ เจœเจตเจพเจฌเจฆเฉ‡เจน เจฒเจˆ เจฌเจนเฉเจค เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ; เจ‡เจน เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ เจฆเจฟเจ–เจพเจˆ เจฆเฉ‡เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

[ะณั€ัƒะฟะฟะฐ]
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

เจ‡เจน เจœเจพเจ‚เจš เจ•เจฐเจจ เจฆเจพ เจธเจฎเจพเจ‚ เจนเฉˆ เจ•เจฟ เจœเจตเจพเจฌเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ IP เจชเจคเฉ‡ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจ เจฆเฉ‡ เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒ เจนเฉˆ:

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

เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจตเจฟเฉฑเจš เจ‰เจนเจจเจพเจ‚ เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ‡ เจนเฉ‹เจธเจŸ เจจเจพเจ‚ เจนเฉ‹เจฃเฉ‡ เจšเจพเจนเฉ€เจฆเฉ‡ เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจ‰เฉฑเจคเฉ‡ เจ•เจฎเจพเจ‚เจก เจšเจฒเจพเจˆ เจ—เจˆ เจธเฉ€เฅค
เจธเฉฐเจŸเฉˆเจ•เจธ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจธเจผเจฌเจฆ:

  • /etc/ansible/./vm_list - เจฎเจธเจผเฉ€เจจเจพเจ‚ เจฆเฉ€ เจธเฉ‚เจšเฉ€ เจคเจฟเจ†เจฐ เจ•เจฐเฉ‹
  • -i - เจตเจธเจคเฉ‚-เจธเฉ‚เจšเฉ€ เจซเจพเจˆเจฒ เจฆเจพ เจชเฉ‚เจฐเจพ เจฎเจพเจฐเจ—
  • -m - เจธเจผเฉˆเฉฑเจฒ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฒเจˆ เจœเจตเจพเจฌเจฆเฉ‡เจน เจฆเฉฑเจธเฉ‹
  • -a เจฆเจฒเฉ€เจฒ เจนเฉˆเฅค เจ•เฉ‹เจˆ เจตเฉ€ เจ•เจฎเจพเจ‚เจก เจ‡เฉฑเจฅเฉ‡ เจฆเจฐเจœ เจ•เฉ€เจคเฉ€ เจœเจพ เจธเจ•เจฆเฉ€ เจนเฉˆ
  • เจ—เจฐเฉเฉฑเจช โ€” เจคเฉเจนเจพเจกเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเจพ เจจเจพเจฎเฅค เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจธเจพเจฐเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐเจพเจ‚ 'เจคเฉ‡ เจ…เจœเจฟเจนเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚ เจธเจฎเฉ‚เจน เจจเฉ‚เฉฐ เจธเจพเจฐเจฟเจ†เจ‚ เจตเจฟเฉฑเจš เจฌเจฆเจฒเฉ‹

เจšเจฒเฉ‹ เจ…เฉฑเจ—เฉ‡ เจšเฉฑเจฒเฉ€เจ - เจ†เจ‰ เจ†เจชเจฃเฉ€เจ†เจ‚ เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจเจพเจ‚ 'เจคเฉ‡ git pull เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเฉ€เจ:

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

เจœเฉ‡เจ•เจฐ เจ†เจ‰เจŸเจชเฉเฉฑเจŸ เจตเจฟเฉฑเจš เจ…เจธเฉ€เจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจ…เฉฑเจช เจŸเฉ‚ เจกเฉ‡เจŸ เจœเจพเจ‚ เจฐเจฟเจชเฉ‹เจœเจผเจŸเจฐเฉ€ เจคเฉ‹เจ‚ เจ…เจจเจฒเฉ‹เจกเจฟเฉฐเจ— เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจพเจ‚, เจคเจพเจ‚ เจธเจญ เจ•เฉเจ เจ•เฉฐเจฎ เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค

เจนเฉเจฃ เจ‡เจน เจธเจญ เจ•เฉเจ เจ‡เจธเฉ‡ เจฒเจˆ เจธเฉ€

เจ†เจ‰ เจ—เจฟเจŸเจฒเฉˆเจฌ เจตเจฟเฉฑเจš เจฎเจพเจธเจŸเจฐ เจฌเฉเจฐเจพเจ‚เจš เจจเฉ‚เฉฐ เจ•เจฎเจฟเจŸ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚ เจ†เจชเจฃเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจ†เจชเจฃเฉ‡ เจ†เจช เจšเฉฑเจฒเจฃ เจฒเจˆ เจธเจฟเจ–เจพเจˆเจ

เจชเจนเจฟเจฒเจพเจ‚, เจ†เจ“ เจ†เจชเจฃเฉ€ เจธเจ•เฉเจฐเจฟเจชเจŸ เจจเฉ‚เฉฐ เจนเฉ‹เจฐ เจธเฉเฉฐเจฆเจฐ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเจพเจ‚ เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจŸเฉ‡เจฌเจฒ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเจพเจ‚ (เจ†เจ“ เจ‡เจธเจจเฉ‚เฉฐ exec_pull เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจพเจ‚) -

#!/bin/bash

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

เจ†เจ“ เจ†เจชเจฃเฉ€ เจ—เจฟเจŸเจฒเฉˆเจฌ 'เจคเฉ‡ เจšเฉฑเจฒเฉ€เจ เจ…เจคเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจซเจพเจˆเจฒ เจฌเจฃเจพเจˆเจ .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 เจจเฉ‚เฉฐ เจฆเฉ‚เจœเฉ‡ เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸเจพเจ‚ เจตเจฟเฉฑเจš เจŸเฉเจฐเจพเจ‚เจธเจซเจฐ เจ•เจฐเจฆเฉ‡ เจธเจฎเฉ‡เจ‚, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฎเฉเฉœ เจšเจพเจฒเฉ‚ เจ•เจฐเจจ เจฒเจˆ เจธเฉ‡เจตเจพ เจฆเจพ เจจเจพเจฎ เจ…เจคเฉ‡ เจ•เจฒเฉฑเจธเจŸเจฐ เจฆเจพ เจจเจพเจฎ เจฌเจฆเจฒเจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ เจœเจฟเจธ 'เจคเฉ‡ เจœเจตเจพเจฌเจฆเฉ‡เจน เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹