เชฐเชฟเชฎเซเช เชฏเชเชฎเชพเชจเซ เชฎเชพเชเซ SSH เชเชจเซเชเซเชถเชจเซเชธ เชชเชฐ เชเชตเชพเชฌเชฆเชพเชฐ เชเชพเชฎ เชเชฐเซ เชเซ. เชคเซ SSH เชธเชคเซเชฐ เชเซเชฒเซ เชเซ, เชฒเซเช เชเชจ เชเชฐเซ เชเซ, เชจเซเชเชตเชฐเซเช เชชเชฐ เชชเชพเชฏเชฅเซเชจ เชเซเชกเชจเซ เชจเชเชฒ เชเชฐเซ เชเซ เช เชจเซ เชคเซเชจเซ เช เชฒเช เช เชธเซเชฅเชพเชฏเซ เชซเชพเชเชฒเชฎเชพเช เชฒเชเซ เชเซ. เชคเซ เชชเชเซ, เชคเซ เช เชซเชพเชเชฒเชจเซ เชฐเชฟเชฎเซเช เชฎเชถเซเชจ เชชเชฐ เชเชฒเชพเชตเซ เชเซ. เชเชพเชฎเชเซเชฐเซเชจเซ เช เชธเชฎเชเซเชฐ เชเซเชฐเชฎ เชเชฃเซ เชฒเชพเชเชฌเซ เช เชจเซ เชเชเชเชพเชณเชพเชเชจเช เชเซ, เชคเซเชฅเซ เชคเซเชจเซ เชเชชเซเชเชฟเชฎเชพเชเช เชเชฐเชตเชพเชจเซ เชตเชฟเชตเชฟเชง เชฐเซเชคเซ เชเซ.
เชเชฎเชพเชเชจเซ เชเช เชฐเซเชค เชเซ requiretty
เชคเชฎเชพเชฐเชพเชฎเชพเช เชธเซเชกเซ เชฎเชพเชเซ เชธเซเชเชฟเชเช /etc/sudoers
เชฐเชฟเชฎเซเช เชฎเชถเซเชจ เชชเชฐ เชซเชพเชเชฒ)
เช
เชจเซเชธเชฟเชฌเชฒเชจเซ เชเชตเชฐเชเซเชฒเซเช เชเชฐเชตเชพเชจเซ เชจเชตเซ เชฐเซเชค เชชเชพเชฏเชฅเซเชจ เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชเชนเซเชตเชพเชฏ เชเซ
เชเซเชเซเชเชธ เชธเชเชเซเชเซเชฎเชพเช Mitogen เชคเชฎเชพเชฐเชพ เชเชตเชพเชฌเซ เชเซเชกเชจเซ เชเชฃเซ เชตเชเชค เชเชกเชชเซ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ เช เชจเซ เชเซเชฐเชพเชซเชฟเช เชตเชชเชฐเชพเชถเชฎเชพเช เชจเซเชเชงเชชเชพเชคเซเชฐ เชเชเชพเชกเซ เชเชฐเซ เชถเชเซ เชเซ. เชเชพเชฒเซ เชธเซเชฅเซ เชตเชงเซ เชฒเซเชเชชเซเชฐเชฟเชฏ เชเชชเชฏเซเชเชจเชพ เชเชฟเชธเซเชธเชพเช เชคเชชเชพเชธเซเช เช เชจเซ เชเซเชเช เชเซ เชคเซ เชเชชเชฃเชจเซ เชเซเชเชฒเซ เชฎเชฆเชฆ เชเชฐเซ เชเซ.
เชฐเชฟเชฎเซเช เชฎเชถเซเชจ เชชเชฐ เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชซเชพเชเชฒเซ เชฌเชจเชพเชตเชตเชพ, เชชเซเชเซเชเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเชตเชพ, เชฐเชฟเชฎเซเช เชฎเชถเซเชจเชฎเชพเช เช เชจเซ เชคเซเชฎเชพเชเชฅเซ เชซเชพเชเชฒเซเชจเซ เชจเชเชฒ เชเชฐเชตเชพ เชฎเชพเชเซ เชนเซเช เชเชตเชพเชฌเซเชฌเชฒเชจเซ เชธเซเชฅเซ เชตเชงเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช. เชเชฆเชพเช เชคเชฎเชพเชฐเซ เชชเชพเชธเซ เช เชจเซเชฏ เชเชฆเชพเชนเชฐเชฃเซ เชเซ - เชเชฟเชชเซเชชเชฃเซเชเชฎเชพเช เชฒเชเซ.
เชเชพเชฒเซ เชเชเช!
Ansible เชฎเชพเชเซ Mitogen เชฐเซเชชเชฐเซเชเชพเชเชเชจ เชเซเชฌ เช เชธเชฐเชณ เชเซ:
เชฎเชฟเชเซเชเซเชจ เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชเชจเซเชธเซเชเซเชฒ เชเชฐเซ:
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
เชเชพเชฒเซ Mitogen เชธเชพเชฅเซ เช เชจเซ เชตเชเชฐ เชตเชฐเซเชเซเชฏเซเช เชฒเซเชจเชตเชฎเชพเช 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
เชฎเชนเซเชฐเชฌเชพเชจเซ เชเชฐเซเชจเซ เชจเซเชเชง เชเชฐเซ เชเซ Mitogen 0.2.7 เชเชจเซเชธเชฟเชฌเชฒ 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 เชซเชพเชเชฒเซ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซ Mitogen เชธเชพเชฅเซ เช เชจเซ เชตเชเชฐ เชเชฒเชพเชตเซเช:
time mitogen-ansible-playbook file_creation.yml -i hosts -e n=10 &>/dev/null
real 0m2.603s
user 0m1.152s
sys 0m0.096s
time pure-ansible-playbook file_creation.yml -i hosts -e n=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 -e n=100 &>/dev/null
real 0m51.775s
user 0m8.039s
sys 0m6.305s
time mitogen-ansible-playbook file_creation.yml -i hosts -e n=100 &>/dev/null
real 0m4.331s
user 0m1.903s
sys 0m0.197s
เชชเชฐเชฟเชฃเชพเชฎเซ, เช
เชฎเซ เช
เชฎเชฒเซเชเชฐเชฃเชจเซ 10 เชเชฃเชพเชฅเซ เชตเชงเซ เชตเซเช เชเชชเซเชฏเซ!
เชนเชตเซ เชเชพเชฒเซ เชตเชฟเชตเชฟเชง เชฆเซเชถเซเชฏเซ เช
เชเชฎเชพเชตเซเช เช
เชจเซ เชเซเชเช เชเซ เชฌเชงเซเช เชเชชเชฃเชพ เชฎเชพเชเซ เชเซเชเชฒเซเช เชเชกเชชเซ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ:
-
เชธเซเชฅเชพเชจเชฟเช เชเช (เชฎเซเชกเซเชฏเซเชฒ เชธเชพเชฅเซ
copy
):
-
เชธเชพเชฅเซ เชฐเชฟเชฎเซเช เชนเซเชธเซเช เชชเชฐ เชซเชพเชเชฒเซ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชเซเชจเซ เชธเซเชเซเชฐเชฟเชชเซเช
copy
เชฎเซเชกเซเชฏเซเชฒ
-
เชฐเชฟเชฎเซเช เชนเซเชธเซเชเชฅเซ เชธเซเชฅเชพเชจเชฟเชเชฎเชพเช เชซเชพเชเชฒเซ เชกเชพเชเชจเชฒเซเชก เชเชฐเชตเชพเชจเซเช เชฆเซเชถเซเชฏ:
เชเชพเชฒเซ เชเชฃเชพ (3) เชฐเชฟเชฎเซเช เชฎเชถเซเชจเซ เชธเชพเชฅเซ เชเช เชฆเซเชถเซเชฏ เช
เชเชฎเชพเชตเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฐเชฟเชฎเซเช เชนเซเชธเซเช เชชเชฐ เชซเชพเชเชฒเซเชจเซ เชจเชเชฒ เชเชฐเชตเชพเชจเซเช เชฆเซเชถเซเชฏ:
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, Mitogen เช เชฆเซเชถเซเชฏเซเชฎเชพเช เชธเชฎเชฏ เช เชจเซ เชเซเชฐเชพเชซเชฟเช เชฌเชเชจเซ เชฌเชเชพเชตเซ เชเซ. เชชเชฐเชเชคเซ เชเซ เช เชกเชเชฃ เชเชจเซเชธเชฟเชฌเชฒเชฎเชพเช เชจ เชนเซเชฏ, เชชเชฐเชเชคเซ เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ เชกเชฟเชธเซเช เช เชฅเชตเชพ เชจเซเชเชตเชฐเซเชเชจเชพ I/Oเชฎเชพเช เช เชฅเชตเชพ เชฌเซเชเซ เชเซเชฏเชพเชเช เชนเซเชฏ, เชคเซ เช เชชเซเชเซเชทเชพ เชฐเชพเชเชตเซ เชฎเซเชถเซเชเซเชฒ เชเซ เชเซ Mitogen เช เชฎเชจเซ เชฎเชฆเชฆ เชเชฐเชถเซ.
เชเชพเชฒเซ pip เชจเซ เชเชชเชฏเซเช เชเชฐเซเชจเซ yum/dnf เช เชจเซ python เชฎเซเชกเซเชฏเซเชฒเซ เชธเชพเชฅเซ เชชเซเชเซเชเซ เชธเซเชฅเชพเชชเชฟเชค เชเชฐเชตเชพ เชธเชพเชฅเซ เชธเซเชเซเชฐเชฟเชชเซเชเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช. เชชเซเชเซเชเซ เชเซเชถ เชเชฐเชตเชพเชฎเชพเช เชเชตเซเชฏเชพ เชนเชคเชพ เชเซเชฅเซ เชจเซเชเชตเชฐเซเช เช เชตเชฐเซเชงเซ เชชเชฐ เชจเชฟเชฐเซเชญเชฐ เชจ เชฐเชนเซ:
---
- 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 เชธเซเชเชจเซเชกเชจเซ เชธเชฎเชฏ เชฒเชพเชเซเชฏเซ, เชเซเชเชฒเซ เชคเซเชจเชพ เชตเชเชฐ เชฅเชฏเซ.
เชชเซเชทเซเช เชชเชฐ
เชเซเชฏเชพเชฐเซ เชคเซ เชเชพเชฒเซ เชฐเชนเซเชฏเซเช เชนเซเชฏ เชคเซเชฏเชพเชฐเซ เชฎเชฟเชเซเชเชจ เชฎเซเชกเซเชฏเซเชฒเชจเซ เชเชกเชชเซ เชฌเชจเชพเชตเซ เชถเชเชคเซเช เชจเชฅเซ. เชคเซ เชซเชเซเชค เช เชฎเซเชกเซเชฏเซเชฒเชจเชพ เช เชฎเชฒเชจเซ เชถเชเซเชฏ เชคเซเชเชฒเซเช เชเชกเชชเซ เชฌเชจเชพเชตเซ เชถเชเซ เชเซ.
เชคเซเชฅเซ, เชคเชฎเชพเชฐเชพ เชเชฎเชพเชตเชเชฎเชพเช เชคเชฎเชพเชฐเซ เช เชกเชเชฃเซ เชถเซเชงเชตเชพเชจเซเช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ เช เชจเซ เชเซ เชคเซ เชเชตเชพเชฌเซ เชเชชเชตเชพเชจเชพ เชเชพเชฐเชฃเซ เชเซ, เชคเซ เชฎเชฟเชเซเชเชจ เชคเชฎเชจเซ เชคเซ เชเชเซเชฒเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเชถเซ เช เชจเซ เชคเชฎเชพเชฐเซ เชชเซเชฒเซเชฌเซเชเชจเชพ เช เชฎเชฒเซเชเชฐเชฃเชจเซ เชจเซเชเชงเชชเชพเชคเซเชฐ เชฐเซเชคเซ เชเชกเชชเซ เชฌเชจเชพเชตเชถเซ.
เชธเซเชฐเซเชธ: www.habr.com