เดฎเตˆเดฑเตเดฑเต‹เดœเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เตปเดธเดฟเดฌเดฟเตพ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต

เด…เดธเดพเดงเตเดฏเด‚ เดเดฑเตเดฑเดตเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เด’เดจเตเดจเดพเดฏเดฟ เดฎเดพเดฑเดฟ เดธเดฟเดธเตเดฑเตเดฑเด‚ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดฎเดพเดจเต‡เดœเตเดฎเต†เดจเตเดฑเต. เดถเต‡เดทเด‚ Red Hat เด†เดฃเต เดตเดพเด™เตเด™เดฟเดฏเดคเต 2015-เตฝ เดจเดฎเตเดชเตผ เดชเดฆเตเดงเดคเดฟ เดชเด™เตเด•เดพเดณเดฟเด•เตพ เด†เดฏเดฟเดฐเด•เตเด•เดฃเด•เตเด•เดฟเดจเต เด•เดตเดฟเดžเตเดžเต, เด…เตปเดธเดฟเดฌเดฟเตพ เด’เดฐเตเดชเด•เตเดทเต‡ เดเดฑเตเดฑเดตเตเด‚ เด•เต‚เดŸเตเดคเตฝ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจ เดตเดฟเดจเตเดฏเดพเดธเดตเตเด‚ เด“เตผเด•เตเด•เดธเตเดŸเตเดฐเต‡เดทเตป เดธเด‚เดตเดฟเดงเดพเดจเดตเตเด‚ เด†เดฏเดฟ เดฎเดพเดฑเดฟ. เด…เดคเดฟเดจเตเดฑเต† เดตเดฟเดชเตเดฒเดฎเดพเดฏ เด†เดชเตเดฒเดฟเด•เตเด•เต‡เดทเดจเตเด•เตพ เดตเดณเดฐเต† เดถเตเดฐเดฆเตเดงเต‡เดฏเดฎเดพเดฃเต.

เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดนเต‹เดธเตเดฑเตเดฑเตเด•เดณเดฟเดฒเต‡เด•เตเด•เตเดณเตเดณ เดŽเดธเตเดŽเดธเตเดŽเดšเตเดšเต เด•เดฃเด•เตเดทเดจเตเด•เดณเดฟเดฒเต‚เดŸเต† เด…เตปเดธเดฟเดฌเดฟเตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต. เด‡เดคเต เด’เดฐเต SSH เดธเต†เดทเตป เดคเตเดฑเด•เตเด•เตเด•เดฏเตเด‚ เดฒเต‹เด—เดฟเตป เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดฒเต‚เดŸเต† เดชเตˆเดคเตเดคเตบ เด•เต‹เดกเต เดชเด•เตผเดคเตเดคเตเด•เดฏเตเด‚ เด’เดฐเต เดชเตเดฐเดคเตเดฏเต‡เด• เดคเดพเตฝเด•เตเด•เดพเดฒเดฟเด• เดซเดฏเดฒเดฟเดฒเต‡เด•เตเด•เต เดŽเดดเตเดคเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด…เดคเดฟเดจเตเดถเต‡เดทเด‚, เด…เดคเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเดฟเตฝ เดˆ เดซเดฏเตฝ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเต. เดชเตเดฐเดตเตผเดคเตเดคเดจเด™เตเด™เดณเตเดŸเต† เดˆ เดฎเตเดดเตเดตเตป เดถเตเดฐเต‡เดฃเดฟเดฏเตเด‚ เดตเดณเดฐเต† เดฆเตˆเตผเด˜เตเดฏเดฎเต‡เดฑเดฟเดฏเดคเตเด‚ เดฎเดŸเตเดชเตเดชเดฟเด•เตเด•เตเดจเตเดจเดคเตเดฎเดพเดฃเต, เด…เดคเดฟเดจเดพเตฝ เด‡เดคเต เด’เดชเตเดฑเตเดฑเดฟเดฎเตˆเดธเต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเต เดตเดฟเดตเดฟเดง เดฎเดพเตผเด—เด™เตเด™เดณเตเดฃเตเดŸเต.

เดˆ เดตเดดเดฟเด•เดณเดฟเตฝ เด’เดจเตเดจเดพเดฃเต SSH เดชเตˆเดชเตเดชเตเดฒเตˆเดจเตเด•เตพ เด“เดฐเต‹ เดคเดตเดฃเดฏเตเด‚ เด’เดฐเต เดชเตเดคเดฟเดฏ เดธเต†เดทเตป เดคเตเดฑเด•เตเด•เตเดจเตเดจเดคเดฟเดจเตเดชเด•เดฐเด‚, เดจเดฟเตผเดฆเตเดฆเต‡เดถเด™เตเด™เตพ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด’เดฐเต SSH เดธเต†เดทเตป เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เดพเตป เดจเดฟเด™เตเด™เดณเต† เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด‡เดคเต เดžเด™เตเด™เตพเด•เตเด•เต เดงเดพเดฐเดพเดณเด‚ เดธเดฎเดฏเด‚ เดฒเดพเดญเดฟเด•เตเด•เตเด‚. (เด“เดซเต เดšเต†เดฏเตเดฏเดพเตป เด“เตผเด•เตเด•เตเด• requiretty เดจเดฟเด™เตเด™เดณเตเดŸเต† sudo เดŽเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด•เตเดฐเดฎเต€เด•เดฐเดฃเด‚ /etc/sudoers เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเดฟเตฝ เดซเดฏเตฝ)

เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดจเต† เด“เดตเตผเด•เตเดฒเต‹เด•เตเด•เต เดšเต†เดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เด’เดฐเต เดชเตเดคเดฟเดฏ เดฎเดพเตผเด—เด‚ เดชเตˆเดคเตเดคเตบ เดฒเตˆเดฌเตเดฐเดฑเดฟเดฏเดพเดฃเต เดฎเตˆเดฑเตเดฑเต‹เดœเตป. เด†เดฐเต†เด™เตเด•เดฟเดฒเตเด‚ เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เด•เต‡เดŸเตเดŸเดฟเดŸเตเดŸเดฟเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด…เดคเดฟเดจเตเดฑเต† เดชเตเดฐเดตเตผเดคเตเดคเดจเดคเตเดคเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดžเดพเตป เดšเตเดฐเตเด•เตเด•เดฎเดพเดฏเดฟ เดตเดฟเดตเดฐเดฟเด•เตเด•เตเด‚. เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเดฟเตฝ เดชเตˆเดคเตเดคเตบ เด•เต‹เดกเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดจเดŸเดชเตเดชเดฟเดฒเดพเด•เตเด•เดพเตป เด‡เดคเต เด…เดจเตเดตเดฆเดฟเด•เตเด•เตเดจเตเดจเต, เด•เต‚เดŸเดพเดคเต† เด…เตปเดธเดฟเดฌเดฟเตพ เด‰เดชเดฏเต‹เด—เดคเตเดคเดฟเดจเตเดฑเต† เด’เดฐเต เด‰เดฆเดพเดนเดฐเดฃเด‚ เดฎเดพเดคเตเดฐเดฎเดพเดฃเต. Mitogen เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเดฟเตฝ เด’เดฐเต UNIX เดชเตˆเดชเตเดชเต เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเด•เดฏเตเด‚ zlib เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด•เด‚เดชเตเดฐเดธเตเดธเตเดšเต†เดฏเตโ€Œเดค เดชเตˆเดคเตเดคเตบ เด•เต‹เดกเต เด•เตˆเดฎเดพเดฑเตเด•เดฏเตเด‚ เด…เดšเตเดšเดพเตผ เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เดธเต€เดฐเดฟเดฏเดฒเตˆเดธเต เดšเต†เดฏเตเดฏเตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเดจเตเดจเต. เด‡เดคเต เดตเต‡เด—เดคเตเดคเดฟเตฝ เดชเต‚เตผเดคเตเดคเดฟเดฏเดพเด•เตเด•เดพเดจเตเด‚ เดŸเตเดฐเดพเดซเดฟเด•เต เดฒเดพเดญเดฟเด•เตเด•เดพเดจเตเด‚ เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเต. เด•เต‚เดŸเตเดคเตฝ เดตเดฟเดถเดฆเดฎเดพเดฏ เดตเดฟเดถเดฆเต€เด•เดฐเดฃเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดŸเต†เด™เตเด•เดฟเตฝ, เด…เดคเดฟเดจเต†เด•เตเด•เตเดฑเดฟเดšเตเดšเต เดชเต‡เดœเดฟเตฝ เดตเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเดคเดพเดฃเต เดจเดฒเตเดฒเดคเต "เด‡เดคเต เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต". เดŽเดจเตเดจเดพเตฝ เด‡เดจเตเดจเต เดจเดฎเตเดฎเตพ เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดจเตŠเดชเตเดชเด‚ เดฒเตˆเดฌเตเดฐเดฑเดฟ เดŽเด™เตเด™เดจเต† เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดจเตเดจเต เดŽเดจเตเดจเดคเดฟเตฝ เดฎเดพเดคเตเดฐเด‚ เดถเตเดฐเดฆเตเดง เด•เต‡เดจเตเดฆเตเดฐเต€เด•เดฐเดฟเด•เตเด•เตเด‚.

เดšเดฟเดฒ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ Mitogen เดจเดฟเด™เตเด™เดณเตเดŸเต† เด…เตปเดธเดฟเดฌเดฟเตพ เด•เต‹เดกเต เดจเดฟเดฐเดตเดงเดฟ เดคเดตเดฃ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเด•เดฏเตเด‚ เดŸเตเดฐเดพเดซเดฟเด•เต เด‰เดชเดญเต‹เด—เด‚ เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เด•เตเดฑเดฏเตเด•เตเด•เตเด•เดฏเตเด‚ เดšเต†เดฏเตเดฏเตเด‚. เดเดฑเตเดฑเดตเตเด‚ เดœเดจเดชเตเดฐเดฟเดฏเดฎเดพเดฏ เด‰เดชเดฏเต‹เด— เด•เต‡เดธเตเด•เตพ เดชเดฐเดฟเดถเต‹เดงเดฟเดšเตเดšเต เด…เดคเต เดŽเดคเตเดฐเดคเตเดคเต‹เดณเด‚ เดžเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดจเตเดจเตเดตเต†เดจเตเดจเต เดจเต‹เด•เตเด•เดพเด‚.

เดตเดฟเดฆเต‚เดฐ เดฎเต†เดทเต€เดจเดฟเตฝ เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเตเด•เตพ เดธเตƒเดทเตโ€ŒเดŸเดฟเด•เตเด•เตเด•, เดชเดพเด•เตเด•เต‡เดœเตเด•เตพ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•, เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเดฟเดฒเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เดชเด•เตผเดคเตเดคเตเด• เดŽเดจเตเดจเดฟเดตเดฏเตโ€Œเด•เตเด•เดพเดฏเดฟ เดžเดพเตป เด…เตปเดธเดฟเดฌเดฟเตพ เด‰เดชเดฏเต‹เด—เดฟเด•เตเด•เตเดจเตเดจเต. เด’เดฐเตเดชเด•เตเดทเต‡ เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เด‰เดฆเดพเดนเดฐเดฃเด™เตเด™เดณเตเดฃเตเดŸเต - เด…เดญเดฟเดชเตเดฐเดพเดฏเด™เตเด™เดณเดฟเตฝ เดŽเดดเตเดคเตเด•.

เดชเต‹เด•เดพเด‚!

เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดจเตเดณเตเดณ เดฎเตˆเดฑเตเดฑเต‹เดœเตป เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดตเดณเดฐเต† เดฒเดณเดฟเดคเดฎเดพเดฃเต:
เดฎเตˆเดฑเตเดฑเต‹เดœเตป เดฒเตˆเดฌเตเดฐเดฑเดฟ เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดฏเตเด•:

pip install mitogen

เด‡เดชเตเดชเต‹เตพ เดฐเดฃเตเดŸเต เดคเตเดฒเตเดฏเดฎเดพเดฏ เดตเดดเดฟเด•เดณเตเดฃเตเดŸเต - เด’เดจเตเดจเตเด•เดฟเตฝ ansible.cfg เด•เต‹เตบเดซเดฟเด—เดฑเต‡เดทเตป เดซเดฏเดฒเดฟเตฝ เด“เดชเตเดทเดจเตเด•เตพ เด•เต‹เตบเดซเดฟเด—เตผ เดšเต†เดฏเตเดฏเตเด•, เด…เดฒเตเดฒเต†เด™เตเด•เดฟเตฝ เด†เดตเดถเตเดฏเดฎเดพเดฏ เดŽเตปเดตเดฏเต‹เตบเดฎเต†เดจเตเดฑเต เดตเต‡เดฐเดฟเดฏเดฌเดฟเดณเตเด•เตพ เดธเดœเตเดœเดฎเดพเด•เตเด•เตเด•.

เด‡เตปเดธเตเดฑเตเดฑเดพเตพ เดšเต†เดฏเตเดค Mitogen-เดฒเต‡เด•เตเด•เตเดณเตเดณ เดชเดพเดค เด†เดฏเดฟเดฐเดฟเด•เตเด•เตเด‚ เดŽเดจเตเดจเต เดจเดฎเตเด•เตเด•เต เด…เดจเตเดฎเดพเดจเดฟเด•เตเด•เดพเด‚ /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 เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเตเด‚ เด…เดฒเตเดฒเดพเดคเต†เดฏเตเด‚ เดจเดฎเตเด•เตเด•เต 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 เด…เตปเดธเดฟเดฌเดฟเตพ 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) เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดฎเต†เดทเต€เดจเตเด•เตพ เด‰เดณเตเดณ เด’เดฐเต เดธเดพเดนเดšเดฐเตเดฏเด‚ เดชเดฐเต€เด•เตเดทเดฟเด•เตเด•เดพเด‚, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เด’เดฐเต เดฑเดฟเดฎเต‹เดŸเตเดŸเต เดนเต‹เดธเตเดฑเตเดฑเดฟเดฒเต‡เด•เตเด•เต เดซเดฏเดฒเตเด•เตพ เดชเด•เตผเดคเตเดคเตเดจเตเดจ เด’เดฐเต เดฐเด‚เด—เด‚:
เดฎเตˆเดฑเตเดฑเต‹เดœเตป เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด…เตปเดธเดฟเดฌเดฟเตพ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เตเดจเตเดจเต

เดจเดฟเด™เตเด™เตพเด•เตเด•เต เด•เดพเดฃเดพเดจเดพเด•เตเดจเตเดจเดคเตเดชเต‹เดฒเต†, เดˆ เดธเดพเดนเดšเดฐเตเดฏเด™เตเด™เดณเดฟเตฝ เดฎเตˆเดฑเตเดฑเต‹เดœเตป เดธเดฎเดฏเดตเตเด‚ เดŸเตเดฐเดพเดซเดฟเด•เตเด•เตเด‚ เดจเดฎเตเดฎเต† เดธเด‚เดฐเด•เตเดทเดฟเด•เตเด•เตเดจเตเดจเต. เดŽเดจเตเดจเดพเตฝ เดคเดŸเดธเตเดธเด‚ เด…เตปเดธเดฟเดฌเดฟเดณเดฟเดฒเดฒเตเดฒเต†เด™เตเด•เดฟเตฝ, เด‰เดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต เด’เดฐเต เดกเดฟเดธเตเด•เดฟเดจเตเดฑเต†เดฏเต‹ เดจเต†เดฑเตเดฑเตโ€Œเดตเตผเด•เตเด•เดฟเดจเตเดฑเต†เดฏเต‹ เด/เด’เดฏเดฟเดฒเต‹ เดฎเดฑเตเดฑเต†เดตเดฟเดŸเต†เดฏเต†เด™เตเด•เดฟเดฒเตเดฎเต‹ เด†เดฃเต†เด™เตเด•เดฟเตฝ, เดฎเตˆเดฑเตเดฑเต‹เดœเตป เดจเดฎเตเดฎเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเดฎเต†เดจเตเดจเต เดชเตเดฐเดคเต€เด•เตเดทเดฟเด•เตเด•เดพเตป เดชเตเดฐเดฏเดพเดธเดฎเดพเดฃเต.

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

Mitogen เด‰เดชเดฏเต‹เด—เดฟเดšเตเดšเต เด‡เดคเต 12 เดธเต†เด•เตเด•เตปเดกเต เดŽเดŸเตเดคเตเดคเต, เด…เดคเต เด‡เดฒเตเดฒเดพเดคเต† เดคเดจเตเดจเต†.
เดชเต‡เดœเดฟเตฝ เด…เตปเดธเดฟเดฌเดฟเตพ เดชเต‡เดœเดฟเดจเตเดณเตเดณ เดฎเตˆเดฑเตเดฑเต‹เดœเตป เดจเดฟเด™เตเด™เตพเด•เตเด•เต เดฎเดฑเตเดฑเต เดฎเดพเดจเดฆเดฃเตเดกเด™เตเด™เดณเตเด‚ เดชเดฐเดฟเดถเต‹เดงเดจเด•เดณเตเด‚ เดจเต‹เด•เตเด•เดพเด‚. เดชเต‡เดœเต เดชเดฑเดฏเตเดจเตเดจเดคเตเดชเต‹เดฒเต†:

เดฎเต‹เดกเตเดฏเต‚เตพ เดชเตเดฐเดตเตผเดคเตเดคเดฟเด•เตเด•เตเดฎเตเดชเต‹เตพ เดฎเตˆเดฑเตเดฑเต‹เดœเดจเดฟเดจเต† เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเตป เด•เดดเดฟเดฏเดฟเดฒเตเดฒ. เดˆ เดฎเตŠเดกเตเดฏเต‚เดณเดฟเดจเตเดฑเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เด•เดดเดฟเดฏเตเดจเตเดจเดคเตเดฐ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเตป เดฎเดพเดคเตเดฐเดฎเต‡ เด‡เดคเดฟเดจเต เด•เดดเดฟเดฏเต‚.

เด…เดคเดฟเดจเดพเตฝ, เดจเดฟเด™เตเด™เดณเตเดŸเต† เดตเดฟเดจเตเดฏเดพเดธเดคเตเดคเดฟเตฝ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดคเดŸเดธเตเดธเด™เตเด™เตพ เด•เดฃเตเดŸเต†เดคเตเดคเต‡เดฃเตเดŸเดคเต เดชเตเดฐเดงเดพเดจเดฎเดพเดฃเต, เด…เดต เด…เตปเดธเดฟเดฌเดฟเตพ เดฎเต‚เดฒเดฎเดพเดฃเต†เด™เตเด•เดฟเตฝ, เด…เดต เดชเดฐเดฟเดนเดฐเดฟเด•เตเด•เดพเดจเตเด‚ เดจเดฟเด™เตเด™เดณเตเดŸเต† เดชเตเดฒเต‡เดฌเตเด•เตเด•เตเด•เดณเตเดŸเต† เดจเดฟเตผเดตเตเดตเดนเดฃเด‚ เด—เดฃเตเดฏเดฎเดพเดฏเดฟ เดตเต‡เด—เดคเตเดคเดฟเดฒเดพเด•เตเด•เดพเดจเตเด‚ Mitogen เดจเดฟเด™เตเด™เดณเต† เดธเดนเดพเดฏเดฟเด•เตเด•เตเด‚.

เด…เดตเดฒเด‚เดฌเด‚: www.habr.com

เด’เดฐเต เด…เดญเดฟเดชเตเดฐเดพเดฏเด‚ เดšเต‡เตผเด•เตเด•เตเด•