แแ แช แแกแ แแแแ แฎแแแก แฌแแ แแแแญแแ แแ แ แแแแแแแแ Ansible แกแแแแแแจแ แฌแแแแแก แแแฌแแ แ, แ แแ แกแแ แแแ แ แแแแแแแแแแแแ Rails แแแแแแแชแแแก แแแกแแงแแแแแแแ. แแ, แแแกแแแแแ แแ, แ แแ แแ แแแ แแแแแแ แแแ แขแแแ แแแแแฏ-แแแแแฏ แกแแฎแแแแซแฆแแแแแแ. แแ แแแแแแแ แกแฎแแแกแ แกแแแแแแจแ แฌแแแแแก แแแแแ แแแ แแกแ, แ แแ แแ แแแแแแ แ แ แฎแแแแแแ แแ แแแแแก แแแแแฌแแ แแแแฃแแแแขแแชแแแก แฌแแแแแฎแแ, แงแแแแแคแแ แ แแแแแ แจแแแแแ แแแแแแแ. แแฅแแแ แแแแแฎแแแ แ แแแแแแก แแ แแ แแชแแกแแก แแแฉแฅแแ แแแแจแ แแ แกแขแแขแแแก แแแฎแแแ แแแแ.
แแแ แแแแ, แ แแช แฃแแแ แแแแกแแแแแก, แแ แแก แแก, แ แแ ansible แแแซแแแแ แแแกแแฎแแ แฎแแแแ แแแขแแ แคแแแกแก, แ แแแ แจแแแกแ แฃแแแ แแแฅแแแแแแแแแก แฌแแแแกแฌแแ แแแแกแแแฆแแ แฃแแ แกแแ แแแกแขแแแชแแฃแ แกแแ แแแ (แแ)แแ SSH-แแก แกแแจแฃแแแแแแ. แแฅ แฏแแแแฅแ แแแ แแ แแ แแก, แแฅแแแ แแ แจแแแแซแแแแ แแแแแแกแขแแแแ แแ แแแแแแแขแ แแ แแ แแแแฆแแ แแฅแแแแ แแแแแแแชแแแก แแฃแแแแแแ แจแแคแแ แฎแแแ แแแแแ แแ, แแแแแขแแ แแแแแ แแ แกแฎแแ แกแแแแแแแแแ. แกแแแแแแจแ แฌแแแแแก แแแกแแฌแแ แแ, แแฅแแแ แฃแแแ แแชแแแแ แแฃแกแขแแ แ แแกแ แแแแแแแแ แแกแฃแ แ แแ แ แแแแ แแแแแแแแ แแก. แแแแขแแแแช แแ แแแ แแแแงแแคแแแ GitHub-แแก แแแ แกแแแแแแจแ แฌแแแแแแแ แแ แกแขแแขแแแแแ, แ แแแแ แแชแแ: โแแแแแแแแ แแ แแ แแแฃแจแแแ, แแก แแแฃแจแแแแแกโ.
แ แ แแแญแแ แแแแ?
แ แแแแ แช แฃแแแ แแแฅแแ, แกแแแแแแจแ แฌแแแแแก แแแกแแฌแแ แแ แแฅแแแ แฃแแแ แแชแแแแ แ แแกแ แแแแแแแแ แแกแฃแ แ แแ แ แแแแ แแแแแแแแ แแก. แแแแแ แแแแแแฌแงแแแขแแ แ แ แแแญแแ แแแแ. Rails แแแแแแแชแแแกแแแแก แแแแแญแแ แแแแ แ แแแแแแแแ แกแแกแขแแแแก แแแแแขแ: nginx, postgresql (redis แแ แ.แจ.). แแแ แแ แแแแกแ, แฉแแแ แแแญแแ แแแแ แ แฃแแแก แแแแแ แแขแฃแแ แแแ แกแแ. แฃแแฏแแแแกแแ แแแกแ แแแงแแแแแ rbenv-แแก (rvm, asdf...) แกแแจแฃแแแแแแ. แแ แงแแแแแคแ แแก แแแจแแแแ root แแแแฎแแแ แแแแแแ แงแแแแแแแแก แชแฃแแ แแแแแ, แแกแ แ แแ แแฅแแแ แฃแแแ แจแแฅแแแแ แชแแแแ แแแแฎแแแ แแแแแ แแ แแแแแแแคแแแฃแ แแ แแ แแแกแ แฃแคแแแแแแ. แแแแก แจแแแแแ, แแฅแแแ แฃแแแ แแขแแแ แแแ แฉแแแแ แแแแ แกแแ แแแ แแ, แแแแแแแแ แแ แแแแคแแแฃแ แแชแแแแ nginx-แแกแแแแก, postgres-แแกแแแแก แแ แ.แจ. แแ แแแแฌแงแแ แงแแแแ แแก แกแแ แแแกแ.
แจแแแแแแ, แแแฅแแแแแแแแแก แแแแแแแแแแ แแแ แแกแแแแ:
- แจแแกแแแ แ แแแแ แช root
- แกแแกแขแแแแก แแแแแขแแแแก แแแงแแแแแ
- แจแแฅแแแแแ แแฎแแแ แแแแฎแแแ แแแแแ, แแแแแแแคแแแฃแ แแ แแ แฃแคแแแแแแ, ssh แแแกแแฆแแแ
- แแแแแแแคแแแฃแ แแ แแ แกแแกแขแแแแก แแแแแขแแแ (nginx แแ แ.แจ.) แแ แแแฃแจแแแ แแกแแแ
- แฉแแแ แแฅแแแแ แแแแฎแแแ แแแแแก แแแแแชแแแแ แแแแแจแ (แจแแแแซแแแแ แแแฃแงแแแแแแแแ แจแแฅแแแแ แแแแแชแแแแ แแแแ)
- แจแแแแ แ แแแแ แช แแฎแแแ แแแแฎแแแ แแแแแ
- แแแแแแกแขแแแแ แแ rbenv แแ แ แฃแแ
- แแแแแแแ แแก แแแกแขแแแแชแแ
- แแแแแแแชแแแก แแแแแก แแขแแแ แแแ
- Puma แกแแ แแแ แแก แแแจแแแแ
แฃแคแ แ แแแขแแช, แแแแ แแขแแแแแ แจแแแซแแแแ แแแแแแแแก capistrano-แก แแแแแงแแแแแแ, แงแแแแ แจแแแแฎแแแแแจแ, แแแก แจแแฃแซแแแ แแแแแก แแแแแ แแแ แแแแแจแแแแแก แแแ แแฅแขแแ แแแจแ, แแแแแจแแแแแก แแแแแ แแแ แกแแแแแฃแแแ แฌแแ แแแขแแแฃแแ แแแแแแแแแแกแแก, แแแแคแแแฃแ แแชแแแก แแแแแ แแแ แกแแแ แแ แแแ แแฅแขแแ แแแแแ, แแแแแขแแแ แแแ แแฃแแ แแ แ.แจ. แแก แงแแแแแคแแ แ แจแแแซแแแแ แแแแแแแแก Ansible-แแก แแแแแงแแแแแแ, แแแแ แแ แ แแขแแ?
แคแแแแแก แกแขแ แฃแฅแขแฃแ แ
Ansible แแฅแแก แแแแชแ แ
แแแ แขแแแ แกแแแแแแจแ แฌแแแแ
Playbook แแ แแก yml แคแแแแ, แ แแแแแแช แกแแแชแแแแฃแ แ แกแแแขแแฅแกแแก แแแแแงแแแแแแ แแฆแฌแแ แก แ แ แแ แ แแแแ แฃแแแ แแแแแแแแก Ansible-แแ. แแแแแ แจแแแฅแแแแ แแแ แแแแ แกแแแแแแจแ แฌแแแแ, แ แแแแแแช แแ แแคแแ แก แแแแแแแก:
---
- name: Simple playbook
hosts: all
แแฅ แฉแแแ แฃแแ แแแแ แแแแแแแ, แ แแ แฉแแแแ แกแแแแแแจแ แฌแแแแ แ.แฌ Simple Playbook
แแ แ แแ แแแกแ แจแแแแแ แกแ แฃแแแ แแงแแก แจแแกแ แฃแแแแฃแแ แงแแแแ แฐแแกแขแแกแแแแก. แฉแแแ แจแแแแแซแแแ แจแแแแแแฎแแ แแก /ansible แแแ แแฅแขแแ แแแจแ แกแแฎแแแแ playbook.yml
แแ แกแชแแแ แแแจแแแแ:
ansible-playbook ./playbook.yml
PLAY [Simple Playbook] ************************************************************************************************************************************
skipping: no hosts matched
Ansible แแแแแแก, แ แแ แแ แแชแแแแก แฐแแกแขแแแก, แ แแแแแแแช แแแแฎแแแแ แงแแแแ แกแแแก. แแกแแแ แฃแแแ แแงแแก แฉแแแแแแแแแ แกแแแชแแแแฃแ แจแ
แแแแแ แจแแแฅแแแแ แแแ แแแแแ แแsible แแแ แแฅแขแแ แแแจแ:
123.123.123.123
แแกแ แฃแแ แแแแ แแแแฃแกแขแแแ แฐแแกแขแก (แแแแแแฃแ แแ แฉแแแแ VPS-แแก แแแกแแแแซแแแ แขแแกแขแแ แแแแกแแแแก, แแ แจแแแแซแแแแ แแแแ แแแแกแขแ แแ แแ แแแแแแฐแแกแขแ) แแ แแแแแฎแแแ แแแก แกแแฎแแแแ inventory
.
แจแแแแซแแแแ แกแชแแแแ ansible-แแก แแแจแแแแ แแแแแแขแแ แแก แคแแแแแ:
ansible-playbook ./playbook.yml -i inventory
PLAY [Simple Playbook] ************************************************************************************************************************************
TASK [Gathering Facts] ************************************************************************************************************************************
PLAY RECAP ************************************************************************************************************************************
แแฃ แแฅแแแ แแแฅแแ ssh แฌแแแแแ แแแแแแแแฃแ แฐแแกแขแแ, แแแจแแ ansible แแแแแแแจแแ แแแก แแ แจแแแแ แแแแแก แแแคแแ แแแชแแแก แแแกแขแแแชแแฃแ แ แกแแกแขแแแแก แจแแกแแฎแแ. (แแแแฃแแแกแฎแแแแ TASK [แคแแฅแขแแแแก แจแแแ แแแแแ]), แ แแก แจแแแแแแแช แแแ แฌแแ แแแแแแก แแแแแ แแแแแ แแจแก แจแแกแ แฃแแแแแก แจแแกแแฎแแ (PLAY RECAP).
แแแแฃแแแกแฎแแแแแ, แแแแจแแ แ แแงแแแแแก แแแแฎแแแ แแแแแก แกแแฎแแแก, แ แแแแแแแช แกแแกแขแแแแจแ แฎแแ แ แจแแกแฃแแ. แแแแ แแแแแแแแแ แแ แแฅแแแแ แแแกแแแแซแแแแ. Playbook แคแแแแจแ แจแแแแซแแแแ แแแฃแแแแแ แ แแแแแ แแแแฎแแแ แแแแแ แแแแแแงแแแแก แแแกแแแแแจแแ แแแแแ remote_user แแแ แแฅแขแแแแก แแแแแงแแแแแแ. แแกแแแ, แแแคแแ แแแชแแ แแแกแขแแแชแแฃแ แ แกแแกแขแแแแก แจแแกแแฎแแ แฎแจแแ แแ แจแแแซแแแแ แแฅแแแแแแแก แแ แแกแแญแแ แ แแงแแก แแ แแ แฃแแแ แแแแแ แแแ แแ แ แแแก แจแแแ แแแแแแแ. แแก แแแแแแแแ แแกแแแ แจแแแซแแแแ แแแแแ แแแ:
---
- name: Simple playbook
hosts: all
remote_user: root
become: true
gather_facts: no
แกแชแแแแ แฎแแแแฎแแ แแแฃแจแแแ แกแแแแแแจแ แฌแแแแ แแ แแแ แฌแแฃแแแแ, แ แแ แแแแจแแ แ แแฃแจแแแแก. (แแฃ แแฅแแแ แแแฃแแแแแ root แแแแฎแแแ แแแแแ, แแแจแแ แแกแแแ แฃแแแ แแแฃแแแแแ be: true แแแ แแฅแขแแแ, แ แแแ แแแแฆแแ แแแแฆแแแแฃแแ แฃแคแแแแแแ. แ แแแแ แช แฌแแ แแ แแแแฃแแแแขแแชแแแจแ: become set to โtrueโ/โyesโ to activate privilege escalation.
แแฃแแชแ แแแแแแแ แแ แแ แแก แแแกแแแแแ แ แแขแแ).
แจแแกแแซแแแ, แแฅแแแ แแแแฆแแแ แจแแชแแแแแก, แ แแแแแแช แแแแแฌแแแฃแแแ แแแแ, แ แแ ansible แแแ แแแแกแแแฆแแ แแแก แแแแแแแก แแแขแแ แแ แแขแแชแแแก, แจแแแแแ แจแแแแซแแแแ แฎแแแแ แแแฃแแแแแ:
ansible_python_interpreter: /usr/bin/python3
แแฅแแแ แจแแแแซแแแแ แแแแแแ แกแแ แแแฅแแ แแแแแแ แแ แซแแแแแแ whereis python
.
แกแแกแขแแแแก แแแแแขแแแแก แแแกแขแแแแชแแ
Ansible-แแก แกแขแแแแแ แขแฃแแ แแแกแขแ แแแฃแชแแ แแแแชแแแก แแแแ แแแแฃแแก แกแฎแแแแแกแฎแแ แกแแกแขแแแแก แแแแแขแแแแแ แแฃแจแแแแแกแแแแก, แแแแขแแ แฉแแแ แแ แแแแฌแแแก bash แกแแ แแแขแแแแก แแแฌแแ แ แ แแแแ แแแแแแแ. แแฎแแ แฉแแแ แแแญแแ แแแแ แแ แ-แแ แแ แแกแแแ แแแแฃแแ แกแแกแขแแแแก แแแแแฎแแแแแกแแแแก แแ แกแแกแขแแแแก แแแแแขแแแแก แแแกแแงแแแแแแแ. แแ แแแฅแแก 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 แจแแแกแ แฃแแแแก แแแกแขแแแชแแฃแ แกแแ แแแ แแแแ. แแแแแแแแแก แแแซแแแแ แกแแฎแแแก, แ แแแ แแแแแงแฃแ แ แแแแแแแ แแแก แจแแกแ แฃแแแแแก แแฃแ แแแแจแ. แแ แฉแแแ แแฆแแฌแแ แ แแแแแ แแขแฃแแ แแแแฃแแแก แกแแแขแแฅแกแแก แแแแแงแแแแแแ, แ แ แฃแแแ แแแแแแแแก. แฒแ แจแแแแฎแแแแแจแ apt: update_cache=yes
- แแแแแแก แกแแกแขแแแแก แแแแแขแแแแก แแแแแฎแแแแ apt แแแแฃแแแก แแแแแงแแแแแแ. แแแแ แ แแ แซแแแแแ แชแแขแ แฃแคแ แ แ แแฃแแแ. แฉแแแ แแแแแแชแแแ แแแแแขแแแแก แฉแแแแแแแแแแก apt แแแแฃแแก แแ แแแแแแแ, แ แแ แแกแแแ แแ แแแ state
แฃแแแ แแแฎแแแก present
, แแแฃ แฉแแแ แแแแแแแ แแแแแแกแขแแแแ แแ แแก แแแแแขแแแ. แแแแแแแแฃแ แแ, แฉแแแ แจแแแแแซแแแ แแฃแแฎแ แแ แแแ แฌแแจแแแแ แแกแแแ, แแ แแแแแแฎแแแ แแกแแแ แฃแแ แแแแ แจแแชแแแแ state
. แแแฎแแแ แแแแแแแแแกแฌแแแแ, แ แแ แ แแแกแแแ postgresql-แแแ แแฃแจแแแแแกแแแแก แแแญแแ แแแแ postgresql-contrib แแแแแขแ, แ แแแแแกแแช แแฎแแ แแแแแกแขแแแแ แแแ. แแแแแ แแ แแฎแแ, แแฅแแแ แฃแแแ แแชแแแแ แแ แแแแแแแแ แแก; แแแแแแ แฃแแ แแ แแแแแแแแแก แแแแก.
แกแชแแแแ แฎแแแแฎแแ แแแฃแจแแแ แกแแแแแแจแ แฌแแแแ แแ แจแแแแแฌแแแ, แ แแ แแแแแขแแแ แแแแแกแขแแแแ แแแฃแแแ.
แแฎแแแ แแแแฎแแแ แแแแแแแก แจแแฅแแแ.
แแแแฎแแแ แแแแแแแแ แแฃแจแแแแแกแแแแก Ansible-แก แแกแแแ แแฅแแก แแแแฃแแ - แแแแฎแแแ แแแแแ. แแแแแแแขแแ แแแแแ แแ แแ แแแแแแแแ (แแ แแแแแแแ แแแแแแฃแฅแแก แฃแแแ แชแแแแแแ แแแฌแแแแแ แแแแแแขแแ แแแแก แแแฆแแ, แ แแแ แงแแแแ แฏแแ แแ แแแแแแแแ แแ แแแแแแแแแแแ แแแแแ):
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Add a new user
user:
name: my_user
shell: /bin/bash
password: "{{ 123qweasd | password_hash('sha512') }}"
แฉแแแ แแฅแแแแ แแฎแแ แแแแฎแแแ แแแแแก, แแแงแแแแแ แแแก แกแฅแแแก แแ แแแ แแแก. แจแแแแแ แแ แ แแแแแแแแ แแ แแแแแแแก แฌแแแแฌแงแแแแแ. แ แ แแแฎแแแแ, แแฃ แแแแฎแแแ แแแแแก แกแแฎแแแแแ แแแแกแฎแแแแแแฃแแ แฃแแแ แแงแแก แกแฎแแแแแกแฎแแ แฐแแกแขแแแแกแแแแก? แแ แแแ แแแแก แแแแคแแ แขแแฅแกแขแจแ แจแแแแฎแแ แกแแแแแแจแ แฌแแแแจแ แซแแแแแ แชแฃแแ แแแแแ. แแแกแแฌแงแแกแแกแแแแก, แแแแแ แฉแแแแแ แแแแฎแแแ แแแแแก แกแแฎแแแ แแ แแแ แแแ แชแแแแแแแจแ แแ แกแขแแขแแแก แแแแแก แแแฉแแแแแแ, แแฃ แ แแแแ แฎแแแแ แแแ แแแแก แแแจแแคแแ แ.
---
- name: Simple playbook
# ...
tasks:
# ...
- name: Add a new user
user:
name: "{{ user }}"
shell: /bin/bash
password: "{{ user_password | password_hash('sha512') }}"
แชแแแแแแแ แแแงแแแแแฃแแแ แกแแแแแแจแ แฌแแแแแแจแ แแ แแแแ แฎแแแฃแแ แแ แแแแขแแแแก แแแแแงแแแแแแ.
แฉแแแ แแฆแแแแจแแแแ แชแแแแแแแแก แแแแจแแแแแแแแแก แแแแแแขแแ แแแแชแแแก แคแแแแจแ:
123.123.123.123
[all:vars]
user=my_user
user_password=123qweasd
แแแฎแแแ แแแแแแแแแกแฌแแแแ แแแ แแฅแขแแแ [all:vars]
- แแแแฅแแแแแ, แ แแ แขแแฅแกแขแแก แจแแแแแแ แแแแแ แแ แแก แชแแแแแแแ (vars) แแ แแกแแแ แแแแแแงแแแแแ แงแแแแ แฐแแกแขแแ (แงแแแแ).
แแแแแแแแช แกแแแแขแแ แแกแแ "{{ user_password | password_hash('sha512') }}"
. แกแแฅแแ แแแแจแแ, แ แแ ansible แแ แแงแแแแแก แแแแฎแแแ แแแแแก แแแจแแแแแแ user_add
แ แแแแ แช แแแแก แแแแแแแแแแ แฎแแแแ. แแ แแก แแแแฎแแแก แงแแแแ แแแแแชแแแก แแแ แแแแแ , แ แแก แแแแแช แฉแแแ แแกแแแ แฃแแแ แแแแแแแงแแแแแ แแแ แแแ แฐแแจแแ, แ แแกแแช แแก แแ แซแแแแแ แแแแแแแก.
แแแแแ แแแแแแแขแแ แฉแแแแ แแแแฎแแแ แแแแแ 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"
แงแแแแแคแแ แ แกแแแแแแ แแแ แขแแแแ, แฉแแแ แแกแแแ แแแแฅแแก แฏแแฃแคแฃแ แ แแแแฃแแ แฏแแฃแคแแแแก แจแแกแแฅแแแแแแ, แกแแแขแแฅแกแแ แซแแแแแ แฐแแแแก 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 แแแกแแฆแแแแก แกแแฏแแ แ แแแฌแแแก แแ แแขแแแ แแแแก แแแก แกแแ แแแ แแ แแแแฎแแแ แแแแแก แแแขแแ แแแแแฃแแ แแแกแแฆแแแแแแก แกแแแจแ.
แ แแแแแ
แแแแแงแแแแแแก แจแแฅแแแแก แกแแแแแ แแแแแแแแ แแแแแแแ แจแแแซแแแแ แแแแงแแก แแแแชแแแแแแก แแ แ แฏแแฃแคแแ แแ แแแ แแ แแฅแแแแ, แ แแ แแก แฏแแฃแคแ แจแแแแแฎแแ แซแแ แแแแแ แกแแแแแแจแ แฌแแแแแกแแแ แแแแชแแแแแแแแแ, แ แแแ แแ แแแแแแ แแแก แซแแแแแ แแแแ. แแ แแแแแแ Ansible-แก แแฅแแก
แแแแแแแแแ แแแแแแแแฃแแ แคแแแแแก แกแขแ แฃแฅแขแฃแ แแก แแแฎแแแแแ, แ แแแแแ แฃแแแ แแแแแแแกแแแก แชแแแแ แ แแแแแแก แแแ แแฅแขแแ แแแจแ, แแแแแแฃแแ แ แแแแกแแแแก แแ แแก แชแแแแ แแแ แแฅแขแแ แแ แแแแแ แกแแฎแแแฌแแแแแแ, แแแแชแแแแแแก, แคแแแแแแแก, แจแแแแแแแแแก แแ แ.แจ.
แแแแแ แจแแแฅแแแแ แคแแแแแก แกแขแ แฃแฅแขแฃแ แ: ./ansible/roles/user/tasks/main.yml
(main แแ แแก แแแแแแ แ แคแแแแ, แ แแแแแแช แฉแแแขแแแ แแแแ แแ แจแแกแ แฃแแแแแ, แ แแแแกแแช แ แแแ แแแแแแจแแ แแแฃแแแ แกแแแแแแจแ แฌแแแแแแ; แจแแกแแซแแแแแแแ แกแฎแแ แ แแแฃแ แ แคแแแแแแแก แแแแแแจแแ แแแ). แแฎแแ แแฅแแแ แจแแแแซแแแแ แแแแแแขแแแแ แแแแฎแแแ แแแแแแแ แแแแแแจแแ แแแฃแแ แงแแแแ แแแแแแแแ แแ แคแแแแจแ:
# 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
แแแแแแ แกแแแแแแจแ แฌแแแแจแ แแฅแแแ แฃแแแ แแแฃแแแแแ แแแแฎแแแ แแแแแก แ แแแแก แแแแแกแแงแแแแแแแ:
---
- 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; แฉแแแ แฃแแแ แแแแแแแแคแแแฃแ แแ แแ แแ แแแแฃแจแแแ แแแ. แแแแแ แแแแแแแแแ แแก แแแจแแแแ แ แแแจแ. แแแแแ แจแแแฅแแแแ แคแแแแแก แกแขแ แฃแฅแขแฃแ แ:
- ansible
- roles
- nginx
- files
- tasks
- main.yml
- templates
แแฎแแ แฉแแแ แแแญแแ แแแแ แคแแแแแแ แแ แจแแแแแแแแ. แแแ แจแแ แแก แแแแกแฎแแแแแแ แแกแแ, แ แแ ansible แแแแแแ แแแก แคแแแแแแก แแแ แแแแแ , แ แแแแ แช แแ แแก. แแ แจแแแแแแแแก แฃแแแ แฐแฅแแแแแ j2 แแแคแแ แแแแแ แแ แแแ แจแแฃแซแแแแ แแแแแแงแแแแ แชแแแแแ แแแแจแแแแแแแแแ แแแแแ แแ แแแแ แฎแแแฃแแ แแ แแแแขแแแแก แแแแแงแแแแแแ.
แแแแแ แแแแแแฅแขแแฃแ แแ nginx in 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 แแแ แแฅแขแแ แแแจแ (แแก แแ แแ แแก แแฃแชแแแแแแแ, แแแแ แแ แกแแกแแ แแแแแ). แแแ แแแ แจแแแแฎแแแแแจแ, แฉแแแ แแแงแแแแแ แแกแแแก แแแแฃแแก แคแแแแแแแก แแแแแ แแแแกแแแแก (แคแแแแ แฃแแแ แแงแแก แจแแงแแแแแแ /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 }};
....
}
แงแฃแ แแแฆแแแ แแแแฅแชแแแ แฉแแแแ แแแแก {{ app_name }}
, {{ app_path }}
, {{ server_name }}
, {{ inventory_hostname }}
- แแก แแ แแก แงแแแแ แชแแแแแ, แ แแแแแก แแแแจแแแแแแแแแก Ansible แฉแแแแแชแแแแแก แจแแแแแแจแ แแแแแ แแแแแแ. แแก แกแแกแแ แแแแแแ, แแฃ แแงแแแแแ แกแแแแแแจแ แฌแแแแก แแแกแแแแซแแแแแก แกแฎแแแแแกแฎแแ แฏแแฃแคแแกแแแแก. แแแแแแแแแ, แฉแแแ แจแแแแแซแแแ แแแแแแแขแแ แฉแแแแ แแแแแแขแแ แแก แคแแแแ:
[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
แแฃ แฉแแแ แแฎแแ แแแแฃแจแแแ แฉแแแแ แกแแแแแแจแ แฌแแแแ, แแก แจแแแกแ แฃแแแแก แแแแแแแแฃแ แแแแแแแแแแก แแ แแแ แฐแแกแขแแกแแแแก. แแแแ แแ แแแแแ แแ แแก, แแแแแแแก แแแกแแแแซแแแกแแแแก, แชแแแแแแแ แแแแกแฎแแแแแแแแแ แฌแแ แแแแแแกแแแ แแ แแ แ แแฎแแแแ แ แแแแแจแ แแ แกแแแแแแจแ แฌแแแแแแจแ, แแ แแแแ nginx แแแแคแแแฃแ แแชแแแแจแแช. {{ inventory_hostname }}
แแ แแ แแก แกแแญแแ แ แแแแแแขแแ แแแแชแแแก แคแแแแจแ แแแแแแแแ - แแก
แแฃ แแกแฃแ แ แแฅแแแแแ แแแแแแขแแ แแก แคแแแแ แ แแแแแแแแ แฐแแกแขแแกแแแแก, แแแแ แแ แแแจแแแแฃแแ แแฎแแแแ แแ แแ แฏแแฃแคแแกแแแแก, แแก แจแแแซแแแแ แแแแแแแแก แจแแแแแแ แแ แซแแแแแแ:
ansible-playbook -i inventory ./playbook.yml -l "staging"
แแแแแ แแ แแ แแแ แแแแขแแ แแฅแแแแแ แชแแแแแฃแแ แแแแแแขแแ แแก แคแแแแแแ แกแฎแแแแแกแฎแแ แฏแแฃแคแแแแกแแแแก. แแ แจแแแแซแแแแ แแแแแแแจแแ แแ แแ แ แแแแแแแ, แแฃ แแแแ แ แแแแกแฎแแแแแแฃแแ แแแกแแแแซแแแ แแงแแแ.
แแแแแ แแแแฃแแ แฃแแแแ nginx-แแก แแแงแแแแแแก. แแแแคแแแฃแ แแชแแแก แคแแแแแแแก แแแแแ แแแแก แจแแแแแ, แฉแแแ แฃแแแ แจแแแฅแแแแ symlink sites_enabled-แจแ my_app.conf-แแ sites_available-แแแ. แแ แแแแแขแแแ แแแ 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
แแฅ แงแแแแแคแแ แ แแแ แขแแแแ - แแกแแ แฎแแแแแกแแฌแแแแแ แแแแฃแแแแ แกแแแแแแ แกแขแแแแแ แขแฃแแ แกแแแขแแฅแกแแ. แแแแ แแ แแ แแก แแ แแ แฌแแ แขแแแ. nginx-แแก แงแแแแ แฏแแ แแ แแแแแขแแแ แแแแก แแแ แ แแ แแฅแแก. แจแแแแจแแแ, แ แแ แฉแแแ แแ แแฌแแ แ แแ แซแแแแแแแก, แ แแแแ แแชแแ: โแแแแแ แแกแโ, แกแแแขแแฅแกแ แฃแคแ แ แฐแแแแก โแแแแก แฃแแแ แฐแฅแแแแแก แแก แแแแแแแ แแแแโ. แแ แงแแแแแแ แฎแจแแ แแ แแฃแกแขแแ แแกแ แแฃแจแแแแก ansible. แแฃ แฏแแฃแคแ แฃแแแ แแ แกแแแแแก, แแ แกแแกแขแแแแก แแแแแขแ แฃแแแ แแแแแกแขแแแแ แแแฃแแแ, แแแจแแ ansible แจแแแแแฌแแแแก แแแแก แแ แแแแแขแแแแแก แแแแแแแแแก. แแกแแแ, แคแแแแแแ แแ แแแแแแแ แแแแ, แแฃ แแกแแแ แแแแแแแแ แแแแฎแแแแ แกแแ แแแ แแ แแ แกแแแฃแแก. แฉแแแ แจแแแแแซแแแ แแแกแแ แแแแแแ แแแแ แแ แแแแแขแแแ แแแ 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 แ แแแ แแแแแแ แกแแแแแแจแ แฌแแแแจแ.
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 }}"
แแ แแ แแฆแแฌแแ , แแฃ แ แแแแ แแแแแแแขแ แชแแแแแแแ แแแแแแขแแ แจแ, แแก แฃแแแ แแ แแแ แแฎแแ แแแแแแแ, แแกแแแ postgresql_db แแ postgresql_user แแแแฃแแแแแก แกแแแขแแฅแกแ. แแแแแขแแแแแ แแแคแแ แแแชแแ แจแแแแซแแแแ แแฎแแแแ แแแแฃแแแแขแแชแแแจแ. แงแแแแแแ แกแแแแขแแ แแกแ แแแ แแฅแขแแแ แแฅ แแ แแก become_user: postgres
. แคแแฅแขแแ, แ แแ แแแแฃแแแกแฎแแแแแ, แแฎแแแแ postgres แแแแฎแแแ แแแแแก แแฅแแก แฌแแแแแ postgresql แแแแแชแแแแ แแแแแจแ แแ แแฎแแแแ แแแแแแฃแ แแ. แแก แแแ แแฅแขแแแ แแแแซแแแแก แกแแจแฃแแแแแแก แแ แแแแฎแแแ แแแแแก แกแแฎแแแแ แจแแแแกแ แฃแแแ แแ แซแแแแแแแ (แแฃ แแแแฅแแก แฌแแแแแ, แ แ แแฅแแ แฃแแแ).
แแกแแแ, แจแแแซแแแแ แแแแญแแ แแแ แฎแแแแก แแแแแขแแแ pg_hba.conf-แแ, แ แแแ แแฎแแ แแแแฎแแแ แแแแแก แแแฃแจแแแก แแแแแชแแแแ แแแแแจแ แฌแแแแแ. แแก แจแแแซแแแแ แแแแแแแแก แแกแแแ, แ แแแแ แช แฉแแแ แจแแแชแแแแแ nginx แแแแคแแแฃแ แแชแแ.
แแ แ แ แแฅแแ แฃแแแ, แแฅแแแ แฃแแแ แแแแแแขแแ postgresql แ แแแ แแแแแแ แกแแแแแแจแ แฌแแแแจแ.
แ แฃแแแก แแแงแแแแแ rbenv-แแก แกแแจแฃแแแแแแ
Ansible-แก แแ แแฅแแก แแแแฃแแแแ rbenv-แแแ แแฃแจแแแแแกแแแแก, แแแแ แแ แแก แแแกแขแแแแ แแแฃแแแ git แกแแชแแแแแแก แแแแแแ แแแแ. แแแแขแแ, แแก แแ แแแแแแ แฎแแแแ แงแแแแแแ แแ แแกแขแแแแแ แขแฃแแ. แแแแแ แจแแแฅแแแแ แแแกแแแแก แ แแแ /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
แฉแแแ แแแแแ แแแงแแแแแ be_user แแแ แแฅแขแแแแก, แ แแ แแแฃแจแแแ แแแแฎแแแ แแแแแก แฅแแแจ, แ แแแแแแช แฉแแแ แแ แแแแแแแแกแแแแก แจแแแฅแแแแแ. แแแแแแแแ rbenv แแแแแกแขแแแแ แแแฃแแแ แแแก แแแแแแ แแแ แแฅแขแแ แแแจแ แแ แแ แ แแแแแแแฃแ แแ. แฉแแแ แแกแแแ แแแงแแแแแ git แแแแฃแแก แกแแชแแแแก แแแแแแ แแแแกแแแแก, แกแแแแช แแแแแแแแฃแแแ 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
แแ แแแแแก แแแแแแกแขแแแแ แ แ แฃแแ. แแก แแแแแแแ 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 แฃแแแ แแแแแกแแแฆแแ แแก แแแ แแแแแ แแแแแ แกแแ แแแขแแ.
แจแแแแแแ แแ แแแแแแ แแแแแฌแแแฃแแแ แแแแ, แ แแ แญแฃแ แแแก แแ แซแแแแแแก แแ แแฅแแก แแแแแแแ แแแแ แแแแแแ แฃแแ แแแแแกแแแ แแกแแ. แแแฃ, แแ แแฅแแแแ แแแขแแแแขแฃแ แ แจแแแแฌแแแแ, แแแแแกแขแแแแ แแแฃแแแ แแฃ แแ แ แ แฃแแแก แแก แแแ แกแแ. แฉแแแ แแแแแแ แจแแแแแซแแแ แแแแก แแแแแแแแ:
- 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
แ แฉแแแ แแฎแแแแ แแแแแแแ แแก แแแงแแแแแ:
- 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-แแกแแแแก. แแ แกแแแแแก แแฎแแแแ แแ แแ แแแฎแแแฌแแแแแ. แคแแแแแแแก แแแแแ แแแแแแ, แแฅแแแ แฃแแแ แจแแฅแแแแ แแแ แแฅแขแแ แแ แกแขแ แฃแฅแขแฃแ แ, แแแแฎแแแแแแ แแกแแแ:
# 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
แแแจแแ แแแแแ แฃแคแ แ แแแขแ แแกแแแ แแ แแขแแแฃแแ แแแแแชแแแแแ แฃแแแ แแงแแก. แแแ แแ แแฅแแแแ, แแฃ แแกแแแ แชแแแแแกแแแงแแแ แ แแแแแแแแกแแแ แแแแแแแ. แแ แแแแแแ แแแแแแงแแแแแ
แแแแแ แจแแแฅแแแแ แคแแแแ แชแแแแแแแแกแแแแก /ansible/vars/all.yml
(แแฅ แจแแแแซแแแแ แจแแฅแแแแ แกแฎแแแแแกแฎแแ แคแแแแ แฐแแกแขแแแแก แกแฎแแแแแกแฎแแ แฏแแฃแคแแกแแแแก, แแกแแแ แ แแแแ แช แแแแแแขแแ แแก แคแแแแจแ: production.yml, staging.yml แแ แ.แจ.).
แงแแแแ แชแแแแแ, แ แแแแแแช แฃแแแ แแงแแก แแแจแแคแ แฃแแ, แฃแแแ แแแแแแแแแก แแ แคแแแแจแ แกแขแแแแแ แขแฃแแ 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
แคแแแแแก แแแจแแคแแ แ, แจแแชแแแ แแ แฎแแแแฎแแ แแแจแแคแแ แ แจแแกแแซแแแแแแแ.
แแฅแแแ แแ แแญแแ แแแแแ แคแแแแแก แแแจแแคแแ แ แกแแแฃแจแแแ. แแฅแแแ แแแแฎแแแ แแแก แแแจแแคแ แฃแแแ แแ แแแฃแจแแแ แกแแแแแแจแ แฌแแแแ แแ แแฃแแแแขแแ --ask-vault-pass
. Ansible แแแฎแแแก แแแ แแแก, แแแแแฆแแแก แชแแแแแแแก แแ แจแแแกแ แฃแแแแก แแแแแแแแแแก. แงแแแแ แแแแแชแแแ แแแจแแคแ แฃแแ แแแ แฉแแแ.
แกแ แฃแแ แแ แซแแแแแ แแแกแแแแซแแแแแก แ แแแแแแแแ แฏแแฃแคแแกแแแแก แแ แชแแแแฎแ แแแ แกแแ แแแคแแ แแกแ แแแแแแงแฃแ แแแ:
ansible-playbook -i inventory ./playbook.yml -l "staging" --ask-vault-pass
แแแแ แแ แแ แแ แแแแชแแแ แกแแแแแแจแ แฌแแแแแแแก แแ แ แแแแแแก แกแ แฃแ แขแแฅแกแขแก, แแแแแ แแแฌแแ แแ. แแแแขแแ, แ แแ ansible แแกแแ - แแฃ แแ แแแกแแแ, แ แ แฃแแแ แแแแแแแแ, แแแจแแ แแก แแแแก แแ แแแแแแแแแก แแฅแแแแแแแก.
แฌแงแแ แ: www.habr.com