рдорд┐рддреЛрдЬреЗрди рдХреЗ рд╕рд╛рде рдЕрдиреНрд╕рд┐рдмрд▓ рд╕реНрдкреАрдб

Ansible рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдкреНрд░рдмрдВрдзрди рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдмрди рдЧрдпрд╛ рд╣реИ ред 2015 рдореЗрдВ Red Hat рдХреЛ рдЦрд░реАрджреЗ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкреНрд░рддрд┐рднрд╛рдЧрд┐рдпреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣рдЬрд╛рд░реЛрдВ рд╕реЗ рдЕрдзрд┐рдХ рд╣реЛ рдЧрдИ рдФрд░ Ansible рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рддреИрдирд╛рддреА рдФрд░ рдСрд░реНрдХреЗрд╕реНрдЯреНрд░реЗрд╢рди рдкреНрд░рдгрд╛рд▓реА рдереАред рдЗрд╕рдХреЗ рд╡реНрдпрд╛рдкрдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрд╣реБрдд рдкреНрд░рднрд╛рд╡рд╢рд╛рд▓реА рд╣реИрдВред


рд╕реБрджреВрд░ рдореЗрдЬрдмрд╛рди рдХреЗ рд▓рд┐рдП SSH рдХрдиреЗрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдПрдХ рдПрд╕рдПрд╕рдПрдЪ рд╕рддреНрд░ рдЦреЛрд▓рддрд╛ рд╣реИ, рдПрдХ рд▓реЙрдЧрд┐рди рдмрдирд╛рддрд╛ рд╣реИ, рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдкрд╛рдпрдерди рдХреЛрдб рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд▓рд┐рдЦрддрд╛ рд╣реИред рдЙрд╕рдХреЗ рдмрд╛рдж, рд╡рд╣ рдЗрд╕ рдлрд╛рдЗрд▓ рдХреЛ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдЪрд▓рд╛рддрд╛ рд╣реИред рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рдпрд╣ рдкреВрд░рд╛ рдХреНрд░рдо рдХрд╛рдлреА рд▓рдВрдмрд╛ рдФрд░ рдердХрд╛рдК рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░рдиреЗ рдХреЗ рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЗ рд╣реИрдВред


рдЗрдирдореЗрдВ рд╕реЗ рдПрдХ рддрд░реАрдХрд╛ рдПрд╕рдПрд╕рдПрдЪ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рд╣рд░ рдмрд╛рд░ рдПрдХ рдирдпрд╛ рд╕рддреНрд░ рдЦреЛрд▓рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд╕рдПрд╕рдПрдЪ рд╕рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╣рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рдмрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред (рдмрд╕ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдореЗрдВ рдЕрдкрдиреЗ /etc/sudoers рдлрд╝рд╛рдЗрд▓ рдореЗрдВ sudo рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ requiretty рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╛рдж рд░рдЦреЗрдВ)


"рдУрд╡рд░рдХреНрд▓реЙрдХ" рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдирдпрд╛ рддрд░реАрдХрд╛ рд╣реИ, рдорд┐рд╕реНрдЯреЛрдЬреЗрди рдирд╛рдордХ рдЕрдЬрдЧрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕рд╛рде рд╣реИред рдЕрдЧрд░ рдХрд┐рд╕реА рдиреЗ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реБрдирд╛ рд╣реИ, рддреЛ рдореИрдВ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЗрд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ред рдпрд╣ рдПрдХ рджреВрд░рд╕реНрде рдорд╢реАрди рдкрд░ рдЕрдЬрдЧрд░ рдХреЛрдб рдХреЗ рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ Ansible рд╕рд┐рд░реНрдл рдПрдХ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдорд┐рдЯреЛрдЬреЗрди рдПрдХ рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдПрдХ рдпреВрдирд┐рдХреНрд╕ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкрд╛рдЗрдерди рдХреЛрдб рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдЬрд╝рд▓реАрдм рдФрд░ рдЕрдЪрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЗрд╕реЗ рддреЗрдЬреА рд╕реЗ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдмрдЪрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╡рд░рдг рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрдврд╝рдирд╛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдкреГрд╖реНрда рдкрд░ рд╣реИред рд▓реЗрдХрд┐рди рдЖрдЬ рд╣рдо рдХреЗрд╡рд▓ рдПрдиреНрд╕рд┐рдмрд▓ рдХреЗ рд╕рд╛рде рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред


рдХреБрдЫ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдорд╛рдЗрдЯреЛрдЬрди рдХрдИ рдмрд╛рд░ рдЖрдкрдХреЗ Ansible рдХреЛрдб рдХреЛ рддреЗрдЬрд╝ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЯреНрд░реИрдлрд╝рд┐рдХ рдЦрдкрдд рдХреЛ рдХрд╛рдлреА рдХрдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдЗрдП рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ рдФрд░ рджреЗрдЦреЗрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╣рдорд╛рд░реА рдорджрдж рдХрд░рддрд╛ рд╣реИред


рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдпреЛрдЧреНрдп рд╣реИ: рдПрдХ рджреВрд░рд╕реНрде рдорд╢реАрди рдкрд░ рд╡рд┐рдиреНрдпрд╛рд╕ рдлрд╛рдЗрд▓ рдмрдирд╛рдирд╛, рд╕рдВрдХреБрд▓ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛, рджреВрд░рд╕реНрде рдорд╢реАрди рд╕реЗ рдлрд╛рдЗрд▓ рдХреА рдирдХрд▓ рдХрд░рдирд╛ред рд╢рд╛рдпрдж рдЖрдкрдХреЗ рдкрд╛рд╕ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рд╣реИрдВ - рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВред


рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!


Ansible рдХреЗ рд▓рд┐рдП рдорд┐рдЯреЛрдЬрди рдХрд╛ рд╡рд┐рдиреНрдпрд╛рд╕ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ:
рдорд┐рдЯреЛрдЬрди рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 pip install mitogen 

рдЕрдм рджреЛ рд╕рдорддреБрд▓реНрдп рддрд░реАрдХреЗ рд╣реИрдВ - рдпрд╛ рддреЛ ansible.cfg рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡рд┐рдХрд▓реНрдк рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╛ рдЖрд╡рд╢реНрдпрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдЪрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред


рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рд╕реНрдерд╛рдкрд┐рдд рдорд┐рддреЛрдЬрди рдХрд╛ рдорд╛рд░реНрдЧ /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy ред рддрдм:


 export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy export ANSIBLE_STRATEGY=mitogen_linear 

рдпрд╛


 [defaults] strategy = mitogen_linear strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy 

Miten рдХреЗ рд╕рд╛рде рдФрд░ рдмрд┐рдирд╛ virtualenv рдореЗрдВ Ansible рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ:


 virtualenv mitogen_ansible ./mitogen_ansible/bin/pip install ansible==2.7.10 mitogen virtualenv pure_ansible ./pure_ansible/bin/pip install ansible==2.7.10 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдорд┐рддреЛрдЬреЗрди 0.2.7 Ansible 2.8 (рдордИ 2019 рддрдХ) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ


рд╣рдо рдЙрдкрдирд╛рдо:


 alias pure-ansible-playbook='$(pwd)/pure_ansible/bin/ansible-playbook' alias mitogen-ansible-playbook='ANSIBLE_STRATEGY_PLUGINS=$(pwd)/mitogen_ansible/lib/python3.7/site-packages/ansible_mitogen/plugins/strategy ANSIBLE_STRATEGY=mitogen_linear $(pwd)/mitogen_ansible/bin/ansible-playbook' 

рдЕрдм рд░рд┐рдореЛрдЯ рдорд╢реАрди рдкрд░ рдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рд╡рд╛рд▓реА рдкреНрд▓реЗрдмреБрдХ рдЪрд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:


 --- - hosts: all gather_facts: false tasks: - name: Create files with copy content module copy: content: | test file {{ item }} dest: ~/file_{{ item }} with_sequence: start=1 end={{ n }} 

рдФрд░ 10 рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдорд┐рддреЛрдЬрди рдХреЗ рд╕рд╛рде рдФрд░ рдЙрд╕рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рд╛рдПрдВ:


 time mitogen-ansible-playbook file_creation.yml -i hosts -en=10 &>/dev/null real 0m2.603s user 0m1.152s sys 0m0.096s time pure-ansible-playbook file_creation.yml -i hosts -en=10 &>/dev/null real 0m5.908s user 0m1.745s sys 0m0.643s 

рд╣рдо 2-рдЧреБрдирд╛ рд╕реБрдзрд╛рд░ рджреЗрдЦрддреЗ рд╣реИрдВред рдЖрдЗрдП 20, 30, ..., 100 рдлрд╛рдЗрд▓реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВ:


 time pure-ansible-playbook file_creation.yml -i hosts -en=100 &>/dev/null real 0m51.775s user 0m8.039s sys 0m6.305s time mitogen-ansible-playbook file_creation.yml -i hosts -en=100 &>/dev/null real 0m4.331s user 0m1.903s sys 0m0.197s 

рдирддреАрдЬрддрди, рд╣рдордиреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ 10 рд╕реЗ рдЕрдзрд┐рдХ рдмрд╛рд░ рддреЗрдЬ рдХрд░ рджрд┐рдпрд╛!
рдЕрдм рд╡рд┐рднрд┐рдиреНрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдХреЛ рдЖрдЬрд╝рдорд╛рддреЗ рд╣реИрдВ рдФрд░ рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рд╕рдм рдХреБрдЫ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рддреЗрдЬрд╝ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


  • рд╕реНрдерд╛рдиреАрдп (рджреВрд░рд╕реНрде рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде) рд╕реЗ рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдХреЙрдкреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
    рдлрд╛рдЗрд▓реЗрдВ рдЕрдкрд▓реЛрдб рдХрд░ рд░рд╣рд╛ рд╣реИ


  • copy рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рдкрд░ рдлрд╝рд╛рдЗрд▓реЗрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреНрд░рд┐рдкреНрдЯ:
    рдлрд╛рдЗрд▓реЗрдВ рдмрдирд╛рдирд╛


  • рджреВрд░рд╕реНрде рд╣реЛрд╕реНрдЯ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдкрд░рд┐рджреГрд╢реНрдп:
    рдлрд╛рдЗрд▓реЗрдВ рд▓рд╛ рд░рд╣рд╛ рд╣реИ


  • рдЬрд┐рдирдЬрд╛ рдореЗрдВ рдХреБрдЫ рдЪрд░ рдФрд░ рдЧрдгрдирд╛рдУрдВ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд░реНрдкрд┐рдд рдореЗрдЬрдмрд╛рди рдкрд░ рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ
    рдЯреЗрдореНрдкрд▓реЗрдЯ рдлрд╝рд╛рдЗрд▓реЗрдВ



рдЖрдЗрдП рдХрдИ (3) рджреВрд░рд╕реНрде рдорд╢реАрдиреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рджреВрд░рд╕реНрде рдореЗрдЬрдмрд╛рди рдХреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдкрд░рд┐рджреГрд╢реНрдп:
рдХрдИ рдореЗрдЬрдмрд╛рдиреЛрдВ рдХреЛ рдлрд╛рдЗрд▓ рдЕрдкрд▓реЛрдб рдХрд░рдирд╛


рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЗрди рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рдорд┐рддреЛрдЬрди рд╣рдореЗрдВ рд╕рдордп рдФрд░ рдпрд╛рддрд╛рдпрд╛рдд рджреЛрдиреЛрдВ рдмрдЪрд╛рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЕрдЧрд░ "рдЕрдбрд╝рдЪрди" Ansible рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП I / O рдбрд┐рд╕реНрдХ рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ, рдпрд╛ рдХрд╣реАрдВ рдФрд░, рддреЛ рдпрд╣ рдЙрдореНрдореАрдж рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХрд┐ Mitogen рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдЧрд╛ред


рдЪрд▓реЛ рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпрдо / рдбреАрдПрдирдПрдл рдФрд░ рдЕрдЬрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдкреИрдХреЗрдЬ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдкреИрдХреЗрдЬ рдХреИрд╢ рдХрд┐рдП рдЧрдП рдереЗ рддрд╛рдХрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдореЗрдВ рдЧреНрд▓рд┐рдЪ рдкрд░ рдирд┐рд░реНрднрд░ рди рд╣реЛрдВ:


 --- - hosts: all gather_facts: false tasks: - name: Install packages become: true package: name: - samba - httpd - nano - ruby state: present - name: Install pip modules become: true pip: name: - pytest-split-tests - bottle - pep8 - flask state: present 

рдорд┐рддреЛрдЬреЗрди рдХреЗ рд╕рд╛рде, рдЗрд╕рдХреЗ рдмрд┐рдирд╛ 12 рд╕реЗрдХрдВрдб рд▓рдЧреЗред
рдорд┐рддреНрд░реЛрдЬреЗрди рдХреЗ рд▓рд┐рдП Ansible рдкреГрд╖реНрда рдкрд░, рдЖрдк рдЕрдиреНрдп рдмреЗрдВрдЪрдорд╛рд░реНрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдкреГрд╖реНрда рдкрд░ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ:


рдЬрдм рдпрд╣ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛрддрд╛ рд╣реИ рддреЛ рдорд╛рдЗрдЯреЛрдЬрди рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЧрддрд┐ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдХреЗрд╡рд▓ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдпрдерд╛рд╕рдВрднрд╡ рддреЗрдЬ рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕рд▓рд┐рдП, рддреИрдирд╛рддреА рдореЗрдВ рдЕрдкрдиреА рдЕрдбрд╝рдЪрдиреЛрдВ рдХреЛ рдЦреЛрдЬрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдФрд░ рдпрджрд┐ рд╡реЗ рдЕрдиреНрд╕рд┐рдмрд▓ рдХреЗ рдХрд╛рд░рдг рд╣реИрдВ, рддреЛ рдорд┐рддреЛрдЬреЗрди рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛ рдФрд░ рдЖрдкрдХреА рдкреНрд▓реЗрдмреБрдХ рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдореЗрдВ рдХрд╛рдлреА рддреЗрдЬреА рд▓рд╛рдПрдЧрд╛ред


рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛрдбрд╝реА рдЧрдИ

Source: https://habr.com/ru/post/hi453520/


All Articles