เด•เตเดฒเต—เดกเดฟเดฒเต† เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเดคเตเดคเดฟเตฝ เด…เตปเดธเดฟเดฌเดฟเตพ + เด“เดŸเตเดŸเต‹ เดœเดฟเดฑเตเดฑเต เดชเตเตพ

เด•เตเดฒเต—เดกเดฟเดฒเต† เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเตเดŸเต† เด’เดฐเต เด•เต‚เดŸเตเดŸเดคเตเดคเดฟเตฝ เด…เตปเดธเดฟเดฌเดฟเตพ + เด“เดŸเตเดŸเต‹ เดœเดฟเดฑเตเดฑเต เดชเตเตพ

เดถเตเดญเดฆเดฟเดจเด‚

เด“เดฐเต‹เดจเตเดจเดฟเดฒเตเด‚ เดงเดพเดฐเดพเดณเด‚ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเตเดณเตเดณ เดจเดฟเดฐเดตเดงเดฟ เด•เตเดฒเต—เดกเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพ เดจเดฎเตเด•เตเด•เตเดฃเตเดŸเต. เดžเด™เตเด™เตพ เดˆ เดฎเตเดดเตเดตเตป เดฌเดฟเดธเดฟเดจเดธเตเดธเตเด‚ เดนเต†เดฑเตเดฑเตโ€Œเดธเตโ€Œเดจเดฑเดฟเตฝ เดนเต‹เดธเตเดฑเตเดฑเตเดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด“เดฐเต‹ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเด‚ เดจเดฎเตเด•เตเด•เต เด’เดฐเต เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเต†เดทเต€เตป เด‰เดฃเตเดŸเต, เด…เดคเดฟเตฝ เดจเดฟเดจเตเดจเต เด’เดฐเต เดธเตเดจเดพเดชเตเดชเตเดทเต‹เดŸเตเดŸเต เดŽเดŸเตเดคเตเดคเต เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต† เดŽเดฒเตเดฒเดพ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเด‚ เดธเตเดตเดฏเดฎเต‡เดต เดตเดฟเดคเดฐเดฃเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต.

เดˆ เดธเตเด•เต€เด‚ เดžเด™เตเด™เดณเต† เดธเดพเดงเดพเดฐเดฃเด—เดคเดฟเดฏเดฟเตฝ gitlab-runners เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเดฟเดฒเตเดฒ, เด•เดพเดฐเดฃเด‚ เด’เดฐเต‡ เดชเต‹เดฒเต†เดฏเตเดณเตเดณ เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดค เดจเดฟเดฐเดตเดงเดฟ เดฑเดฃเตเดฃเตผเดฎเดพเตผ เดชเตเดฐเดคเตเดฏเด•เตเดทเดชเตเดชเต†เดŸเตเดฎเตเดชเต‹เตพ เดงเดพเดฐเดพเดณเด‚ เดชเตเดฐเดถเตเดจเด™เตเด™เตพ เด‰เดฃเตเดŸเดพเด•เตเดจเตเดจเต, เด‡เดคเต เด’เดฐเต เดชเดฐเดฟเดนเดพเดฐเดฎเดพเตผเด—เตเด—เด‚ เด•เดฃเตเดŸเต†เดคเตเดคเดพเดจเตเด‚ เดˆ เดฒเต‡เด–เดจเด‚/เดฎเดพเดจเตเดตเตฝ เดŽเดดเตเดคเดพเดจเตเด‚ เดžเด™เตเด™เดณเต† เดชเตเดฐเต‡เดฐเดฟเดชเตเดชเดฟเดšเตเดšเต.

เด‡เดคเต เด’เดฐเตเดชเด•เตเดทเต‡ เดฎเดฟเด•เดšเตเดš เดชเดฐเดฟเดถเต€เดฒเดจเดฎเดฒเตเดฒ, เดชเด•เตเดทเต‡ เดˆ เดชเดฐเดฟเดนเดพเดฐเด‚ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดธเต—เด•เดฐเตเดฏเดชเตเดฐเดฆเดตเตเด‚ เดฒเดณเดฟเดคเดตเตเดฎเดพเดฃเต†เดจเตเดจเต เดคเต‹เดจเตเดจเตเดจเตเดจเต.

เดŸเตเดฏเต‚เดŸเตเดŸเต‹เดฑเดฟเดฏเดฒเดฟเดจเดพเดฏเดฟ, เดฆเดฏเดตเดพเดฏเดฟ เดชเต‚เดšเตเดš เด•เดพเดฃเตเด•.

เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเต†เดทเต€เดจเดฟเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ:

  • เดชเตˆเดคเตเดคเตบ
  • เดœเดฟเดฑเตเดฑเดฟเดจเต†
  • ssh เด•เต€เด•เตพ เด‰เดณเตเดณ เดซเดฏเตฝ

เดŽเดฒเตเดฒเดพ เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเดฟเดฒเตเด‚ เด“เดŸเตเดŸเต‹เดฎเดพเดฑเตเดฑเดฟเด•เต เด—เดŸเตเดŸเต เดชเตเตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดฑเต† เดชเตŠเดคเตเดตเดพเดฏ เดคเดคเตเดตเด‚, เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด’เดฐเต เดฎเต†เดทเต€เตป เด†เดตเดถเตเดฏเดฎเดพเดฃเต, เด…เดคเดฟเตฝ เด…เตปเดธเดฟเดฌเดฟเตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด‚. เดˆ เดฎเต†เดทเต€เดจเดฟเตฝ เดจเดฟเดจเตเดจเต, ansible git pull เด•เดฎเดพเตปเดกเตเด•เตพ เด…เดฏเดฏเตโ€Œเด•เตเด•เตเด•เดฏเตเด‚ เด…เดชเตโ€Œเดกเต‡เดฑเตเดฑเต เดšเต†เดฏเตโ€Œเดค เดธเต‡เดตเดจเด‚ เดชเตเดจเดฐเดพเดฐเด‚เดญเดฟเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดˆ เด†เดตเดถเตเดฏเด™เตเด™เตพเด•เตเด•เดพเดฏเดฟ, เดžเด™เตเด™เตพ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เตพเด•เตเด•เต เดชเตเดฑเดคเตเดคเต เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เตป เดธเตƒเดทเตเดŸเดฟเด•เตเด•เตเด•เดฏเตเด‚ เด…เดคเดฟเตฝ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดคเต:

  • เดชเตˆเดคเตเดคเตบ
  • เด‰เดคเตเดคเดฐเด‚
  • เด—เดฟเดฑเตเดฑเตเดฒเดพเดฌเต-เดฑเดฃเตเดฃเตผ

เด“เตผเด—เดจเตˆเดธเต‡เดทเดฃเตฝ เดชเตเดฐเดถเตเดจเด™เตเด™เดณเดฟเตฝ เดจเดฟเดจเตเดจเต - เดจเดฟเด™เตเด™เตพ gitlab-runner เดฐเดœเดฟเดธเตเดฑเตเดฑเตผ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, ssh-keygen เด‰เดฃเตเดŸเดพเด•เตเด•เตเด•, เดˆ เดฎเต†เดทเต€เดจเตเดฑเต† เดชเตŠเดคเต ssh เด•เต€ เด…เดชเตโ€Œเดฒเต‹เดกเต เดšเต†เดฏเตเดฏเตเด• .ssh/authorized_keys เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเต†เดทเต€เดจเดฟเตฝ, เดฎเดพเดธเตเดฑเตเดฑเตผ เดฎเต†เดทเต€เดจเดฟเตฝ เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดจเดพเดฏเดฟ เดชเต‹เตผเดŸเตเดŸเต 22 เดคเตเดฑเด•เตเด•เตเด•.

เด‡เดจเดฟ เดจเดฎเตเด•เตเด•เต ansible เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเดพเด‚

เดธเดพเดงเตเดฏเดฎเดพเดฏเดคเต†เดฒเตเดฒเดพเด‚ เด“เดŸเตเดŸเต‹เดฎเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเตเด• เดŽเดจเตเดจเดคเดพเดฃเต เดžเด™เตเด™เดณเตเดŸเต† เดฒเด•เตเดทเตเดฏเด‚ เดŽเดจเตเดจเดคเดฟเดจเดพเตฝ. เดซเดฏเดฒเดฟเตฝ /etc/ansible/ansible.cfg เดžเด™เตเด™เตพ เดตเดฐเดฟ เด…เตบเด•เดฎเดจเตเดฑเต เดšเต†เดฏเตเดฏเตเด‚ host_key_checking = Falseเด…เดคเดฟเดจเดพเตฝ เดชเตเดคเดฟเดฏ เดฎเต†เดทเต€เดจเตเด•เดณเตเดŸเต† เดธเตเดฅเดฟเดฐเต€เด•เดฐเดฃเด‚ เด…เตปเดธเดฟเดฌเดฟเตพ เด†เดตเดถเตเดฏเดชเตเดชเต†เดŸเตเดจเตเดจเดฟเดฒเตเดฒ.

เด…เดŸเตเดคเตเดคเดคเดพเดฏเดฟ, เดจเดฟเด™เตเด™เตพ เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดจเดพเดฏเดฟ เดธเตเดตเดฏเดฎเต‡เดต เด’เดฐเต เด‡เตปเดตเต†เดจเตเดฑเดฑเดฟ เดซเดฏเตฝ เดœเดจเดฑเต‡เดฑเตเดฑเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต, เด…เดตเดฟเดŸเต† เดจเดฟเดจเตเดจเต เดจเดฟเด™เตเด™เตพ เดœเดฟเดฑเตเดฑเต เดชเตเตพ เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸ เดฎเต†เดทเต€เดจเตเด•เดณเตเดŸเต† เดเดชเดฟ เดŽเดŸเตเด•เตเด•เตเด‚.

Hetzner's 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 - เดทเต†เตฝ เดฎเตŠเดกเตเดฏเต‚เตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดจเต‹เดŸเต เดชเดฑเดฏเตเด•
  • -เดŽ เดŽเดจเตเดจเดคเดพเดฃเต เดตเดพเดฆเด‚. เดเดคเต เด•เดฎเดพเตปเดกเตเด‚ เด‡เดตเดฟเดŸเต† เดจเตฝเด•เดพเด‚
  • เด—เตเดฐเต‚เดชเตเดชเต - เดจเดฟเด™เตเด™เดณเตเดŸเต† เด•เตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดจเตเดฑเต† เดชเต‡เดฐเต. เดŽเดฒเตเดฒเดพ เด•เตเดฒเดธเตเดฑเตเดฑเดฑเตเด•เดณเดฟเดฒเตเด‚ เด‡เดคเต เดšเต†เดฏเตเดฏเต‡เดฃเตเดŸเดคเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด—เตเดฐเต‚เดชเตเดชเต เดŽเดฒเตเดฒเดพเดฎเดพเดฏเดฟ เดฎเดพเดฑเตเดฑเตเด•

เดจเดฎเตเด•เตเด•เต เดฎเตเดจเตเดจเต‹เดŸเตเดŸเต เดชเต‹เด•เดพเด‚ - เดจเดฎเตเดฎเตเดŸเต† เดตเต†เตผเดšเตเดตเตฝ เดฎเต†เดทเต€เดจเตเด•เดณเดฟเตฝ เดœเดฟเดฑเตเดฑเต เดชเตเตพ เดšเต†เดฏเตเดฏเดพเตป เดถเตเดฐเดฎเดฟเด•เตเด•เดพเด‚:

/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-เตฝ เดชเต‹เดฏเดฟ เดชเตเดฐเต‹เดœเด•เตเดฑเตเดฑเดฟเตฝ เด’เดฐเต เดซเดฏเตฝ เด‰เดฃเตเดŸเดพเด•เตเด•เดพเด‚ .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

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•