เจฐเจฟเจฎเฉเจ เจนเฉเจธเจเจพเจ เจฒเจ SSH เจเจจเฉเจเจธเจผเจจเจพเจ 'เจคเฉ เจเจตเจพเจฌเจฆเฉเจน เจเฉฐเจฎ เจเจฐเจฆเจพ เจนเฉเฅค เจเจน เจเฉฑเจ SSH เจธเฉเจธเจผเจจ เจเฉเจฒเฉเจนเจฆเจพ เจนเฉ, เจฒเฉเจ เจเจจ เจเจฐเจฆเจพ เจนเฉ, เจจเฉเฉฑเจเจตเจฐเจ เจเฉฑเจคเฉ เจชเจพเจเจฅเจจ เจเฉเจก เจฆเฉ เจจเจเจฒ เจเจฐเจฆเจพ เจนเฉ เจ เจคเฉ เจเจธเจจเฉเฉฐ เจเฉฑเจ เจตเฉฑเจเจฐเฉ เจ เจธเจฅเจพเจ เจซเจพเจเจฒ เจตเจฟเฉฑเจ เจฒเจฟเจเจฆเจพ เจนเฉเฅค เจเจธ เจคเฉเจ เจฌเจพเจ เจฆ, เจเจน เจเจธ เจซเจพเจเจฒ เจจเฉเฉฐ เจฐเจฟเจฎเฉเจ เจฎเจธเจผเฉเจจ 'เจคเฉ เจเจฒเจพเจเจเจฆเจพ เจนเฉเฅค เจเจชเจฐเฉเจธเจผเจจเจพเจ เจฆเจพ เจเจน เจธเจพเจฐเจพ เจเฉเจฐเจฎ เจเจพเจซเจผเฉ เจฒเฉฐเจฌเจพ เจ เจคเฉ เจฅเจเจพเจตเจ เจตเจพเจฒเจพ เจนเฉ, เจเจธเจฒเจ เจเจธเจจเฉเฉฐ เจ เจจเฉเจเฉเจฒ เจฌเจฃเจพเจเจฃ เจฆเฉ เจเจ เจคเจฐเฉเจเฉ เจนเจจเฅค
เจเจนเจจเจพเจ เจตเจฟเฉฑเจเฉเจ เจเฉฑเจ เจคเจฐเฉเจเจพ เจนเฉ requiretty
เจคเฉเจนเจพเจกเฉ เจตเจฟเฉฑเจ sudo เจฒเจ เจธเฉเจเจฟเฉฐเจ /etc/sudoers
เจฐเจฟเจฎเฉเจ เจฎเจธเจผเฉเจจ 'เจคเฉ เจซเจพเจเจฒ)
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 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 เจซเจพเจเจฒเจพเจ เจฌเจฃเจพเจเจฃ เจฒเจ เจเจธเจจเฉเฉฐ 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) เจฐเจฟเจฎเฉเจ เจฎเจธเจผเฉเจจเจพเจ เจฆเฉ เจจเจพเจฒ เจเฉฑเจ เจฆเฉเจฐเจฟเจธเจผ เจฆเฉ เจเฉเจธเจผเจฟเจธเจผ เจเจฐเฉเจ, เจเจฆเจพเจนเจฐเจจ เจฒเจ เจเฉฑเจ เจฐเจฟเจฎเฉเจ เจนเฉเจธเจ เจตเจฟเฉฑเจ เจซเจพเจเจฒเจพเจ เจฆเฉ เจจเจเจฒ เจเจฐเจจ เจฆเจพ เจฆเฉเจฐเจฟเจธเจผ:
เจเจฟเจตเฉเจ เจเจฟ เจคเฉเจธเฉเจ เจฆเฉเจ เจธเจเจฆเฉ เจนเฉ, เจฎเจพเจเจเฉเจเฉเจจ เจเจนเจจเจพเจ เจฆเฉเจฐเจฟเจธเจผเจพเจ เจตเจฟเฉฑเจ เจธเจพเจกเจพ เจธเจฎเจพเจ เจ เจคเฉ เจเจตเจพเจเจพเจ เจฆเฉเจตเจพเจ เจจเฉเฉฐ เจฌเจเจพเจเจเจฆเจพ เจนเฉเฅค เจชเจฐ เจเฉเจเจฐ เจฐเฉเจเจพเจตเจ เจเจตเจพเจฌเจฆเฉเจนเฉ เจตเจฟเฉฑเจ เจจเจนเฉเจ เจนเฉ, เจชเจฐ เจเจฆเจพเจนเจฐเจจ เจฒเจ เจเฉฑเจ เจกเจฟเจธเจ เจเจพเจ เจจเฉเฉฑเจเจตเจฐเจ เจฆเฉ I/O เจตเจฟเฉฑเจ, เจเจพเจ เจเจฟเจคเฉ เจนเฉเจฐ, เจคเจพเจ เจเจน เจเจฎเฉเจฆ เจเจฐเจจเจพ เจเจเจพ เจนเฉ เจเจฟ Mitogen เจธเจพเจกเฉ เจฎเจฆเจฆ เจเจฐเฉเจเจพเฅค
เจเจ เจชเจพเจเจช เจฆเฉ เจตเจฐเจคเฉเจ เจเจฐเจฆเฉ เจนเฉเจ 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
Mitogen เจฆเฉ เจจเจพเจฒ เจเจธ เจจเฉเฉฐ 12 เจธเจเจฟเฉฐเจ เจฒเฉฑเจเฉ, เจเจฟเจตเฉเจ เจเจฟ เจเจธ เจคเฉเจ เจฌเจฟเจจเจพเจเฅค
เจชเฉเจ 'เจคเฉ
เจฎเจพเจเจเฉเจเจจ เจฎเฉเจกเฉเจเจฒ เจจเฉเฉฐ เจคเฉเจเจผ เจจเจนเฉเจ เจเจฐ เจธเจเจฆเจพ เจเจฆเฉเจ เจเจน เจเฉฑเจฒ เจฐเจฟเจนเจพ เจนเฉเฉฐเจฆเจพ เจนเฉเฅค เจเจน เจธเจฟเจฐเจซ เจเจธ เจฎเฉเจกเฉเจเจฒ เจฆเฉ เจเจเจเจผเฉเจเจฟเจเจธเจผเจจ เจจเฉเฉฐ เจเจฟเฉฐเจจเฉ เจเจฒเจฆเฉ เจธเฉฐเจญเจต เจนเฉ เจธเจเฉ เจฌเจฃเจพ เจธเจเจฆเจพ เจนเฉเฅค
เจเจธ เจฒเจ, เจคเฉเจนเจพเจกเฉ เจคเฉเจจเจพเจคเฉ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจกเฉเจเจ เจฐเฉเจเจพเจตเจเจพเจ เจจเฉเฉฐ เจฒเฉฑเจญเจฃเจพ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจนเฉ เจ เจคเฉ เจเฉเจเจฐ เจเจน เจเจตเจพเจฌเจฆเฉเจน เจฆเฉ เจเจพเจฐเจจ เจนเจจ, เจคเจพเจ Mitogen เจเจนเจจเจพเจ เจจเฉเฉฐ เจนเฉฑเจฒ เจเจฐเจจ เจตเจฟเฉฑเจ เจคเฉเจนเจพเจกเฉ เจฎเจฆเจฆ เจเจฐเฉเจเจพ เจ เจคเฉ เจคเฉเจนเจพเจกเฉเจเจ เจชเจฒเฉเจฌเฉเฉฑเจเจพเจ เจจเฉเฉฐ เจฒเจพเจเฉ เจเจฐเจจ เจตเจฟเฉฑเจ เจฎเจนเฉฑเจคเจตเจชเฉเจฐเจจ เจคเฉเจฐ 'เจคเฉ เจคเฉเจเจผเฉ เจฒเจฟเจเจตเฉเจเจพเฅค
เจธเจฐเฉเจค: www.habr.com