เบเปเปเบเบปเบเบเปเบญเบเบซเบเปเบฒเบเบตเปเบเปเบญเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฝเบเบเบทเปเบกเบซเบผเบดเปเบ Ansible เบซเบผเบฒเบเบญเบฑเบเปเบเบทเปเบญเบเบฐเบเบฝเบกเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเปเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Rails. เปเบฅเบฐ, เปเบเบฑเบเปเบฅเบทเปเบญเบเปเบเบเบเบตเป, เบเปเบญเบเบเปเปเบเบปเบเบเบนเปเบกเบทเบเบฑเปเบเบเบญเบเปเบเบเบเบฑเปเบเบเบญเบเบเปเบฒเบเป. เบเปเบญเบเบเปเปเบเปเบญเบเบเบฒเบเบเบฑเบเบฅเบญเบเบเบทเปเบกเบซเบผเบตเปเบเบเบญเบเบเบปเบเบญเบทเปเบเปเบเบเบเบตเปเบเปเปเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบทเปเบ, เปเบฅเบฐเปเบเบเบตเปเบชเบธเบเบเปเบญเบเบเปเบญเบเบญเปเบฒเบเปเบญเบเบฐเบชเบฒเบ, เปเบเบฑเบเบเบธเบเบขเปเบฒเบเบเปเบงเบเบเบปเบเปเบญเบ. เบเบฒเบเบเบตเบเปเบญเบเบชเบฒเบกเบฒเบเบเปเบงเบเบเบนเปเปเบเบเบนเปเบซเบเบถเปเบเปเบฅเบฑเปเบเบเบฐเบเบงเบเบเบฒเบเบเบตเปเบเปเบงเบเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเบเบปเบเบเบงเบฒเบกเบเบตเป.
เบชเบดเปเบเบเปเบฒเบญเบดเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบกเปเบเบงเปเบฒ ansible เปเบซเปเบเปเบฒเบเบกเบตเบเบฒเบเปเบเปเบเบญเบเบเบตเปเบชเบฐเบเบงเบเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเบเปเบฒเบเบปเบเปเบงเปเบฅเปเบงเบเบซเบเปเบฒเบเปเบฝเบงเบเบฑเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบเปเบฒเบ SSH. เบเปเปเบกเบต magic เบขเบนเปเบเบตเปเบเบตเป, เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบดเบเบเบฑเปเบ plugin เปเบฅเบฐเปเบเปเบฎเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเบขเบธเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบญเบเบเปเบฒเบเบเบฑเบ docker, เบเบฒเบเบเบดเบเบเบฒเบกเปเบฅเบฐเบชเบดเปเบเบเบตเปเบญเบทเปเบเปเบญเบญเบเบเบฒเบเบเปเบญเบ. เปเบเบทเปเบญเบเบฝเบเบเบปเบเบฅเบฐเบเบญเบ, เปเบเบปเปเบฒเบเปเบญเบเบฎเบนเปเบงเปเบฒเปเบเบปเปเบฒเบขเบฒเบเปเบฎเบฑเบเบญเบฑเบเปเบ เปเบฅเบฐ เปเบฎเบฑเบเปเบเบงเปเบ. เบเบฑเปเบเปเบกเปเบเปเบซเบเบเบปเบเบเบตเปเบเปเบญเบเบเปเปเบเปเปเบเบเบฑเบเบเบทเปเบกเบซเบผเบดเปเบเบเบตเปเบเบฝเบกเบเปเบญเบกเบเบฒเบ GitHub, เบซเบผเบทเบเบปเบเบเบงเบฒเบกเปเบเบฑเปเบ: "เบเบฑเบเบฅเบญเบเปเบฅเบฐเปเบฅเปเบ, เบกเบฑเบเบเบฐเปเบฎเบฑเบเบงเบฝเบ."
เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบซเบเบฑเบ?
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบงเบปเปเบฒเบกเบฒเปเบฅเปเบง, เปเบเบทเปเบญเบเบฝเบเบเบทเปเบกเบซเบผเบตเปเบ, เบเปเบฒเบ เบเบณ เปเบเบฑเบเบเปเบญเบเบฎเบนเปเบงเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเปเบฎเบฑเบเปเบฅเบฐเปเบฎเบฑเบเปเบเบงเปเบ. เปเบซเปเบเบฑเบเบชเบดเบเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบซเบเบฑเบ. เบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ Rails เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเบญเบเบเบฒเบเบเบธเบเบฅเบฐเบเบปเบเบซเบผเบฒเบ: nginx, postgresql (redis, เปเบฅเบฐเบญเบทเปเบเป). เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบชเบฐเบเบฑเบเบชเบฐเปเบเบฒเบฐเบเบญเบ ruby. เบกเบฑเบเบเบตเบเบตเปเบชเบธเบเบเบตเปเบเบฐเบเบดเบเบเบฑเปเบเบกเบฑเบเบเปเบฒเบ rbenv (rvm, asdf ... ). เบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเปเปเบเบฑเบเบเบนเปเปเบเปเบฎเบฒเบเปเบกเปเบเบชเบฐเปเบซเบกเบตเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเปเปเบเบต, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเบเบนเปเปเบเปเปเบเบเบเปเบฒเบเบซเบฒเบเปเบฅเบฐเบเปเบฒเบเบปเบเบชเบดเบเบเบดเบเบญเบเบฅเบฒเบง. เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบญเบฑเบเปเบซเบฅเบเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบชเปเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบเบฑเบเบฅเบญเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบ nginx, postgres, เปเบฅเบฐเบญเบทเปเบเปเปเบฅเบฐเปเบฅเบตเปเบกเบเบปเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบซเบผเบปเปเบฒเบเบตเปเบเบฑเบเบซเบกเบปเบ.
เบเบฑเปเบเบเบฑเปเบ, เบฅเปเบฒเบเบฑเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบกเปเบเบเบฑเปเบเบเปเปเปเบเบเบตเป:
- เปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเบฑเบเบฎเบฒเบ
- เบเบดเบเบเบฑเปเบเบเบธเบเบฅเบฐเบเบปเบ
- เบชเปเบฒเบเบเบนเปเปเบเปเปเบซเบกเป, เบเปเบฒเบเบปเบเบชเบดเบ, เบฅเบฐเบซเบฑเบ ssh
- เบเบฑเปเบเบเปเบฒเบเบธเบเบฅเบฐเบเบปเบ (nginx เปเบฅเบฐเบญเบทเปเบเป) เปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเปเบซเปเปเบเบปเบฒเปเบเบปเปเบฒ
- เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบนเปเปเบเปเปเบเบเบฒเบเบเปเปเบกเบนเบ (เบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเบเบฒเบเบเปเปเบกเบนเบเปเบเปเบเบฑเบเบเบต)
- เปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเบฑเบเบเบนเปเปเบเปเปเบซเบกเป
- เบเบดเบเบเบฑเปเบ rbenv เปเบฅเบฐ ruby
- เบเบฒเบเบเบดเบเบเบฑเปเบ bundler เปเบเป
- เบเบณเบฅเบฑเบเบญเบฑเบเปเบซเบฅเบเบฅเบฐเบซเบฑเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ
- เปเบเบตเบเบเบปเบงเปเบเบตเบเปเบงเบต Puma
เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบเบฑเปเบเบเบญเบเบชเบธเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเปเบเป capistrano, เบขเปเบฒเบเบซเบเปเบญเบเบญเบญเบเบเบฒเบเบเปเบญเบเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเบฑเบเบฅเบญเบเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒเปเบเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเปเบญเบ, เบเปเบฝเบเบเบฒเบเบเปเบญเบเบเปเบงเบ symlink เปเบกเบทเปเบญเบเบฐเบชเบปเบเบเบปเบเบชเปเบฒเปเบฅเบฑเบ, เบเบฑเบเบฅเบญเบ configs เบเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเปเบเปเบฎเปเบงเบกเบเบฑเบ, restart puma, เปเบฅเบฐเบญเบทเปเบเป. เบเบฑเบเบซเบกเบปเบเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบเปเบเป Ansible, เปเบเปเปเบเบฑเบเบซเบเบฑเบ?
เปเบเบเบชเปเบฒเบเปเบเบฅเป
Ansible เบกเบตเบเบงเบฒเบกเปเบเบฑเปเบเบเบฑเบ
Playbook เบเปเบฒเบโเบเบฒเบโ
Playbook เปเบกเปเบเปเบเบฅเป yml เบเบตเป, เปเบเบเปเบเป syntax เบเบดเปเบชเบ, เบญเบฐเบเบดเบเบฒเบเบชเบดเปเบเบเบตเป Ansible เบเบงเบเปเบฎเบฑเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบ. เบกเบฒเบชเปเบฒเบเบเบถเปเบกเบซเบผเบดเปเบเบเบณเบญเบดเบเบเบตเปเบเปเปเปเบฎเบฑเบเบซเบเบฑเบเปเบฅเบตเบ:
---
- name: Simple playbook
hosts: all
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเปเบงเบปเปเบฒเบงเปเบฒ playbook เบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบญเบตเปเบเบงเปเบฒ Simple Playbook
เปเบฅเบฐเบงเปเบฒเปเบเบทเปเบญเปเบเบเบญเบเบกเบฑเบเบเบงเบเบเบฐเบเบทเบเบเบฐเบเบดเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบฑเบเบซเบกเบปเบ. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบฑเบเบเบถเบเบกเบฑเบเปเบงเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต / ansible เบเปเบงเบเบเบทเป playbook.yml
เปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเปเบฅเปเบ:
ansible-playbook ./playbook.yml
PLAY [Simple Playbook] ************************************************************************************************************************************
skipping: no hosts matched
Ansible เปเบงเบปเปเบฒเบงเปเบฒเบกเบฑเบเบเปเปเบฎเบนเปเบงเปเบฒเปเบเบปเปเบฒเบเบฒเบเปเบเบเบตเปเบเบปเบเบเบฑเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบฑเบเบซเบกเบปเบ. เบเบงเบเปเบเบปเบฒเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบฅเบฐเบเบธเปเบงเปเปเบเบเบดเปเบชเบ
เปเบซเปเบชเปเบฒเบเบกเบฑเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต ansible เบเบฝเบงเบเบฑเบ:
123.123.123.123
เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฝเบเปเบเปเบเปเบฒเบเบปเบเปเบเบปเปเบฒเบเบฒเบ (เปเบเบเบชเบฐเปเบเบฒเบฐเปเบเบปเปเบฒเบเบฒเบเบเบญเบ VPS เบเบญเบเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบชเบญเบ, เบซเบผเบทเบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบปเบเบเบฐเบเบฝเบ localhost) เปเบฅเบฐเบเบฑเบเบเบถเบเบกเบฑเบเบเบฒเบเปเบเปเบเบทเป. inventory
.
เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบญเบเปเบฅเปเบ ansible เบเปเบงเบเปเบเบฅเป inventory:
ansible-playbook ./playbook.yml -i inventory
PLAY [Simple Playbook] ************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************************
PLAY RECAP ************************************************************************************************************************************
เบเปเบฒเบเปเบฒเบเบกเบต ssh เปเบเบปเปเบฒเปเบเบดเบเปเบฎเบเบเบตเปเบฅเบฐเบเบธ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ ansible เบเบฐเปเบเบทเปเบญเบกเบเปเปเปเบฅเบฐเปเบเบฑเบเบเปเบฒเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบฅเบฐเบเบปเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ. (เบซเบเปเบฒ default TASK [Gathering Facts]) เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบเบฐเปเบซเปเบเบปเบเบฅเบฒเบเบเบฒเบเบชเบฑเปเบเปเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ (PLAY RECAP).
เปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเปเบเบทเปเบเบนเปเปเบเปเบเบฒเบเปเบเปเบเบฒเบเบเบตเปเบเปเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบ. เบชเปเบงเบเบซเบผเบฒเบเบกเบฑเบเบญเบฒเบเบเบฐเบเปเปเบขเบนเปเปเบเปเบเบปเปเบฒเบเบฒเบ. เปเบเปเบเบฅเป playbook, เบเปเบฒเบเบชเบฒเบกเบฒเบเบฅเบฐเบเบธเบเบนเปเปเบเปเปเบเบเบตเปเบเบฐเปเบเปเปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเปเบเบเปเบเปเบเปเบฒเบชเบฑเปเบ remote_user. เบเบญเบเบเบฒเบเบเบตเป, เบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเบฅเบฐเบเบปเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบเบกเบฑเบเบเบฐเบเปเปเบเปเบฒเปเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบเปเบฅเบฐเบเปเบฒเบเบเปเปเบเบงเบเปเบชเบเปเบงเบฅเบฒเปเบเบฑเบเบเปเบฒเบกเบฑเบ. เบงเบฝเบเบเบฒเบเบเบตเปเบเบฑเบเบชเบฒเบกเบฒเบเบเบทเบเบเบดเบเปเบเปเบเบฒเบเปเบเป:
---
- name: Simple playbook
hosts: all
remote_user: root
become: true
gather_facts: no
เบฅเบญเบเปเบฅเปเบ playbook เบญเบตเบเบเบฑเปเบ เปเบฅเบฐเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบฎเบฑเบเบงเบฝเบ. (เบเปเบฒโเบซเบฒเบโเบงเปเบฒโเบเปเบฒเบโเบฅเบฐโเบเบธโเบเบนเปโเปเบเปโเบฎเบฒเบโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒเบโเบเบฑเบโเบเปเบฒโเปเบเบฑเบโเบเปเบญเบโเปเบเปโเบเปเบฒโเบเบปเบโเบเบฒเบโเบเบฒเบโเปเบเบฑเบโ: เบเปเบฒโเปเบเบฐโเบเปเบฒโเบเบตเปโเปเบเปโเบเบดเบโเปเบโเบเปเบฒโเบชเบฑเปเบโเบเบตเปโเบเบฐโเปเบเปโเบฎเบฑเบโเบชเบดเบโเบชเบนเบโ. เบเบฑเปเบโเบเบตเปโเปเบเปโเบเบฝเบโเปเบงเปโเปเบโเปเบญโเบเบฐโเบชเบฒเบโ: become set to โtrueโ/โyesโ to activate privilege escalation.
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบฑเบเบเปเปเบเบฑเบเปเบเบเบเบฑเบเบซเบกเบปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ).
เบเบฒเบเบเบตเบเปเบฒเบเบญเบฒเบเบเบฐเปเบเปเบฎเบฑเบเบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเปเบเบตเบเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒ ansible เบเปเปเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบเบปเบงเปเบ Python, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเบเบปเบเบกเบฑเบเบเปเบงเบเบเบปเบเปเบญเบ:
ansible_python_interpreter: /usr/bin/python3
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเบญเบเบซเบฒเบเปเบญเบเบเบตเปเบเปเบฒเบเบกเบต python เบเปเบงเบเบเปเบฒเบชเบฑเปเบ whereis python
.
เบเบฒเบเบเบดเบเบเบฑเปเบเบเบธเบเบฅเบฐเบเบปเบ
เบเบฒเบเปเบเบเบขเบฒเบเบกเบฒเบเบเบฐเบเบฒเบเบเบญเบ Ansible เบเบฐเบเบญเบเบกเบตเบซเบผเบฒเบเปเบกเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบธเบเบฅเบฐเบเบปเบเบเปเบฒเบเป, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบฝเบ bash scripts เบชเปเบฒเบฅเบฑเบเปเบซเบเบเบปเบเปเบเบเปเปเบเบฒเบก. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบซเบเบถเปเบเปเบเปเบกเบเบนเบเปเบซเบผเบปเปเบฒเบเบตเปเปเบเบทเปเบญเบเบฑเบเบเบธเบเบฅเบฐเบเบปเบเปเบฅเบฐเบเบดเบเบเบฑเปเบเบเบธเบเบฅเบฐเบเบปเบ. เบเปเบญเบเบกเบต Ubuntu Linux เปเบ VPS เบเบญเบเบเปเบญเบ, เบชเบฐเบเบฑเปเบเปเบเบทเปเบญเบเบดเบเบเบฑเปเบเปเบเบฑเบเปเบเบฑเบเบเบตเปเบเปเบญเบเปเบเป apt-get
ะธ
เบกเบฒเปเบชเบตเบกเบเบถเปเบกเบซเบผเบดเปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเปเบฒเบงเบฝเบเบเบณเบญเบดเบ:
---
- name: Simple playbook
hosts: all
remote_user: root
become: true
gather_facts: no
tasks:
- name: Update system
apt: update_cache=yes
- name: Install system dependencies
apt:
name: git,nginx,redis,postgresql,postgresql-contrib
state: present
Task เปเบกเปเบเปเบเปเบเบญเบเปเบเบฑเบเบงเบฝเบเบเบตเป Ansible เบเบฐเบเบฐเบเบดเบเบฑเบเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเบซเปเบฒเบเปเบเบชเบญเบเบซเบผเบตเบ. เบเบงเบเปเบฎเบปเบฒเบเบฑเปเบเบเบทเปเปเบซเปเปเปเบฒเบงเบฝเบเปเบเบทเปเบญเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบดเบเบเบฒเบกเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบญเบเบกเบฑเบเบขเบนเปเปเบเบเบฑเบเบเบถเบ. เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบญเบฐเบเบดเบเบฒเบ, เบเบฒเบเบเปเบฒเปเบเป syntax เบเบญเบเปเบกเบเบนเบเบชเบฐเปเบเบฒเบฐเปเบเบซเบเบถเปเบ, เบกเบฑเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเปเบเบงเปเบ. เปเบโเบเปโเบฅเบฐโเบเบตโเบเบตเป apt: update_cache=yes
- เปเบงเบปเปเบฒเบงเปเบฒเบเบฐเบเบฑเบเบเบธเบเบเบธเบเบฅเบฐเบเบปเบเปเบเบเปเบเปเปเบกเบเบนเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก. เบเปเบฒเบชเบฑเปเบเบเบตเบชเบญเบเปเบกเปเบเบชเบฑเบเบชเบปเบเบซเบผเบฒเบ. เบเบงเบเปเบฎเบปเบฒเบเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบฒเบเบซเบธเปเบกเบซเปเปเปเบซเปเบเบฑเบเปเบกเบเบนเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบกเปเบฅเบฐเปเบงเบปเปเบฒเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบกเปเบ state
เบเบงเบเบเบฐเบเบฒเบเปเบเบฑเบ present
, เบเบฑเปเบเปเบกเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบงเบปเปเบฒเบงเปเบฒเบเบดเบเบเบฑเปเบเบเบธเบเปเบซเบผเบปเปเบฒเบเบตเป. เปเบเบเบฒเบเบเบตเปเบเปเบฒเบเบเบทเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบญเบเบเบงเบเปเบเบปเบฒเปเบซเปเบฅเบถเบเบเบงเบเบกเบฑเบ, เบซเบผเบทเบเบฑเบเบเบธเบเบเบงเบเบกเบฑเบเปเบเบเบเบฒเบเบเปเบฝเบเบเบฝเบเปเบเป state
. เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบงเปเบฒเบชเปเบฒเบฅเบฑเบ rails เปเบฎเบฑเบเบงเบฝเบเบเบฑเบ postgresql เบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเบธเบ postgresql-contrib, เบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเบฅเบฑเบเบเบดเบเบเบฑเปเบเปเบเบเบฑเบเบเบธเบเบฑเบ. เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฎเบนเปเปเบฅเบฐเปเบฎเบฑเบเบชเบดเปเบเบเบตเป; ansible เบเบญเบเบกเบฑเบเปเบญเบเบเบฐเบเปเปเปเบฎเบฑเบเบชเบดเปเบเบเบตเป.
เบฅเบญเบเปเบฅเปเบ playbook เบญเบตเบเบเบฑเปเบ เปเบฅเบฐเบเบงเบเปเบเบดเปเบเบงเปเบฒเปเบเบฑเบเปเบเบฑเบเบเบทเบเบเบดเบเบเบฑเปเบเปเบฅเปเบง.
เบเบฒเบเบชเปเบฒเบเบเบนเปเปเบเปเปเบซเบกเป.
เปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเบเบนเปเปเบเป, Ansible เบเบฑเบเบกเบตเปเบกเบเบนเบ - เบเบนเปเปเบเป. เบเปเปเบซเปเปเบเบตเปเบกเบญเบตเบเบซเบเบถเปเบเบงเบฝเบเบเบฒเบ (เบเปเบญเบเปเบเปเปเบเบทเปเบญเบเบชเปเบงเบเบเบตเปเบฎเบนเปเปเบฅเปเบงเบเบญเบ playbook เบขเบนเปเบซเบฅเบฑเบเบเปเบฒเปเบซเบฑเบเปเบเบทเปเบญเบเปเปเปเบซเปเบชเปเบฒเปเบเบปเบฒเบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบธเบเปเบเบฑเปเบ):
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Add a new user
user:
name: my_user
shell: /bin/bash
password: "{{ 123qweasd | password_hash('sha512') }}"
เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเบเบนเปเปเบเปเปเบซเบกเป, เบเปเบฒเบเบปเบ schell เปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบกเบฑเบ. เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบตเบเบเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบซเบฒเบเปเบฒเบเบงเบเบซเบเบถเปเบ. เบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบเบทเปเบเบนเปเปเบเปเบเปเบญเบเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ? เปเบฅเบฐเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบฑเบเบเปเปเบเบงเบฒเบกเบเบตเปเบเบฑเบเปเบเบเบขเบนเปเปเบ playbook เปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเปเปเบเบตเบซเบผเบฒเบ. เปเบเบทเปเบญเปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ, เปเบซเปเปเบชเปเบเบทเปเบเบนเปเปเบเปเปเบฅเบฐเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเบเบปเบงเปเบ, เปเบฅเบฐเปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบปเบเบเบงเบฒเบกเบเปเบญเบเบเบฐเบชเบฐเปเบเบเบงเบดเบเบตเบเบฒเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบฅเบฐเบซเบฑเบเบเปเบฒเบ.
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
เบเบปเบงเปเบเบเบทเบเบเบฑเปเบเปเบงเปเปเบเบเบถเปเบกเบซเบผเบดเปเบเปเบเบเปเบเปเบงเบปเบเปเบฅเบฑเบ curly เบชเบญเบเปเบเบปเปเบฒ.
เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบตเปเบเบญเบเบเปเบฒเบเบญเบเบเบปเบงเปเบเปเบเปเบญเบเบฐเบชเบฒเบเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ:
123.123.123.123
[all:vars]
user=my_user
user_password=123qweasd
เบเบฐเบฅเบธเบเบฒเบชเบฑเบเปเบเบเบเปเบฒเบชเบฑเปเบ [all:vars]
- เบกเบฑเบเบเบญเบเบงเปเบฒเบเบฅเบฑเบญเบเบเปเปเปเบเบเบญเบเบเปเปเบเบงเบฒเบกเปเบกเปเบเบเบปเบงเปเบ (vars) เปเบฅเบฐเบเบงเบเบกเบฑเบเปเบเปเปเบเปเบเบฑเบเปเบฎเบเบเบฑเบเบซเบกเบปเบ (เบเบฑเบเบซเบกเบปเบ).
เบเบฒเบเบญเบญเบเปเบเบเบเบฑเบเบซเบเปเบฒเบชเบปเบเปเบ "{{ user_password | password_hash('sha512') }}"
. เบชเบดเปเบเบเบตเปเปเบกเปเบเบงเปเบฒ ansible เบเปเปเปเบเปเบเบดเบเบเบฑเปเบเบเบนเปเปเบเปเบเปเบฒเบ user_add
เบเบทเบเบฑเบเบงเปเบฒเปเบเบปเปเบฒเบเบฐเปเบฎเบฑเบเบกเบฑเบเบเปเบงเบเบเบปเบเปเบญเบ. เปเบฅเบฐเบกเบฑเบเบเปเบงเบเบเบฐเบขเบฑเบเบเปเปเบกเบนเบเบเบฑเบเบซเบกเบปเบเปเบเบเบเบปเบ, เบเบถเปเบเปเบเบฑเบเปเบซเบเบเบปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเปเบฝเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเปเบเบฑเบ hash เบฅเปเบงเบเบซเบเปเบฒ, เบเบถเปเบเปเบเบฑเบเบเปเบฒเบชเบฑเปเบเบเบตเปเปเบฎเบฑเบ.
เปเบซเปเปเบเบตเปเบกเบเบนเปเปเบเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเปเบเบเบธเปเบก sudo. เบขเปเบฒเบเปเบเบเปเปเบเบฒเบก, เบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบซเปเปเบเปเปเบเบงเปเบฒเบเบธเปเบกเบเบฑเปเบเบเปเบฒเบงเบกเบตเบขเบนเปเปเบเบฒเบฐเบงเปเบฒเบเปเปเบกเบตเปเบเบเบฐเปเบฎเบฑเบเบชเบดเปเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ:
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Ensure a 'sudo' group
group:
name: sudo
state: present
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
groups: "sudo"
เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบญเบเบเปเบฒเบเบเปเบฒเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบกเบตเปเบกเบเบนเบเบเบธเปเบกเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบธเปเบก, เบกเบต syntax เบเปเบฒเบเบเบทเบเบฑเบเบเบฑเบ apt. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบเบฝเบเบเปเบเบตเปเบเบฐเบฅเบปเบเบเบฐเบเบฝเบเบเบธเปเบกเบเบตเปเปเบซเปเบเบฑเบเบเบนเปเปเบเป (groups: "sudo"
).
เบกเบฑเบเบเบฑเบเปเบเบฑเบเบเบฐเปเบซเบเบเบเบตเปเบเบฐเปเบเบตเปเบกเบฅเบฐเบซเบฑเบ ssh เปเบซเปเบเบฑเบเบเบนเปเปเบเปเบเบตเปเปเบเบทเปเบญเปเบซเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเบเปเบเปเบกเบฑเบเปเบเบเบเปเปเบกเบตเบฅเบฐเบซเบฑเบเบเปเบฒเบ:
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Ensure a 'sudo' group
group:
name: sudo
state: present
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
groups: "sudo"
- name: Deploy SSH Key
authorized_key:
user: "{{ user }}"
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: present
เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบฒเบเบญเบญเบเปเบเบเปเบกเปเบเบซเบเปเบฒเบชเบปเบเปเบ "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
โ เบกเบฑเบเบเบฑเบเบฅเบญเบเปเบเบทเปเบญเบซเบฒเบเบญเบเปเบเบฅเป id_rsa.pub (เบเบทเปเบเบญเบเบเปเบฒเบเบญเบฒเบเบเบฐเปเบเบเบเปเบฒเบเบเบฑเบ), เบเบฑเปเบเปเบกเปเบ, เบชเปเบงเบเบชเบฒเบเบฒเบฅเบฐเบเบฐเบเบญเบเบเบฐเปเบ ssh เปเบฅเบฐเบญเบฑเบเปเบซเบฅเบเบกเบฑเบเปเบชเปเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเปเบเปเบฎเบฑเบเบญเบฐเบเบธเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบนเปเปเบเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ.
เบเบปเบเบเบฒเบ
เบเบฑเบเบชเบฒเบกเบงเบฝเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเบฒเบเบเปเบฒเปเบเปเบชเบฒเบกเบฒเบเปเบเปเบเบญเบญเบเปเบเบฑเบเบเบธเปเบกเบซเบเบถเปเบเบเบญเบเบซเบเปเบฒเบงเบฝเบ, เปเบฅเบฐเบกเบฑเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบตเบเบตเปเบเบฐเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเบธเปเบกเบเบตเปเปเบเบเบเปเบฒเบเบซเบฒเบเบเบฒเบ playbook เบเบปเปเบเบเปเปเบเบทเปเบญเบเปเปเปเบซเปเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบเบตเบเปเบ. เบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบตเป, Ansible เบกเบต
เบญเบตเบเบเบฒเบกเปเบเบเบชเปเบฒเบเปเบเบฅเปเบเบตเปเบเบตเปเปเบซเปเปเบซเบฑเบเปเบเบเบญเบเบเบปเปเบ, เบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบเปเบญเบเบเบทเบเบเบฑเบเปเบชเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเปเบเบเบเปเบฒเบเบซเบฒเบ, เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบปเบเบเบฒเบเบกเบตเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบเบเบเปเบฒเบเบซเบฒเบเบเบตเปเบกเบตเบเบทเปเบเบฝเบงเบเบฑเบ, เบเบฒเบเปเบเบซเบเปเบฒเบงเบฝเบ, เปเบเบฅเป, เปเบกเปเปเบเบ, เปเบฅเบฐเบญเบทเปเบเป.
เบกเบฒเบชเปเบฒเบเปเบเบเบชเปเบฒเบเปเบเบฅเป: ./ansible/roles/user/tasks/main.yml
(เบเบปเปเบเบเปเปเบกเปเบเปเบเบฅเปเบเบปเปเบเบเปเบเบตเปเบเบฐเบเบทเบเปเบซเบฅเบเปเบฅเบฐเบเบฐเบเบดเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเปเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบ playbook; เปเบเบฅเปเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเบญเบทเปเบเปเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบกเบฑเบเปเบเป). เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบญเบเบงเบฝเบเบเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบเปเบฝเบงเบเบฑเบเบเบนเปเปเบเปเปเบเบซเบฒเปเบเบฅเปเบเบตเป:
# Create user and add him to groups
- name: Ensure a 'sudo' group
group:
name: sudo
state: present
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
groups: "sudo"
- name: Deploy SSH Key
authorized_key:
user: "{{ user }}"
key: "{{ lookup('file', '~/.ssh/id_rsa.pub') }}"
state: present
เปเบ playbook เบเบปเปเบเบเป, เบเปเบฒเบเบเปเบญเบเบฅเบฐเบเบธเบเบฒเบเบเปเบฒเปเบเปเบเบปเบเบเบฒเบเบเบญเบเบเบนเปเปเบเป:
---
- name: Simple playbook
hosts: all
remote_user: root
gather_facts: no
tasks:
- name: Update system
apt: update_cache=yes
- name: Install system dependencies
apt:
name: git,nginx,redis,postgresql,postgresql-contrib
state: present
roles:
- user
เบเบญเบเบเบฒเบเบเบตเป, เบกเบฑเบเบญเบฒเบเบเบฐเปเบฎเบฑเบเปเบซเปเบเบงเบฒเบกเบฎเบนเปเบชเบถเบเบเบตเปเบเบฐเบเบฑเบเบเบธเบเบฅเบฐเบเบปเบเบเปเบญเบเบซเบเปเบฒเบงเบฝเบเบญเบทเปเบเปเบเบฑเบเบซเบกเบปเบ; เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฝเบเบเบทเปเบเบฅเบฑเบญเบ tasks
เปเบโเบเบตเปโเปเบเบปเบฒโเปเบเบปเปเบฒโเปเบเปโเบเบทเบโเบเปเบฒโเบเบปเบโเปเบงเปโเปเบโ pre_tasks
.
เบเบฑเปเบเบเปเบฒ nginx
เบเบงเบเปเบฎเบปเบฒเบเบงเบเบเบฐเบกเบต Nginx เบเบดเบเบเบฑเปเบเบขเบนเปเปเบฅเปเบง; เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบ configure เบกเบฑเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ. เปเบซเปเปเบฎเบฑเบเบเบฑเบเบเบตเปเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบ. เบกเบฒเบชเปเบฒเบเปเบเบเบชเปเบฒเบเปเบเบฅเป:
- ansible
- roles
- nginx
- files
- tasks
- main.yml
- templates
เปเบเบเบฑเบเบเบธเบเบฑเบเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเปเบเบฅเปเปเบฅเบฐเปเบกเปเปเบเบ. เบเบงเบฒเบกเปเบเบเบเปเบฒเบเบฅเบฐเบซเบงเปเบฒเบเบเบงเบเบกเบฑเบเปเบกเปเบเบงเปเบฒ ansible เบเบฑเบเบฅเบญเบเปเบเบฅเปเปเบเบเบเบปเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบ. เปเบฅเบฐเปเบกเปเปเบเบเบเปเบญเบเบกเบตเบเบฒเบกเบชเบฐเบเบธเบ j2 เปเบฅเบฐเบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเบเปเบฒเบเบปเบงเปเบเปเบเบเปเบเปเบงเบปเบเปเบฅเบฑเบ curly double เบเบฝเบงเบเบฑเบ.
เปเบซเปเปเบเบตเบเปเบเป nginx เปเบ main.yml
เปเบเบฅเป. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เบเบงเบเปเบฎเบปเบฒเบกเบตเปเบกเบเบนเบเบฅเบฐเบเบปเบ:
# Copy nginx configs and start it
- name: enable service nginx and start
systemd:
name: nginx
state: started
enabled: yes
เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบเบฝเบเปเบเปเปเบงเบปเปเบฒเบงเปเบฒ nginx เบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ (เบเบฑเปเบเปเบกเปเบ, เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเบกเบฑเบ), เปเบเปเบเบงเบเปเบฎเบปเบฒเปเบงเบปเปเบฒเบเบฑเบเบเบตเบงเปเบฒเบกเบฑเบเบเปเบญเบเบเบทเบเปเบเบตเบเปเบเป.
เบเบญเบเบเบตเปเปเบซเปเบชเบณเปเบเบปเบฒเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ:
# Copy nginx configs and start it
- name: enable service nginx and start
systemd:
name: nginx
state: started
enabled: yes
- name: Copy the nginx.conf
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
backup: yes
- name: Copy template my_app.conf
template:
src: my_app_conf.j2
dest: /etc/nginx/sites-available/my_app.conf
owner: root
group: root
mode: '0644'
เบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ nginx เบเบปเปเบเบเป (เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบญเบปเบฒเบกเบฑเบเปเบเบเบเบปเบเบเบฒเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบ, เบซเบผเบทเบเบฝเบเบกเบฑเบเปเบญเบ). เปเบฅเบฐเบเบฑเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบ sites_available directory (เบญเบฑเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบเปเบเปเปเบเบฑเบเบเบฐเปเบซเบเบ). เปเบเบเปเบฅเบฐเบเบตเบเปเบฒเบญเบดเบ, เบเบงเบเปเบฎเบปเบฒเปเบเปเปเบกเบเบนเบเบชเปเบฒเปเบเบปเบฒเปเบเบทเปเบญเบเบฑเบเบฅเบญเบเปเบเบฅเป (เปเบเบฅเปเบเปเบญเบเบขเบนเปเปเบ /ansible/roles/nginx/files/nginx.conf
). เปเบเบเบตเบชเบญเบ, เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบฅเบญเบเปเบกเปเปเบเบ, เบเบปเบเปเบเบเบเปเบฒเบเบญเบเบเบปเบงเปเบ. เปเบกเปเปเบเบเบเบงเบเบเบฐเบขเบนเปเปเบ /ansible/roles/nginx/templates/my_app.j2
). เปเบฅเบฐเบกเบฑเบเบญเบฒเบเบเบฐเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเป:
upstream {{ app_name }} {
server unix:{{ app_path }}/shared/tmp/sockets/puma.sock;
}
server {
listen 80;
server_name {{ server_name }} {{ inventory_hostname }};
root {{ app_path }}/current/public;
try_files $uri/index.html $uri.html $uri @{{ app_name }};
....
}
เปเบญเบปเบฒเปเบเปเบชเปเบเบฑเบ inserts เปเบเป {{ app_name }}
, {{ app_path }}
, {{ server_name }}
, {{ inventory_hostname }}
โ เปเบซเบผเบปเปเบฒโเบเบตเปโเปเบกเปเบโเบเบปเบงโเปเบโเบเบฑเบโเบซเบกเบปเบโเบเบตเปโเบเปเบฒโเบเบญเบ Ansible เบเบฐโเบเบปเบโเปเบเบโเบเบฒเบโเปเบเบปเปเบฒโเปเบโเปเบโเปเบกเปโเปเบเบโเบเปเบญเบโเบเบตเปโเบเบฐโเบชเปเบฒโเปเบเบปเบฒโ. เบเบตเปเปเบกเปเบเปเบเบฑเบเบเบฐเปเบซเบเบเบเปเบฒเบเปเบฒเบเปเบเป playbook เบชเปเบฒเบฅเบฑเบเบเบธเปเบกเปเบเบปเปเบฒเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบเบปเบงเบขเปเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเบตเปเบกเปเบเบฅเปเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ:
[production]
123.123.123.123
[staging]
231.231.231.231
[all:vars]
user=my_user
user_password=123qweasd
[production:vars]
server_name=production
app_path=/home/www/my_app
app_name=my_app
[staging:vars]
server_name=staging
app_path=/home/www/my_stage
app_name=my_stage_app
เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบง playbook เบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบกเบฑเบเบเบฐเบเบฐเบเบดเบเบฑเบเบงเบฝเบเบเบฒเบเบเบตเปเบเปเบฒเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบชเบญเบเปเบเบปเปเบฒเบเบฒเบ. เปเบเปเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบชเปเบฒเบฅเบฑเบเปเบเบปเปเบฒเบเบฒเบเบเบฑเบเบฅเปเบฒเบเบฑเบ, เบเบปเบงเปเบเบเบฐเปเบเบเบเปเบฒเบเบเบฒเบเบเบฒเบเบเบฐเบฅเบดเบ, เปเบฅเบฐเบเปเปเบเบฝเบเปเบเปเบขเบนเปเปเบเบเบฒเบฅเบฐเบเบปเบเบเบฒเบเปเบฅเบฐ playbooks, เปเบเปเบเบฑเบเบขเบนเปเปเบ configs nginx. {{ inventory_hostname }}
เบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบฐเบเบธเปเบงเปเปเบเปเบญเบเบฐเบชเบฒเบเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ - เบเบตเป
เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบกเบตเปเบเบฅเปเบเบปเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบซเบฅเบฒเบเปเบเบปเปเบฒเบเบฒเบ, เปเบเปเบงเปเบฒเบเบฝเบเปเบเปเบเปเบฒเปเบเบตเบเบเบฒเบเบชเปเบฒเบฅเบฑเบเบเบธเปเบกเบเบฝเบง, เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเปเบงเบเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเป:
ansible-playbook -i inventory ./playbook.yml -l "staging"
เบเบฒเบเปเบฅเบทเบญเบเบญเบทเปเบเปเบกเปเบเบเบฒเบเบกเบตเปเบเบฅเปเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเบเบธเปเบกเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ. เบซเบผเบทเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเบปเบกเบเบปเบเบชเบญเบเบงเบดเบเบตเบเบฒเบเบเปเบฒเบเปเบฒเบเบกเบตเปเบเบปเปเบฒเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบซเบผเบฒเบ.
เปเบซเปเบเบฑเบเบเบทเบเปเบเบซเบฒเบเบฒเบเบเบฑเปเบเบเปเบฒ nginx. เบซเบผเบฑเบเบเบฒเบเบเบฑเบเบฅเบญเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ symlink เปเบ sitest_enabled เบเบฑเบ my_app.conf เบเบฒเบ sites_available. เปเบฅเบฐ restart nginx.
... # old code in mail.yml
- name: Create symlink to sites-enabled
file:
src: /etc/nginx/sites-available/my_app.conf
dest: /etc/nginx/sites-enabled/my_app.conf
state: link
- name: restart nginx
service:
name: nginx
state: restarted
เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบเปเบฒเบเบเบฒเบเบขเบนเปเบเบตเปเบเบตเป - เบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ ansible modules เบเบตเปเบกเบต syntax เบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเบเปเบญเบเบเปเบฒเบ. เปเบเปเบกเบตเบเบธเบเบซเบเบถเปเบ. เบเปเปเบกเบตเบเบธเบเปเบเปเบเบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป nginx เบเบธเบเปเบเบฑเปเบ. เบเปเบฒเบเบชเบฑเบเปเบเบเปเบซเบฑเบเบเปเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเบเบฝเบเบเปเบฒเบชเบฑเปเบเปเบเบฑเปเบ: "เปเบฎเบฑเบเปเบเบเบเบตเป", syntax เปเบเบดเปเบเบเบทเบงเปเบฒ "เบเบตเปเบเบงเบเบเบฐเบกเบตเบชเบฐเบเบฒเบเบฐเบเบตเป". เปเบฅเบฐเบชเปเบงเบเบซเบผเบฒเบเปเบฅเปเบง, เบเบตเปเปเบกเปเบเบงเบดเบเบตเบเบตเป ansible เปเบฎเบฑเบเบงเบฝเบ. เบเปเบฒเบเบธเปเบกเบกเบตเบขเบนเปเปเบฅเปเบง, เบซเบผเบทเบเบธเบเบฅเบฐเบเบปเบเบเบทเบเบเบดเบเบเบฑเปเบเปเบฅเปเบง, ansible เบเบฐเบเบงเบเปเบเบดเปเบเบเบตเปเปเบฅเบฐเบเปเบฒเบกเบซเบเปเบฒเบงเบฝเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เปเบเบฅเปเบเบฐเบเปเปเบเบทเบเบเบฑเบเบฅเบญเบเบเปเบฒเบเบงเบเปเบเบปเบฒเบเบปเบเบเบฑเบเบชเบดเปเบเบเบตเปเบขเบนเปเปเบเปเบเบทเปเบญเบเปเบกเปเบเปเบฒเบเปเบฅเปเบง. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบเปเบเบฐเปเบซเบเบเบเบฒเบเบชเบดเปเบเบเบตเปเปเบฅเบฐ restart nginx เบเบฝเบเปเบเปเบเปเบฒเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเปเบเบทเบเบเปเบฝเบเปเบเบ. เบกเบตเบเปเบฒเบชเบฑเปเบเบฅเบปเบเบเบฐเบเบฝเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบตเป:
# Copy nginx configs and start it
- name: enable service nginx and start
systemd:
name: nginx
state: started
enabled: yes
- name: Copy the nginx.conf
copy:
src: nginx.conf
dest: /etc/nginx/nginx.conf
owner: root
group: root
mode: '0644'
backup: yes
register: restart_nginx
- name: Copy template my_app.conf
template:
src: my_app_conf.j2
dest: /etc/nginx/sites-available/my_app.conf
owner: root
group: root
mode: '0644'
register: restart_nginx
- name: Create symlink to sites-enabled
file:
src: /etc/nginx/sites-available/my_app.conf
dest: /etc/nginx/sites-enabled/my_app.conf
state: link
- name: restart nginx
service:
name: nginx
state: restarted
when: restart_nginx.changed
เบเปเบฒเบซเบเบถเปเบเปเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเบเปเบฝเบเปเบเบ, เบชเปเบฒเปเบเบปเบฒเบเบฐเบเบทเบเปเบฎเบฑเบเปเบฅเบฐเบเบปเบงเปเบเบเบฐเบเบทเบเบฅเบปเบเบเบฐเบเบฝเบ restart_nginx
. เปเบฅเบฐเบเบฝเบเปเบเปเบเปเบฒเบเบปเบงเปเบเบเบตเปเปเบเปเบเบทเบเบฅเบปเบเบเบฐเบเบฝเบเปเบฅเปเบงเบเปเบฅเบดเบเบฒเบเบเบฐเบเบทเบเปเบฅเบตเปเบกเบเบปเปเบเปเบซเบกเป.
เปเบฅเบฐ, เปเบเปเบเบญเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเปเบกเบเบปเบเบเบฒเบ nginx เบเบฑเบ playbook เบเบปเปเบเบเป.
เบเบฒเบเบเบฑเปเบเบเปเบฒ postgresql
เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเบเปเบเป postgresql เปเบเบเปเบเป systemd เบเบทเบเบฑเบเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเปเบฎเบฑเบเบเบฑเบ nginx, เปเบฅเบฐเบเบฑเบเบชเปเบฒเบเบเบนเปเปเบเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเปเปเบเบทเปเบญเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเปเปเบกเบนเบเปเบฅเบฐเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบกเบฑเบเปเบญเบ.
เปเบซเปเบชเปเบฒเบเบเบปเบเบเบฒเบ /ansible/roles/postgresql/tasks/main.yml
:
# Create user in postgresql
- name: enable postgresql and start
systemd:
name: postgresql
state: started
enabled: yes
- name: Create database user
become_user: postgres
postgresql_user:
name: "{{ db_user }}"
password: "{{ db_password }}"
role_attr_flags: SUPERUSER
- name: Create database
become_user: postgres
postgresql_db:
name: "{{ db_name }}"
encoding: UTF-8
owner: "{{ db_user }}"
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเปเปเบญเบฐเบเบดเบเบฒเบเบงเบดเบเบตเบเบฒเบเปเบเบตเปเบกเบเบปเบงเปเบเปเบเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ, เบเบตเปเปเบเปเปเบฎเบฑเบเปเบฅเปเบงเบซเบผเบฒเบเบเบฑเปเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบ syntax เบเบญเบเปเบกเบเบนเบ postgresql_db เปเบฅเบฐ postgresql_user. เบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบเปเบญเบเบฐเบชเบฒเบ. เบเปเบฒเปเบเบฐเบเปเบฒเบเบตเปเบซเบเปเบฒเบชเบปเบเปเบเบเบตเปเบชเบธเบเบขเบนเปเบเบตเปเบเบตเปเปเบกเปเบ become_user: postgres
. เบเบงเบฒเบกเบเบดเบเปเบฅเปเบงเปเบกเปเบเบงเปเบฒเปเบเบเบเปเบฒเปเบฅเบตเปเบกเบเบปเปเบ, เบเบฝเบเปเบเปเบเบนเปเปเบเป postgres เบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเปเปเบกเบนเบ postgresql เปเบฅเบฐเบเบฝเบเปเบเปเบขเบนเปเปเบเบเปเบญเบเบเบดเปเบ. เบเปเบฒเบชเบฑเปเบเบเบตเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเบฐเบเบดเบเบฑเบเบเปเบฒเบชเบฑเปเบเปเบเบเบฒเบกเบเบญเบเบเบนเปเปเบเปเบเบตเป (เบเปเบฒเบเบงเบเปเบฎเบปเบฒเปเบเบปเปเบฒเปเบเบดเบ, เปเบเปเบเบญเบ).
เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบญเบฒเบเบเบฐเบเปเบญเบเปเบเบตเปเบกเปเบเบงเปเบชเป pg_hba.conf เปเบเบทเปเบญเปเบซเปเบเบนเปเปเบเปเปเบซเบกเปเปเบเบปเปเบฒเปเบเบดเบเบเบฒเบเบเปเปเบกเบนเบ. เบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบเบฅเบฑเบเบชเบฐเบเบฐเบเบฝเบงเบเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบเปเบฝเบเบเบฒเบเบเบฑเปเบเบเปเบฒ nginx.
เปเบฅเบฐเปเบเปเบเบญเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเบตเปเบกเบเบปเบเบเบฒเบ postgresql เบเบฑเบ playbook เบเบปเปเบเบเป.
เบเบฒเบเบเบดเบเบเบฑเปเบ ruby โโโโเบเปเบฒเบ rbenv
Ansible เบเปเปเบกเบตเปเบกเบเบนเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบฑเบ rbenv, เปเบเปเบกเบฑเบเบเบทเบเบเบดเบเบเบฑเปเบเปเบเบ cloning git repository. เบเบฑเปเบเบเบฑเปเบ, เบเบฑเบเบซเบฒเบเบตเปเบเบฒเบเปเบเบฑเบเบเบฑเบเบซเบฒเบเบตเปเบเปเปเบกเบตเบกเบฒเบเบเบฐเบเบฒเบเบเบตเปเบชเบธเบ. เบเปเปเบซเปเบชเปเบฒเบเบเบปเบเบเบฒเบเบเบญเบเบเบฒเบ /ansible/roles/ruby_rbenv/main.yml
เปเบฅเบฐเปเบซเปเปเบฅเบตเปเบกเบเบปเปเบเบเบทเปเบกเบกเบฑเบเบญเบญเบ:
# Install rbenv and ruby
- name: Install rbenv
become_user: "{{ user }}"
git: repo=https://github.com/rbenv/rbenv.git dest=~/.rbenv
เบเบงเบเปเบฎเบปเบฒเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเบเปเบฒเปเบเปเบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเปเบเบฑเบเบเบนเปเปเบเปเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบเบเบฒเบเปเบเปเบเบนเปเปเบเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเปเบฒเบเปเบเบทเปเบญเบเบธเบเบเบฐเบชเบปเบเปเบซเบผเบปเปเบฒเบเบตเป. เปเบเบทเปเบญเบเบเบฒเบ rbenv เบเบทเบเบเบดเบเบเบฑเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบฎเบทเบญเบเบเบญเบเบกเบฑเบ, เปเบฅเบฐเบเปเปเปเบกเปเบเบเบปเปเบงเปเบฅเบ. เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเบฑเบเปเบเปเปเบกเบเบนเบ git เปเบเบทเปเบญ clone repository, เบฅเบฐเบเบธ repo เปเบฅเบฐ dest.
เบเปเปเปเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเบฅเบปเบเบเบฐเบเบฝเบ rbenv init เปเบ bashrc เปเบฅเบฐเปเบเบตเปเบก rbenv เบเบฑเบ PATH เบขเบนเปเบเบตเปเบเบฑเปเบ. เบชเปเบฒเบฅเบฑเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบกเบตเปเบกเบเบนเบ lineinfile:
- name: Add rbenv to PATH
become_user: "{{ user }}"
lineinfile:
path: ~/.bashrc
state: present
line: 'export PATH="${HOME}/.rbenv/bin:${PATH}"'
- name: Add rbenv init to bashrc
become_user: "{{ user }}"
lineinfile:
path: ~/.bashrc
state: present
line: 'eval "$(rbenv init -)"'
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเบเบดเบเบเบฑเปเบ ruby_build:
- name: Install ruby-build
become_user: "{{ user }}"
git: repo=https://github.com/rbenv/ruby-build.git dest=~/.rbenv/plugins/ruby-build
เปเบฅเบฐเบชเบธเบเบเปเบฒเบเบเบดเบเบเบฑเปเบ ruby. เบเบตเปเปเบกเปเบเปเบฎเบฑเบเปเบเปเปเบเบเบเปเบฒเบ rbenv, เบเบฑเปเบเปเบกเปเบ, เบเบฝเบเปเบเปเบกเบตเบเปเบฒเบชเบฑเปเบ bash:
- name: Install ruby
become_user: "{{ user }}"
shell: |
export PATH="${HOME}/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
rbenv install {{ ruby_version }}
args:
executable: /bin/bash
เบเบงเบเปเบฎเบปเบฒเปเบงเบปเปเบฒเบงเปเบฒเบเปเบฒเบชเบฑเปเบเปเบเบเบตเปเบเบฐเบเบฐเบเบดเบเบฑเบเปเบฅเบฐเบเปเบงเบเบญเบฑเบเปเบ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒ ansible เบเปเปเปเบเปเบเปเบฒเปเบเบตเบเบเบฒเบเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบขเบนเปเปเบ bashrc เบเปเบญเบเบเบตเปเบเบฐเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบ. เบเบตเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒ rbenv เบเบฐเบเปเบญเบเบเบทเบเบเปเบฒเบเบปเบเปเบเบเบเบปเบเปเบเบชเบฐเบเบดเบเบเบฝเบงเบเบฑเบ.
เบเบฑเบเบซเบฒเบเปเปเปเบเปเบกเปเบเปเบเบทเปเบญเบเบกเบฒเบเบฒเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเปเบฒเบชเบฑเปเบ shell เบเปเปเบกเบตเบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบธเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเปเบเป. เบเบฑเปเบเปเบกเปเบ, เบเบฐเบเปเปเบกเบตเบเบฒเบเบเบงเบเบชเบญเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบงเปเบฒ Ruby เบฎเบธเปเบเบเบตเปเบเบทเบเบเบดเบเบเบฑเปเบเบซเบผเบทเบเปเป. เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเปเบงเบเบเบปเบงเปเบฎเบปเบฒเปเบญเบ:
- name: Install ruby
become_user: "{{ user }}"
shell: |
export PATH="${HOME}/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
if ! rbenv versions | grep -q {{ ruby_version }}
then rbenv install {{ ruby_version }} && rbenv global {{ ruby_version }}
fi
args:
executable: /bin/bash
เบชเบดเปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเบเบฒเบเบเบดเบเบเบฑเปเบ bundle:
- name: Install bundler
become_user: "{{ user }}"
shell: |
export PATH="${HOME}/.rbenv/bin:${PATH}"
eval "$(rbenv init -)"
gem install bundler
เปเบฅเบฐเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ, เปเบเบตเปเบกเบเบปเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ ruby_rbenv เปเบชเปเบเบทเปเบกเบซเบผเบดเปเบเบเบปเปเบเบเป.
เปเบเบฅเปเบเบตเปเปเบเปเบเบเบฑเบ.
เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, เบเบฒเบเบเบดเบเบเบฑเปเบเบชเบฒเบกเบฒเบเบชเบณเปเบฅเบฑเบเปเบเปเบเบตเปเบเบตเป. เบเปเปเปเบ, เบเบฑเบเบซเบกเบปเบเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบกเปเบเปเบเบทเปเบญเบเปเบฒเปเบเบตเบเบเบฒเบ capistrano เปเบฅเบฐเบกเบฑเบเบเบฐเบเบฑเบเบฅเบญเบเบฅเบฐเบซเบฑเบเบเบปเบงเบกเบฑเบเปเบญเบ, เบชเปเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบเบตเปเบเปเบฒเปเบเบฑเบเปเบฅเบฐเปเบเบตเบเบเบปเบงเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ (เบเปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบทเบเบเบฑเปเบเบเปเบฒเบขเปเบฒเบเบเบทเบเบเปเบญเบ). เบขเปเบฒเบเปเบเบเปเบเบฒเบก, capistrano เบกเบฑเบเบเบฐเบเปเบญเบเบเบฒเบเปเบเบฅเปเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบตเปเบกเปเบเบตเบก, เปเบเบฑเปเบ: database.yml
เบซเบผเบท .env
เบเบงเบเปเบเบปเบฒเบชเบฒเบกเบฒเบเบเบทเบเบเบฑเบเบฅเบญเบเบเบทเบเบฑเบเบเบฑเบเปเบเบฅเปเปเบฅเบฐเปเบกเปเปเบเบเบชเปเบฒเบฅเบฑเบ nginx. เบกเบตเบเบฝเบเปเบเปเบซเบเบถเปเบ subtlety. เบเปเบญเบเบเบตเปเบเบฐเบเบฑเบเบฅเบญเบเปเบเบฅเป, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบเปเบเบเบชเปเบฒเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเบชเปเบฒเบฅเบฑเบเบเบงเบเบกเบฑเบ, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
# Copy shared files for deploy
- name: Ensure shared dir
become_user: "{{ user }}"
file:
path: "{{ app_path }}/shared/config"
state: directory
เบเบงเบเปเบฎเบปเบฒเบฅเบฐเบเบธเบเบฝเบเปเบเปเบซเบเบถเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบตเปเบฅเบฐ ansible เบเบฐเบชเปเบฒเบเบเบปเบงเปเบกเปเปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบเบเปเบฒเบเปเบฒเปเบเบฑเบ.
Ansible Vault
เบเบงเบเปเบฎเบปเบฒเปเบเปเบเบปเบเปเบฅเปเบงเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบปเบงเปเบเบชเบฒเบกเบฒเบเบกเบตเบเปเปเบกเบนเบเบฅเบฑเบเปเบเบฑเปเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบเบญเบเบเบนเปเปเบเป. เบเปเบฒเบเปเบฒเบเปเบเปเบชเปเบฒเบ .env
เปเบเบฅเปเบชเปเบฒเบฅเบฑเบเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบ, เปเบฅเบฐ database.yml
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบญเบเบกเบตเบเปเปเบกเบนเบเบเบตเปเบชเปเบฒเบเบฑเบเบซเบผเบฒเบเบเบงเปเบฒเปเบเบปเปเบฒ. เบกเบฑเบเบเบฐเปเบเบฑเบเบเบฒเบเบเบตเบเบตเปเบเบฐเบเบดเบเบเบฑเบเบเบงเบเปเบเบปเบฒเบเบฒเบเบเบฒ prying. เบชเปเบฒเบฅเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบตเป, เบกเบฑเบเบเบทเบเบเปเบฒเปเบเป
เปเบซเปเบชเปเบฒเบเปเบเบฅเปเบชเปเบฒเบฅเบฑเบเบเบปเบงเปเบ /ansible/vars/all.yml
(เบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเบฅเปเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบธเปเบกเปเบเบปเปเบฒเบเบฒเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบทเบเบฑเบเบเบฑเบเบขเบนเปเปเบเปเบเบฅเปเบชเบดเบเบเปเบฒเบเบปเบเบเบฑเบ: production.yml, staging.yml, เปเบฅเบฐเบญเบทเปเบเป).
เบเบธเบเบเบปเบงเปเบเบเบตเปเบเปเบญเบเบเบทเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเปเบญเบเบเบทเบเปเบญเบเปเบเบซเบฒเปเบเบฅเปเบเบตเปเปเบเบเปเบเป syntax yml เบกเบฒเบเบเบฐเบเบฒเบ:
# System vars
user_password: 123qweasd
db_password: 123qweasd
# ENV vars
aws_access_key_id: xxxxx
aws_secret_access_key: xxxxxx
aws_bucket: bucket_name
rails_secret_key_base: very_secret_key_base
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เปเบเบฅเปเบเบตเปเบชเบฒเบกเบฒเบเบเบทเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบ:
ansible-vault encrypt ./vars/all.yml
เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบ, เปเบกเบทเปเบญเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบ, เบเปเบฒเบเบเบฐเบเปเบญเบเบเบฑเปเบเบฅเบฐเบซเบฑเบเบเปเบฒเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบ. เบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบดเปเบเบชเบดเปเบเบเบตเปเบเบฐเบขเบนเปเปเบเปเบเบฅเปเบซเบผเบฑเบเบเบฒเบเปเบเบซเบฒเบเปเบฒเบชเบฑเปเบเบเบตเป.
เบเปเบงเบเบเบงเบฒเบกเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบ ansible-vault decrypt
เปเบเบฅเปเบชเบฒเบกเบฒเบเบเบทเบเบเบญเบเบฅเบฐเบซเบฑเบ, เปเบเปเปเบเปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ.
เบเปเบฒเบเบเปเป เบเบณ เปเบเบฑเบเบเปเบญเบเบเบญเบเบฅเบฐเบซเบฑเบเปเบเบฅเปเปเบเบทเปเบญเปเบฎเบฑเบเบงเบฝเบ. เบเปเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบกเบฑเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเบฅเบฑเบเปเบฅเบฐเบเปเบฒเปเบเบตเบเบเบฒเบ playbook เบเปเบงเบเบเบฒเบเปเบเปเบเบฝเบ --ask-vault-pass
. Ansible เบเบฐเบฎเปเบญเบเบเปเปเบซเปเบกเบตเบฅเบฐเบซเบฑเบเบเปเบฒเบ, เบเบถเบเปเบญเบปเบฒเบเบปเบงเปเบ, เปเบฅเบฐเบเบฐเบเบดเบเบฑเบเบซเบเปเบฒเบงเบฝเบ. เบเปเปเบกเบนเบเบเบฑเบเปเบปเบเบเบฐเบเบฑเบเบเบปเบเบเบทเบเปเบเบปเปเบฒเบฅเบฐเบซเบฑเบเปเบงเป.
เบเปเบฒเบชเบฑเปเบเบเบปเบเบเปเบงเบเบชเบปเบกเบเบนเบเบชเปเบฒเบฅเบฑเบเบซเบผเบฒเบเปเบเบธเปเบกเบเบญเบ hosts เปเบฅเบฐ vault ansible เบเบฐเบกเบตเบฅเบฑเบเบชเบฐเบเบฐเปเบเบฑเปเบเบเบตเป:
ansible-playbook -i inventory ./playbook.yml -l "staging" --ask-vault-pass
เปเบเปเบเปเบญเบเบเบฐเบเปเปเปเบซเปเบเบปเบเปเบฅเบทเปเบญเบเปเบเบฑเบกเบเบญเบ playbooks เปเบฅเบฐเบเบฒเบฅเบฐเบเบปเบเบเบฒเบ, เบเบฝเบเบกเบฑเบเปเบญเบ. เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒ ansible เปเบเบฑเบเปเบเบเบเบฑเปเบ - เบเปเบฒเบเปเบฒเบเบเปเปเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบเปเบญเบเปเบฎเบฑเบ, เบกเบฑเบเบเบฐเบเปเปเปเบฎเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบ.
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com