ืื ื ืขืืฉื ืืจืื ืืืงืืจืืช ืขื ืงืื Ansible ืฉื ืื ืฉืื ืืืจืื ืืืืชื ืืจืื ืืขืฆืื. ืืืืื ื ืืชืื ืืขืืืืช (ืื ืฉื ืืืจืื ืืื ืฉื ืฉืื), ืืื ืื ืืกืคืจ ืจืืืื ืืช, ืืื ืชื ืืช ืืืขืืช ืืขืืงืจืืช ืฉืืฉืชืืฉื Ansible ืขืืฉืื - ืื ื ืื ืกืื ืืืืจืื ืืืจืืืื ืืืื ืืืฉืชืื ืขื ืืืกืืกืืื ืฉืืื.
ืืื ืืชืงื ืืช ืืขืืื ืืืื ืืืจืกืื ืืื, ืืืืืชื ืืืชืื ืืืื ื-Ansible ืืื ืฉืืืจ ืืืืจ ืืืชื. ืื ื ืืืืืจ ืืืชื, ืื ืื ืจืืคืืจ ืฉื ืืืจืื, ืื ืืจืื ืงืจืืื ืขื ืืจืื ืืืชืืืช ืืืื ืชืืื ืืช.
ืืจืื ืืฆืคืืื ืฉื ืืงืืจื ืืื ืฉืืืจ ื ืืชืื ืืื ืืืคื ืฉืืจืืช ืฉื ืืืืื, ืืฉืื ืืืจ ืืืืฆืืจ, ืืื "ืืืืฉืื ืืื ืขืงืื".
ืืืชืจืืช
ืืืขืืช ืืขืืงืจืืช ืฉืืฉืชืืฉ Ansible ืขืืฉื ืืื ืื ืืืขืช ืืื ืงืืจืืื ืืืฉืื. ืื ืืชื ืื ืืืืข ืืช ืืฉืืืช, ืืชื ืื ืืืื ืืืืื ืื ืืืืจ ืืชืืขืื. ืืืืื ืืื: ืืืืื ืจืืืื, ืืื ืฉื ืจืื ืืื ืฉืืืจ ืฉืืชื ืืจืื ื-Ansible ืื ืืืื ืืื ืืขื ืืช ืขื ืืฉืืื "ืืืืื ืืืื ืืื ืืืจืื ืกืคืจ ืืฉืืง?" ืืืฉืืฆืขืชื ืฉ"ืฆืคืืื ืืชืฉืืื ืฉืกืคืจ ืืืฉืืงืื ืืืจืื ืืืฉืืง", ืืื ืืขืงืืืชืื ืืืขืจื ืืืจืฉืขืช "ืื ืื ื ืื ืืฉืชืืฉืื ืืื". ืื ืฉืื ืืืชืืื Ansible ืืฉืืื ืืกืฃ ืืื ืืฉืชืืฉืื ืืืฉืืง. ืื ืืืืช ืืฉืชืืฉืื ืืื, ืืื ืื ืืืืขืื ืื ืื.
ืื ืืืื ื ืชืืื ืืืฉืื ืคืฉืื: ืืื ืงืืจืืื ืืื. ืืืื ืืชื ืืืืข ืืช ืื, ืื ืืืื ืืชื ืื ืืืืข, ืื ืื ืฉืืช ืื ืืฉืงืจืืช ืืช ืืชืืขืื.
ansible-playbook ืืืฆืข ืืช ืกืคืจ ืืืฉืืงืื. ืกืคืจ ืืคืขืื ืืื ืงืืืฅ ืขื ืืกืืืืช yml/yaml, ืฉืืชืืื ืืฉ ืืฉืื ืืื:
---
- hosts: group1
roles:
- role1
- hosts: group2,group3
tasks:
- debug:
ืืืจ ืืื ื ืฉืื ืืงืืืฅ ืืื ืืื ืกืคืจ ืืฉืืง. ืื ืื ื ืืืืืื ืืืจืืืช ืืืคื ืืชืคืงืืืื ืืืืคื ืืืฉืืืืช. ืืื ืืืคื ืืืฉืืง? ืืื ืืืืื ืืื ืืฉืืง ืืชืคืงืื ืื ืกืคืจ ืืฉืืง?
ืืื ืืชืื ืืชืืขืื. ืืื ืืชืืขืืขืื ืืื. ืืชืืืืื - ืื ืืฉ ืืืชืจ ืืื ืืื ืชืืืจื ืืื ืืืช ืืืช. ืื ืืกื - ืื "ืืืจืื ืืจืืืืืืืืื". ืื ืืชื ืื ืืกื, ืงืจื ืฉืื ืืช ืืืคืื ืืืื ืืคืืืช ืคืขื ืืืฆื ืฉื ื, ืืืงืื ืฉืื ืืืคืื ืืืืืื ืืืืชื.
ืื, ืืืจื: Playbook ืืื ืจืฉืืื ืืืืจืืืช ืืืฉืืง ื import_playbook
.
ืื ืืืื ืืื:
- hosts: group1
roles:
- role1
ืืื ืื ืขืื ืืืื:
- hosts: group2,group3
tasks:
- debug:
ืื ืื ืืฉืืง? ืืื ืืื?
ืืฉืืง ืืื ืืจืืื ืืคืชื ืืกืคืจ ืืฉืืง, ืืืืืื ืฉืืฉืืง ืืจืง ืืฉืืง ืืฉืืื ืจืฉืืื ืฉื ืชืคืงืืืื ื/ืื ืืฉืืืืช ืืจืฉืืืช ืืืจืืื ืฉืขืืืื ืืฉ ืืืฆืข ืืืชื. ืืืขืืงื ืืชืืขืื ื ืืชื ืืืฆืื ืืืืืจ delegate_to
, ืชืืกืคื ืืืคืืฉ ืืงืืืืื, ืืืืจืืช ืกืคืฆืืคืืืช ืืจืฉืช, ืืืจืื ืงืคืืฆื ืืื'. ืื ืืืคืฉืจืื ืื ืืฉื ืืช ืืขื ืืช ืืืงืื ืื ืืืืฆืขืืช ืืืฉืืืืช. ืืื, ืชืฉืื ืืื. ืืื ืืืช ืืืืคืฉืจืืืืช ืืืืืืช ืืืื ืืฉ ืฉืืืืฉืื ืืืื ืกืคืฆืืคืืื, ืืื ืืืืื ืื ืืื ืืืจืกืืืื. ืืื ืื ื ืืืืจืื ืขื ืืืจืื ืืกืืกืืื ืฉืืืื ืฆืจืืืื ืืืขืช ืืืืฉืชืืฉ ืืื.
ืื ืืชื ืจืืฆื ืืืฆืข "ืืฉืื" "ืืืคืฉืื", ืืชื ืืืชื ืืืื. ืื ืชืคืงืื. ืื ืชืคืงืื ืขื ืืืืืืื ืื ืฆืืืื. ืืชื ืืืงื ืืช ืื ืืืืชื ืืืื. ืืืืื, ืืฉืื hosts ืืชื ืืคืจื ืืืื ืืืฆืข, ืืืชืคืงืืืื/ืืฉืืืืช - ืื ืืืฆืข.
ืคืฉืื, ื ืืื? ืืื ืืืื ืืืืืช ืืืจืช?
ืืื ืืจืืขืื ืืืืคืืื ืืื ืฉืืื ืืื ืฉืื ืืฉ ืจืฆืื ืืขืฉืืช ืืืช ืฉืื ืืืืฆืขืืช ืืฉืืง ืืื "ืืชืคืงืื ืฉืืืืืจ ืืื". ืื ื ืจืืฆื ืฉืืืื ืื ืชืคืงืื ืฉืืืืืจ ืื ืฉืจืชืื ืืืกืื ืืจืืฉืื ืืื ืฉืจืชืื ืืืกืื ืืฉื ื.
ืืืืื ืืจืืืืืคืืช ืืื ื ืืืืจ. ืืจืฆืื ื ืืงืื ืชืคืงืื ื ืืืืจ ืฉืืืืืจ ื ืืืืจ. ืชืคืงืื ืื ืืืืจ ืืืงืฆื ืืืืจืืื ื ืืืืจ (ืืคื ืืฉืืง). ืืื ืืกืชืืจ ืฉืืฉืืื ื ืืืืจ ืื ืื ื ืฆืจืืืื ืืืขืืืจ ืืืืืืช ืืืืจืืื ืฉืื ืื ื ืขืืงืืื ืืืจืืื. ืืื ืื ืืืฉืชืืฉ ืื ืฆืื? ืืชื ืฆืจืื ืื ืืืืืืจ iptables. ื ึธืฆึดืื? ืขืืื ืื ืืืชืื/ืืชืงื ืชืฆืืจื ืขืืืจ ื-DBMS ืืื ืืืคืฉืจ ื ืืืืจ. ื ึธืฆึดืื! ืืื ืืกืจื ืืฆืืจืชืืืช, ืื ืืชื ืืืื ืืขืฉืืช ืืฉืืืช include_role
ืืืืืื ืืงืื ื ืช ืืืืฆืขืืช ืืกื ื ืืกืืื ืืจืฉืืืช ืงืืืฆืืช, ืืืคื ืื include_role
ืืชื ืืืื ืืขืฉืืช ืืืชืจ delegate_to
ืฉืื. ืืื ืื ื ืืืืืื...
ืืฉืืื ืืืื - ืืงืื ืชืคืงืื ืคืืงืื ืืื, ืฉ"ืขืืฉื ืืื" - ืืืืืื ืืืชื ื ืืืืื ืื ืืืืื ืฉืืื ื ืืจืื ืืฉ ืจืง ืืืฆื ืืื: ืืฉืืชื ืืื ืืืคืก.
ืืืื ืงืจืชื ืืื ืืืขืืช? ืืจืืข ืฉืืืืืช ืฉืืื ืืืฆืข ืืช ืืืฉืืื "x" ืืืืจื X ืืชื ืฆืจืื ืืืืช ืืืจื Y ืืืขืฉืืช ืฉื "y", ืืืืช ืฆืจืื ืืขืฉืืช ืชืจืืื ืคืฉืื: ืืืืช ืืืืชืื ืืฉืืง, ืื ืฉืืืืจื Y ืขืืฉื y. ืื ืชืืกืืฃ ืืฉืื ื-"x", ืืื ืชืืชืื ืืืชื ืืืคืก. ืืคืืื ืขื ืืฉืชื ืื ืืงืืืืื.
ื ืจืื ืฉืืื ืืคืกืงืืืช ืืืขืื ื ืืืจ ื ืืื. ืืื ืื ืื ืืืงืจื ืฉืื! ืื ืืชื ืจืืฆื ืืืชืื ืงืื ืืฉืืืืฉ ืืืืจ ืฉืืื DRY ืืืืื ืกืคืจืืื, ืืืชื ืฆืจืื ืืืคืฉ ืฉืืื ืืื ืืขืฉืืช ืืช ืื.
ืืื ืืกืชืชืจืช ืขืื ืืขืืช ืืืืจื. ืฉืืืื ืฉืืคืื ืคืจืืืงืืื ืจืืื ืืืชืืืื ืืฆืืจื ื ืกืืืช (ืืืื ืืืืืช ืืื ืืืชืจ, ืืื ืืื ืขืืื ืืงื ืืกืืื) ืืืืื ืืืืืืช ืฉืืคืืื ืืืืืจ ืื ืืืื ืืืืื. ืื ืขืืื, ืืื ืืืืื ืื ืืฉื ืืช ืืฉืื.
ืืฉืืืื ืืื: ืชืคืงืื ืืื ืคืื ืงืฆืืืช ืกืคืจืื. ืืื ืืืืื ืืื ืืจืกื ืื ืื ืืจืื ืืชืืืืช ืืืืืช ืฉืคืฉืื ืขืฆืื ืืจืืืช. ืืชืคืงืื ืืื ื ืคืื ืงืฆืืืช ืกืคืจืืื. ืืื ืื ืืืืื ืืขืฉืืช ืืืฉืืืื ืืืื ืื ืืืืื ืืงืื ืืืืืืช ืืจืืช ืืืฉืืง. ืชืืืืจ ืื ืืืื ืืืืืืช ืืฉืืง ืืงืื?
ืชืืื, ืืชื ืฆืืืง. Play ืืงืื ืืืืื (ืืืชืจ ืืืืง, ืืื ืืืื ืืืืข) ืืืื ืืืื ืืฉืืืืช ืืชืคืงืืืื ืืืฆืข ืขื ืืืื ืืืจืืื.
ืื ืืชื ืืืฆืื ืืช ืืืืืื ืืื ืืชืคืงืื, ืืืคืืื ืขื ืืืฉืืืื, ืืชื ืืืืจ ืขื ืขืฆืื (ืืืช ืื ืฉืื ืกื ืื ืชื ืืช ืืงืื ืฉืื) ืงืืื ืขืืื. ืืชืคืงืื ืืื ื ืืืืื ืืืื ืืื ืืืืฆืข. ืืืืื ืื ืืชืงืืืช ืขื ืืื ืืฉืืง. ืืชืคืงืื ืขืืฉื ืื ืฉืืืืจืื ืื, ืืืคื ืฉืืืืจืื ืื.
ืืื ืืกืืื ืืชืื ืช ื-Ansible ืืืื COBOL ืขืืืฃ ืขื Ansible ื ืืืจ ืืคืจืง ืขื ืืฉืชื ืื ืื'ืื ื'ื. ืืขืช ืขืชื, ืืื ื ืืื ืืืจ ืืื - ืื ืืืฉืื ืฉืื ืืฉืืืจ ืืืจืื ืขืงืืืช ืื ืืืืื ืฉื ืฉืื ืืืื ืืืฉืชื ืื ืืืืืืืื, ืืืชื ืื ืืืื ืืขืฉืืช ืืืจ ืื ืืืื. ืืจืืข ืฉืฉืชื ื"ืขืงืืืช" ืืฆืืืื, ืืื ื ืขืื.
ืืขืจื ืืืฆืืืฆืืื: ืืชืคืงืื ืืืืื ืืืื ืืืฉืคืืข ืขื ืืจืืืช ืืืงืจื. ืืืืื delegate_to
ืืืฉ ืื ืฉืืืืฉืื ืกืืืจืื. ืืืืื meta: end host/play
. ืืื! ืืืืจืื ืฉืื ืื ื ืืืืืื ืืช ืืืกืืืืช? ืืฉืืื ื delegate_to
. ืื ืื ื ืืืืจืื ืขื ืงืื Ansible ืืคืฉืื ืืืืคื ืืืืชืจ. ืฉืืื ืงื ืืงืจืืื, ืงื ืืืชืืื, ืงื ืื ืืคืื ืืืืื, ืงื ืืืืืงื ืืงื ืืืฉืืื. ืื, ืฉืื:
ืืฉืืง ืืจืง ืืฉืืง ืืืืื ืขื ืืืื ืืืจืืื ืื ืืืืฆืข.
ืืืืง ืื ืขืกืงื ื ืื ืืืื ืืื ืืฉืืง ืืชืคืงืื. ืขืืฉืื ืืืื ื ืืืจ ืขื ืืืกื ืืืฉืืืืช ืืื ืชืคืงืื.
ืืฉืืืืช ืืชืคืงืืืื
ืฉืงืื ืืฉืืง:
- hosts: somegroup
pre_tasks:
- some_tasks1:
roles:
- role1
- role2
post_tasks:
- some_task2:
- some_task3:
ื ื ืื ืฉืืชื ืฆืจืื ืืขืฉืืช ืคื. ืืื ื ืจืื ืืื foo: name=foobar state=present
. ืืืคื ืื ื ืฆืจืื ืืืชืื ืืช ืื? ืืคื ื? ืืืืขื? ืืืฆืืจ ืชืคืงืื?
...ืืืื ื ืขืืื ืืืฉืืืืช?
ืื ืื ื ืืชืืืืื ืฉืื ืขื ืืืกืืืืช - ืืืฉืืจ ืืืฉืืง. ืื ืืชื ืืจืืฃ ืื ืืฉื ืืื, ืืชื ืื ืืืื ืืืฉืชืืฉ ืืืฉืืง ืืืกืืก ืืื ืืฉืืจ, ืืืชืืฆืื ืฉืื ืชืืื "ืืืืืืช".
ืืืฉืืจ ืืคืขืื: ืื ืืืืช ืืืจืืื, ืืืืจืืช ืืืฉืืง ืขืฆืื ื-pre_tasks, ืืฉืืืืช, ืชืคืงืืืื, ืงืืขื post_tasks. ืฉืืจ ืืคืจืืืจืื ืืืฉืืง ืื ืืฉืืืื ืื ื ืืขืช.
ืกืืจ ืืกืขืืคืื ืฉืืื ืขื ืืฉืืืืช ืืชืคืงืืืื: pre_tasks
, roles
, tasks
, post_tasks
. ืืืืืื ืฉืืืืื ื ืกืื ืืืช ืกืืจ ืืืืฆืืข ืืื ืืื tasks
ะธ roles
ืื ืืจืืจ, ืื ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืืืจืืช ืฉืื ืื ื ืืืกืืคืื ืงืืข tasks
, ืจืง ืื ืื roles
... ืื ืืฉ roles
, ืื ืื ืืืฉืืืืช ืืืฆืืจืคืืช ืืืืงืืืช ืืงืืขืื pre_tasks
/post_tasks
.
ืื ืื ืฉื ืืชืจ ืืื ืฉืืื ืืจืืจ ืืืืื ื ืกืื ืืืช: ืจืืฉืืช pre_tasks
, ืื ืื roles
, ืื ืื post_tasks
.
ืืื ืขืืืื ืื ืขื ืื ื ืขื ืืฉืืื: ืืืคื ืืงืจืืื ืืืืืื? foo
ืึดืืชืึนื? ืืื ืขืืื ื ืืืชืื ืชืคืงืื ืฉืื ืขืืืจ ืื ืืืืื? ืื ืฉืขืืืฃ ืชืคืงืื ืขืื ืืื ืืืจ? ืืื ืื ืชืคืงืื, ืื ืืืคื ืืืื ืืืชืื - ืืคื ื ืื ืืคืืกื?
ืื ืืื ืชืฉืืื ืื ืืืงืช ืืฉืืืืช ืืืื, ืื ืื ืกืืื ืืืืกืจ ืืื ืืืืืฆืื, ืืืืืจ, ืืืชื "ืืกืืืืช ืจืขืืขืื". ืืื ื ืืื ืืช ืื. ืจืืฉืืช, ืฉืืืช ืืืืื: ืื ืืฉ ืืืฉืืง pre_tasks
ะธ post_tasks
(ืืืื ืืฉืืืืช ืื ืชืคืงืืืื), ืื ืืฉืื ืืืื ืืืืฉืืจ ืื ืืืฆืข ืืช ืืืฉืืื ืืจืืฉืื ื ื post_tasks
ืื ื ืืขืืืจ ืืช ืื ืขื ืืกืืฃ pre_tasks
?
ืืืืื ืฉื ืืกื ืืฉืืื ืจืืื ืฉืืื ืชืืฉืืจ. ืืื ืื ืืืืืง?
... ืืืคืืื. ืงืจืืืช ืืืกืืืืช ืืืื ืขืืืื ืืฉืืื: ืื ืืืืคืืื ื ืฉืืคืื ืืืืืืืืช ืืืืจ ืื ืงืืข. ืึธืึตื. ืื ืืืฉืืืืช ื pre_tasks
, ืืื ืื ืืืืคืืื ืฉืงืืืื ืืืืขื. ืืืืจ ืืื ืื ืืชืคืงืืืื ืืื ืืืืคืืื ืฉืงืืืื ืืืืขื ืืชืคืงืืืื ืืืืฆืขืื. ืืืืจ post_tasks
ืืืืืคืืื ืฉืืื.
ืืคืืื, ืื ืชืืจืืจ ืืฉืืื ื post_tasks
ะฒ pre_tasks
, ืื ืืืชืื ืฉืชืืฆืข ืืืชื ืืคื ื ืฉืืืืคื ืืืืฆืข. ืืืฉื, ืื ื pre_tasks
ืฉืจืช ืืืื ืืจื ื ืืืชืงื ืืืืืืจ, ื post_tasks
ืืฉืื ื ืฉืื ืืืื, ืืืืืจ ืืื ืืขืืจ ืืช ืืืฉืืื ืืื ืืืืืจ pre_tasks
ืืืืื ืืื ืฉืืืื ื"ืฉืืืื" ืืฉืจืช ืขืืืื ืื ืืคืขื ืืืื ืืืฉืืจ.
ืขืืฉืื ืืืื ื ืืฉืื ืฉืื, ืืื ืื ืื ื ืฆืจืืืื pre_tasks
ะธ post_tasks
? ืืืฉื, ืขื ืื ืช ืืืฉืืื ืืช ืื ืืืจืืฉ (ืืืื ืืืคืืื) ืืคื ื ืืืืื ืืชืคืงืื. ื post_tasks
ืืืคืฉืจ ืื ื ืืขืืื ืขื ืชืืฆืืืช ืืืฆืืข ืชืคืงืืืื (ืืืื ืืืคืืื).
ืืืืื Ansible ื ืืื ืืืื ืื ื ืื ืื. meta: flush_handlers
, ืืื ืืื ืื ืื ื ืฆืจืืืื flush_handlers ืื ืื ืื ื ืืืืืื ืืืกืชืื ืขื ืกืืจ ืืืืฆืืข ืฉื ืงืืขืื ืืืฉืืง? ืืชืจ ืขื ืื, ืืฉืืืืฉ ื-meta: flush_handlers ืืืื ืืชืช ืื ื ืืืจืื ืืืชื ืฆืคืืืื ืขื ืืืคืืื ืืคืืืื, ืืชืช ืื ื ืืืืจืืช ืืืืจืืช ืืขืช ืฉืืืืฉ when
ั block
ืืื ' ืืื ืฉืืชื ืืืืข ืืื ืืืชืจ ืืช ืืืคืฉืจื, ืื ืชืืื ืืชืช ืืืชืจ ื ืืืื ืกืื ืืคืชืจืื "ืืกืืื". ืืคืชืจืื ืคืฉืื - ืฉืืืืฉ ืืืืืงื ืืืขืืช ืืื ืงืื/ืชืคืงืืืื/ืคืืกื - ืื ืืืจื ืื ืืืื ืกืื.
ืืืืืจื ื'ืคื' ืฉืื ื. ืืืคื ืื ื ืฆืจืื ืืฉืื ืืช ืื? ืืคื ื, ืคืืกื ืื ืชืคืงืืืื? ืืจืืจ ืฉืื ืชืืื ืื ืื ืื ื ืฆืจืืืื ืืช ืืชืืฆืืืช ืฉื ืืืืคื ืขืืืจ foo. ืื ืื ืื ืฉื, ืื ืืื ืฆืืจื ืืืงื ืืช foo ืื ืืคื ื ืื ืืืจื - ืืงืืขืื ืืืื ืืฉ ืืฉืืขืืช ืืืืืืช - ืืืฆืืข ืืฉืืืืช ืืคื ื ืืืืจื ืืืฃ ืืงืื ืืจืืฉื.
ืืขืช ืืชืฉืืื ืืฉืืื "ืชืคืงืื ืื ืืฉืืื" ืืกืชืืืช ืืื ืฉืืืจ ืืืฉืืง - ืื ืืฉ ืฉื ืืฉืืืืช, ืื ืืชื ืฆืจืื ืืืืกืืฃ ืืืชื ืืืฉืืืืช. ืื ืืฉ ืชืคืงืืืื, ืืชื ืฆืจืื ืืืฆืืจ ืชืคืงืื (ืืคืืื ืืืฉืืื ืืืช). ืืจืฉื ืื ืืืืืืจ ืืื ืฉืื ื ืขืฉื ืฉืืืืฉ ืืืฉืืืืช ืืืชืคืงืืืื ืื-ืืื ืืช.
ืืื ืช ืืืกืืืืช ืฉื Ansible ืืกืคืงืช ืชืฉืืืืช ืืืืื ืืืช ืืฉืืืืช ืืืืืจื ืฉื ืืขื.
ืืฉืืืืช ืืชืคืงืืืื (ืืืง ืฉื ื)
ืขืืฉืื ืืืื ื ืืื ืืืฆื ืืฉืืชื ืจืง ืืชืืื ืืืชืื ืกืคืจ ืืฉืืง. ืืชื ืฆืจืื ืืขืฉืืช ืคื, ืืจ ืืืื. ืืื ืืื ืฉืืืฉ ืืฉืืืืช, ืชืคืงืื ืืื ืื ืฉืืืฉื ืชืคืงืืืื? ืืกืืืื ืืฉืืื: ืืืืื ืฉืื ืืืื ืืืชืืื ืืืชืื ืชืคืงืืืื? ืื ืืืขื ืืืชืืืช ืชืคืงืืืื ืืฉืืคืฉืจ ืืืชืื ืืฉืืืืช?... ืืื ืชืคืงืื?
ืืืช ืืืขืืืืช ืืืืืืืช ืืืืชืจ (ืืืจ ืืืืจืชื ืขื ืื) ืืื ืืืฉืื ืฉืชืคืงืื ืืื ืืื ืคืื ืงืฆืื ืืกืคืจืืื ืฉื ืชืืื ืืช. ืืื ื ืจืื ืชืืืืจ ืคืื ืงืฆืื ืื ืจื? ืืื ืืงืื ืืจืืืื ืืื ืฉื ืงืื, ืืงืืื ืืื ืืจืืงืฆืื ืขื ืกืืืืช ืืืืื, ืขืืฉื ืชืืคืขืืช ืืืืื ืืืืืืจ ืขืจื.
ืขืืฉืื, ืชืฉืืืช ืื. ืื ืืคืฉืจ ืืขืฉืืช ืืื ืืชืคืงืื? ืืช ืชืืื ืืืืื ืช ืืืชืงืฉืจ ืืชืืคืขืืช ืืืืื, ืื ืืืืืช ืฉื ืื Ansible - ืืืฆืืจ ืชืืคืขืืช ืืืืื. ืืื ืืฉ ืกืืืืช ืืืืื? ืึฐืกืึนืึดื. ืืื ืขื "ืืขืืืจื ืขืจื ืืืืืืจื ืืืชื" - ืฉื ืื ืื ืขืืื. ืจืืฉืืช, ืืชื ืื ืืืื ืืืขืืืจ ืขืจื ืืชืคืงืื. ืืชื ืืืื ืืืืืืจ ืืฉืชื ื ืืืืืื ืขื ืืืื ืืฉืืง ืืื ืืืืื ืืงืืข vars ืขืืืจ ืืชืคืงืื. ืืชื ืืืื ืืืืืืจ ืืฉืชื ื ืืืืืื ืขื ืืืื ืฉืืืื ืืชืื ืืชืคืงืื. ืื ืืคืืื ืขื ืื ืืืืื ืฉื ืกืคืจื ืืฉืืง (set_fact
/register
). ืืื ืืชื ืื ืืืื ืืงืื "ืืฉืชื ืื ืืงืืืืื". ืืชื ืื ืืืื "ืืงืืช ืขืจื" ื"ืืืืืืจ ืืืชื".
ืืืืจ ืืขืืงืจื ื ืืืข ืืื: ืืชื ืื ืืืื ืืืชืื ืืฉืื ื-Ansible ืืืื ืืืจืื ืืชืืคืขืืช ืืืืื. ืฉืื ืื ืืฉืชื ืื ืืืืืืืื ืืื ืชืืื ืชืืคืขืช ืืืืื ืฉื ืคืื ืงืฆืื. ื-Rust, ืืืฉื, ืฉืื ืื ืืฉืชื ื ืืืืืื ืืื unsafe
. ืื-Ansible ืื ืืฉืืื ืืืืืื ืืืฉืคืืข ืขื ืืขืจืืื ืืชืคืงืื. ืฉืืื ืื ืืืืืื ืืื ื ืขืฉื ืฉืืืืฉ: ืื "ืืืขืืืจ ืขืจื ืืชืคืงืื", ืืื "ืืฉื ืืช ืืช ืืขืจืืื ืฉืืชืคืงืื ืืฉืชืืฉ ืืื". ืืื ืืืืื ืืื ืชืคืงืืืื. ืืื ืืืืื ืืื ืืฉืืืืช ืืชืคืงืืืื.
ืกื ืืื: ืชืคืงืื ืืื ื ืคืื ืงืฆืื.
ืื ืืื ืืชืคืงืื? ืจืืฉืืช, ืืชืคืงืื ืืฉ ืขืจืื ืืจืืจืช ืืืื (/default/main.yaml
), ืฉื ืืช, ืืชืคืงืื ืืฉ ืกืคืจืืืช ื ืืกืคืืช ืืืืกืื ืงืืฆืื.
ืืื ืืืชืจืื ืืช ืฉื ืขืจืื ืืจืืจืช ืืืื? ืืืืืื ืฉืืคืืจืืืื ืฉื ืืืกืื, ืืืืช ืืขืืืคืืืืช ืืืฉืชื ืืช ืืืื ืฉื Ansible, ืืจืืจืช ืืืืื ืฉื ืชืคืงืืืื ืืื ืืขืืืคืืช ืื ืืืื ืืืืชืจ (ืืื ืืก ืคืจืืืจืื ืฉื ืฉืืจืช ืืคืงืืื ืฉื Ansible). ืื ืืืืจ ืฉืื ืืชื ืฆืจืื ืืกืคืง ืขืจืื ืืจืืจืช ืืืื ืืื ืืืืื ืฉืื ืืขืงืคื ืืช ืืขืจืืื ืืืฉืชื ื ืืืื ืื ืงืืืฆื, ืื ืืจืืจืช ืืืืื ืฉื ืชืคืงืืืื ืืื ืืืงืื ืื ืืื ืืืืื ืขืืืจื. (ืื ื ืงืฆืช ืืฉืงืจ - ืืฉ ืขืื |d(your_default_here)
, ืืื ืื ืื ืื ื ืืืืจืื ืขื ืืงืืืืช ื ืืืืื, ืื ืจืง ืชืคืงืื ืืจืืจืช ืืืื).
ืื ืขืื ื ืืืจ ืืชืคืงืืืื? ืื ืืฉ ืืื ืงืืืืืื ืืฉืืื. ืืื ืื ืกืคืจืืืช ืืืฉืชื ืื, ืื ืงืืืขืืช (ืืืืืจ ืืืืฉืืืช ืขืืืจ ืืชืคืงืื) ืืื ืืื ืืืืช (ืืฉ ืชืื ืืช ืื ืื ืื ืชืื ืืช - include_vars
ืขื {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml
.). ืืื ืืืืจืืืื ืขืืืจ files/
, templates/
. ืืื ืื, ืื ืืืคืฉืจ ืื ืืงืื ืืืืืืื ืืชืืกืคืื ืืฉืื (library/
). ืืื, ืืืฉืืืื ืืืฉืืืืช ืืกืคืจ ืืฉืืง (ืฉืืืื ืืืืืช ืื ืื ืื), ืืืชืจืื ืืืืื ืืื ืืื ืฉืืงืืฆืื ืื ืืืฉืืืื ืืขืจืืื ืืืช, ืืื ืืื ืขืจืืืืช ื ืคืจืืืช.
ืคืจื ื ืืกืฃ: ืืชื ืืืื ืื ืกืืช ืืืฆืืจ ืชืคืงืืืื ืฉืืืื ืืืื ืื ืืฉืืืืฉ ืืืืจ (ืืจื ืืืงืกื). ืขื ืื ืืกืช ืืืืกืคืื, ืืืืงืช ืชืคืงืืืื ืืืืื ืืืืืฉื ืืืขื ื ืฉืืืช.
ืืคืืื, ืืชืคืงืืืื ืืฉ ืฉืชื ืชืืื ืืช ืืฉืืืืช: ืืฉ ืืื ืืจืืจืืช ืืืื (ืชืืื ื ืืืืืืืช) ืืื ืืืคืฉืจืื ืื ืืื ืืช ืืช ืืงืื ืฉืื.
ื ืืืืจ ืืฉืืื ืืืงืืจืืช: ืืชื ืืขืฉืืช ืืฉืืืืช ืืืชื ืืขืฉืืช ืชืคืงืืืื? ืืฉืืืืช ืืกืคืจ ืืฉืืง ืืฉืืฉืืช ืืจืื ืืชืืจ "ืืืง" ืืคื ื/ืืืจื ืชืคืงืืืื, ืื ืืืืื ื ืื ืืื ืขืฆืืื (ืืื ืื ืืืืจืื ืืืืืช ืชืคืงืืืื ืืงืื). ืขืจืืื ืฉื ืืฉืืืืช ืจืืืืืช ืืขืืจืืืช ืืชืคืงืืืื ืืื ืจืฉืื ืืช ืื ืืฉืืขืืช. ืขืืื ืืืืืง ืืกืื ืื ืกืคืฆืืคื - ืื ืืฉืืื ืื ืชืคืงืื. ืชืคืงืืืื ืืกืคืงืื ืืคืจืื ืืื ืืฉืืืืช ืืืจืืจืืช ืืืื, ืืฉืืืืช ืืืคืฉืจืืช ืื ืืงืจืื ืงืื ืืืจ ืืืชืจ. ืืืจื ืืื, ืงืื "ื ืืื" (ืืฉืื ืืืืจืื) ืืืชืจ ืืืื ืก ืืชืคืงืืืื, ืืชืกืจืืื ืขืืจ ื ืืชืืื ืืกืื ืื ืืฉืืื.
ืืคืฉืจ ืืขืฉืืช import_role ืืืฉืืื, ืืื ืื ืืชื ืืืชื ืืช ืื, ืื ืชืืื ืืืื ืืืกืืืจ ืืชืืืฉืช ืืืืคื ืฉืื ืืื ืืชื ืจืืฆื ืืขืฉืืช ืืช ืื.
ืงืืจื ื ืืื ืขืฉืื ืืืืจ ืฉืชืคืงืืืื ืืืืืื ืืืืื ืชืคืงืืืื, ืืชืคืงืืืื ืืืืืื ืืืืืช ืชืืืช ืืจื galaxy.yml, ืืืฉ ืื ืืืจ ื ืืจื ืืืืื include_role
- ืื ื ืืืืืจ ืื ืฉืื ืื ื ืืฉืคืจืื ืืืืื ืืืืช ื-Ansible ืืกืืกื, ืืื ืืืชืขืืืืช ืืืื ืืชืืช.
ืืืคืืื ืืืฉืืืืช
ืืืื ื ืืื ืืืืจ ืืจืืจ ื ืืกืฃ: ืืืคืืื. ืืืขืช ืืื ืืืฉืชืืฉ ืืื ื ืืื ืื ืืืขื ืืืื ืืช. ืื ืืืืื ืืื ืืืคื ืืืจืืจ?
ืืืืืื ืฉืื ื ืืืืจืื ืืช ืืืกืืืืช, ืื ื ืืืืื:
- hosts: group1
tasks:
- foo:
notify: handler1
handlers:
- name: handler1
bar:
ืืืืคืืื ืฉื ืืชืคืงืื ื ืืฆืืื ื-rolename/handlers/main.yaml. ืืืคืืื ืืคืฉืคืฉืื ืืื ืื ืืฉืชืชืคื ืืืืื: ืืฉืืืืช ืืจืื/ืคืืกื_ืืืืืืช ืืืฉืื ืืืคืืื ืืชืคืงืืืื, ืืชืคืงืื ืืืื ืืืฉืื ืืืคืืื ืืืืฆืื. ืขื ืืืช, ืงืจืืืืช "ืฆืืืืืช ืชืคืงืืืื" ืืืืคืืื ืืืจืืืช ืืืจืื ืืืชืจ wtf ืืืฉืจ ืืืจื ืขื ืืืคื ืืจืืืืืืื. (ืืืื ื ื ืืกืฃ ืฉื ืฉืืืืช ืขืืืื ืืืืืฆืืช ืืื ืื ืกืืช ืื ืืืืืจ ืขื ืฉืืืช ืืืคืืื).
ืืืืื ืืขืืงืจื ืืื ืฉืืืฉืืื ืืืืฆืขืช ืชืืื (ืืืืืคืืื ืืืช) (ืชืื ืคืืืก/ืืื ืืก ื when
), ืืืืืคื - ืืคื ืฉืื ืื ืืฆื (ืืืืืืข โโืขื ืฉืจืืคืืช ืจืง ืื ืืื ืืฉืชื ื). ืื ืื ืืืืจ? ืืืืืื, ืืขืืืื ืฉืืืฉืจ ืืชื ืืคืขืื ืืืืฉ, ืื ืื ืืื ืฉืื ืื, ืื ืื ืืืื ืืืคื. ืืืืข ืืืชืื ืฉืขืืื ื ืืืฆืข ืืืคื ืืืฉืจ ืื ืืื ืฉืื ืื ืืืฉืืื ืืืคืงื? ืืืฉื, ืื ืืฉืื ื ืฉืืจ ืืืฉืชื ื, ืืื ืืืืฆืืข ืื ืืืืข ืืืืคื. ืืืืืื, ืืืื ืฉืืจืฉืช ืืืืชื ืืืฉืืชืช ืืื ืืช. ืืชืฆืืจื ืืฉืชื ืชื, ืืฉืืจืืช ืื ืืืคืขื ืืืืฉ. ืืคืขื ืืืื ืฉืชืคืขืื ืืืชื, ืืชืฆืืจื ืืืจ ืื ืืฉืชื ื, ืืืฉืืจืืช ื ืฉืืจ ืขื ืืืจืกื ืืืฉื ื ืฉื ืืชืฆืืจื.
ืื ื ืืชื ืืคืชืืจ ืืช ืืืฆื ืขื ืืชืฆืืจื (ืืืชืจ ืืืืง, ืืชื ืืืื ืืืืฆืื ืืขืฆืื ืคืจืืืืงืื ืจืืกืืจื ืืืืื ืขื ืืืื ืงืืฆืื ืืื', ืืื ืื ืืืจ ืื 'ืืคืฉืจื ืืกืืกื' ืืฉืื ืฆืืจื). ืืื ืืฉ ืขืื ืกืืคืืจ ืืฉืืชืฃ: ืืชืงื ื ืืช ืืืคืืืงืฆืื, ืืงืืื ื ืืืชื .service
-ืงืืืฅ, ืืขืืฉืื ืื ืื ื ืจืืฆืื ืืืชื daemon_reload
ะธ state=started
. ืื ืจืื ืฉืืืงืื ืืืืขื ืืื ืืื ืืืืคื. ืืื ืื ืืชื ืืืคื ืืช ืื ืื ืืืืคื ืืื ืืืฉืืื ืืกืืฃ ืจืฉืืืช ืืฉืืืืช ืื ืชืคืงืื, ืื ืื ืืืืฆืข ืืืืคื ืืืืคืืื ืื ืืื ืคืขื. ืื ืื ืกืคืจ ืืืฉืืงืื ื ืฉืืจ ืืืืฆืข. ืื ืื ืคืืชืจ ืืช ืืขืืืช ืืืคืขืื ืืืืฉ ืืืื (ืืื ื ืืืื ืืืฆืข ืืฉืืื ืขื ืืชืืื ื restarted, ืื ืืืืืืคืืื ืฆืื ืืืืืช), ืืื ืืืืื ืฉืืื ืืขืฉืืช state=started, ืืืฆืืืืช ืืืืืืช ืฉื Playbooks ืขืืื, ืื ืืกืคืจ ืืืืืืจืื ืืืืฆื ืืืื ืื ืืืจื.
ืชืืื ื ืืืืืืช ื ืืกืคืช ืฉื ืืืืคื ืืื ืฉืืื ืื ืกืืชื ืืช ืืคืื. ืื ืืื ืฉืื ืืืื - ืื ืืืืื ื ืืกืฃ ืื ืืกืืจ ืืคืื - ืงื ืืืชืจ ืืงืจืืื. ืื ืื ืืืคืืื ืฉืืืื - ืื ืืชื ืืืฆื ืฉืืืืช ืืงืืื ืืืฉืืื ืฉืืืฆืขื ืืืืคื ืืื ืืืจื ืืืจ ืืจืืฆื ืืจืืฉืื ื, ืืืืคืืื ืืืืฆืขื ืจืง ืืืืจ ืฉืื ืื, ืืืืืจ. ืืชื ืืื ืืกืืืืื - ืืขืชืื ืจืืืงืืช ืืืื. ืืืฉื, ืืคืขื ืืจืืฉืื ื ืืืื ืืืฉ ืฉื ืื ืืืืืจ ืืืชืจ. ืืืืืื ืฉืชืืื ืฉืืืืช ืืงืืื ืืฉื ืืืื ืืฉืืจ. ืืื ืื ืชืคืขืื ืืืชื ืืคืขื ืืฉื ืืื, ืืื ืฉืื ืฉืื ืื.
ืื ืคืจื, ืื ืื ื ืฆืจืืืื ืืืืจ ืขื ืืืืื ืืช ืฉื ืืฉืชื ืื. ืืืืืื, ืื ืชืืืืข ืขื ืืฉืืื ืขื ืืืืื, ืื ืืืื ืืืฉืชื ืื? ืืชื ืืืื ืื ืืฉ ืืฆืืจื ืื ืืืืืช, ืืื ืื ืื ืชืืื ืืจืืืืืืื, ืืืืืื ืื ืืืฉืชื ืื ืืืืขืื ืืืงืืืืช ืฉืื ืื.
... ืื ืืืืคืืื ืืจืื ืคืืืช ืฉืืืืฉืืื ืืืจืื ืืืชืจ ืืขืืืชืืื ืืื ืฉืื ื ืจืืื. ืื ืืชื ืืืื ืืืชืื ืืฉืื ืืคื (ืืื ืกืืกืืืื) ืืื ืืืคืืื, ืขืืืฃ ืืขืฉืืช ืืช ืื ืืืขืืืื. ืื ืื ืื ืืกืชืืจ ืืคื, ืขืืืฃ ืืืชื.
ืืงืืจื ืืืืื ืืฆืืง ืืฆืืื ืฉืื ืื ื listen
ืฉืืืคื ืืืื ืืืชืงืฉืจ ื-notify ืขืืืจ ืืืคื ืืืจ, ืฉืืืคื ืืืื ืืืืื import_tasks (ืฉืืืื ืืขืฉืืช include_role ืขื with_items), ืฉืืขืจืืช ืืืืคื ื-Ansible ืืื Turing-complete, ืฉืืืคืืื ื-include_role ืืฆืืืืื ืืฆืืจื ืกืงืจื ืืช ืขื ืืืคืืื ืืืืฉืืง, ืืื' .ื. - ืืจืืจ ืฉืื ืื ืืื ื ื"ืืกืืืืช").
ืืืจืืช ืฉืืฉ WTF ืืื ืกืคืฆืืคื ืฉืืื ืืืขืฉื ืชืืื ื ืฉืืชื ืฆืจืื ืืืืืจ. ืื ืืืฉืืื ืฉืื ืืืืฆืขืช ืขื delegate_to
ืืืื ืืืืืข, ืื ืืืืคื ืืืชืืื ืืืืฆืข ืืื delegate_to
, ืืืืืจ ืขื ืืืืจื ืฉืื ืืืงืฆื ืืืฉืืง. (ืืืจืืช ืฉืืืืคื, ืืืืื, ืขืฉืื ืืขืฉืืช ืืืช delegate_to
ืืืชื).
ืื ืคืจื, ืื ื ืจืืฆื ืืืืจ ืืื ืืืืื ืขื ืชืคืงืืืื ืืฉืืืืฉ ืืืืจ. ืืคื ื ืฉืืืืกืคืื ืืืคืืขื, ืืื ืจืขืืื ืฉืืชื ืืืื ืืขืฉืืช ืชืคืงืืืื ืืื ืืืจืกืืืื ืฉืืืืืื ืืืืืช ansible-galaxy install
ืืืื. ืขืืื ืขื ืื ืืขืจืืช ืืืคืขืื ืฉื ืื ืืืจืกืืืช ืืื ืืืฆืืื. ืื ืืขืชื: ืื ืื ืขืืื. ืื ืชืคืงืื ืขื ืืกื include_vars
, ืืชืืื ื-100500 ืืงืจืื, ื ืืืื ืืชืืื ืฉื ืืืืื ืฉื ืืืจืืื ืคืื ืชืืื. ืืคืฉืจ ืืืกืืช ืืืชื ืืืืืงืืช ืืืกืืืืืช, ืืื ืืื ืืื ืืืืงื, ืื ืฉืืฉ ืื ืชืืฆืจ ืงืจืืืืื ื ืฉื ืขืจืื ืงืื ืืคืื ืงืฆืื ืืืืืช, ืื ืฉืืฉ ืื "ืชืจืืืฉืื ืืืืืื ืืืืกืื". ืืขืชื ืืื ืฉืืจืื ืืืชืจ ืืื ืื ืืชืคืงืื ืืื ืืื ืืืจื (ืืืจืืืืช ืฆืืงืืืืืืช 1).
ืืื ืฉืคืืืช ืื (ืืคืืจืฉ ืื ืืฆืืจืชื - ืืืืคืก when
ืื ืืืคืก include_vars
ืืคื ืงืืืฆืช ืืฉืชื ืื), ืื ืืชืคืงืื ืืื ืืืชืจ. ืืคืขืืื ืฆืจืื ืืขืฉืืช ืขื ืคืื, ืืื, ืื ื ืืืืจ, ืืื ืฉืืฉ ืคืืืช, ืื ืืืื. ืื ืื ื ืจืื ืืื ืชืคืงืื ืืื ืขื ืืืงืกื (ืื ืขืืื!) ืขื ืืืืจื ืฉื when
ืขืฉืื ืืืืืช ืคืืืช ืขืืืฃ ืืชืคืงืื "ืฉื ืขืฆืื" ืืืืฉ ืืฉืืืืช. ืืจืืข ืฉืื ืืชืคืงืื ืขื ืืืงืกืื ืืื ืืืชืจ ืืื ืืฉืืชื ืืชืืื ืืืชืื ืืฉืื. ืืจืืข ืฉืื ืื ืืืืืจ ืืื ืืฉืืฉืื ื ืฉืืจ ืืืฉ ืื ืืฉื ืฉืื ืืืื "ืืชืคืงืื ืขื ืืืืงืกืื". ืืชื ืคืืชื ืืืชื, ืืืฉ ืืืืฉื ืชืืืืืื, ืฉืืื ื ืืคื ืืฉืืื ืืขืจืืื when
'ืื... ืืื ืื ื ืฆืจืืืื ืืืืื ืืช ืื. ืืืงืื 5 ืืฉืืืืช, ืจืฉืืื ืืื ืืืจืืช ืฉืื ืืื ืื ืืฉืืืจ.
ืืืืงืื ืืืืื
- ืงืฆืช ืขื ืืืื, ืืฉืชื ื ืงืืืฆื, ืชืืกืฃ host_group_vars, hostvars. ืืื ืืงืฉืืจ ืงืฉืจ ืืืจืื ืขื ืกืคืืื. ืืฉืชื ื ืืืงืฃ ืืงืืืืืช, ืืืื ืืืืจืื Ansible. "ืื ืืืคื ืื ืื ื ืืืืกื ืื ืืช ืฉื ืืืฉืชืืฉ ืฉื ืืกื ืื ืชืื ืื?"
jinja: {{ jinja }}
- nosql notype nosense ืคืืกืืืื ื ืจืื. ืื ื ืืฆื ืืื ืืงืื, ืืคืืื ืืืคื ืฉืืชื ืื ืืฆืคื ืืื. ืงืฆืช ืขื!!unsafe
ืืืื ืืขืื.
ืืงืืจ: www.habr.com