ื™ืกื•ื“ื•ืช Ansible, ืฉื‘ืœืขื“ื™ื• ืกืคืจื™ ื”ืžืฉื—ืงื™ื ืฉืœืš ื™ื”ื™ื• ื’ื•ืฉ ืคืกื˜ื” ื“ื‘ื™ืงื”

ืื ื™ ืขื•ืฉื” ื”ืจื‘ื” ื‘ื™ืงื•ืจื•ืช ืขืœ ืงื•ื“ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”