Mitogen āĻāϰ āϏāĻžāĻĨ⧇ āĻ…ā§āϝāĻžāύāϏāĻŋāĻŦāϞāϕ⧇ āĻ¤ā§āĻŦāϰāĻžāĻ¨ā§āĻŦāĻŋāϤ āĻ•āϰāĻž

Ansible āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āĻāĻ• āĻšāϝāĻŧ⧇ āĻ“āϠ⧇ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻŽā§āϝāĻžāύ⧇āϜāĻŽā§‡āĻ¨ā§āϟ... āĻĒāϰ⧇ āϰ⧇āĻĄ āĻšā§āϝāĻžāϟ āĻĻā§āĻŦāĻžāϰāĻž āϕ⧇āύāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ 2015 āϏāĻžāϞ⧇ āϏāĻ‚āĻ–ā§āϝāĻž āĻĒā§āϰāĻ•āĻ˛ā§āĻĒ āĻ…āĻ‚āĻļāĻ—ā§āϰāĻšāĻŖāĻ•āĻžāϰ⧀āϰāĻž āĻšāĻžāϜāĻžāϰ āĻ›āĻžāĻĄāĻŧāĻŋāϝāĻŧ⧇ āϗ⧇āϛ⧇ āĻāĻŦāĻ‚ Ansible āϏāĻŽā§āĻ­āĻŦāϤ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ āĻŦā§āϝāĻŦāĻšā§ƒāϤ āĻ¸ā§āĻĨāĻžāĻĒāύāĻž āĻāĻŦāĻ‚ āĻ…āĻ°ā§āϕ⧇āĻ¸ā§āĻŸā§āϰ⧇āĻļāύ āϏāĻŋāĻ¸ā§āĻŸā§‡āĻŽ āĻšāϝāĻŧ⧇ āωāϠ⧇āϛ⧇āĨ¤ āĻāϰ āĻ…ā§āϝāĻžāĻĒā§āϞāĻŋāϕ⧇āĻļāύ⧇āϰ āĻŦāĻŋāĻ¸ā§āϤ⧃āϤ āĻĒāϰāĻŋāϏāϰ āϖ⧁āĻŦāχ āϚāĻŋāĻ¤ā§āϤāĻžāĻ•āĻ°ā§āώāĻ•āĨ¤

āϰāĻŋāĻŽā§‹āϟ āĻšā§‹āĻ¸ā§āĻŸā§‡ SSH āϏāĻ‚āϝ⧋āϗ⧇āϰ āĻŽāĻžāĻ§ā§āϝāĻŽā§‡ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ āĻ•āĻžāϜ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ SSH āϏ⧇āĻļāύ āĻ–ā§‹āϞ⧇, āϞāĻ— āχāύ āĻ•āϰ⧇, āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇ āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄ āĻ•āĻĒāĻŋ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĒ⧃āĻĨāĻ• āĻ…āĻ¸ā§āĻĨāĻžāϝāĻŧā§€ āĻĢāĻžāχāϞ⧇ āϞ⧇āϖ⧇āĨ¤ āĻāϰ āĻĒāϰ⧇, āĻāϟāĻŋ āϰāĻŋāĻŽā§‹āϟ āĻŽā§‡āĻļāĻŋāύ⧇ āĻāχ āĻĢāĻžāχāϞāϟāĻŋ āϚāĻžāϞāĻžāϝāĻŧāĨ¤ āĻ…āĻĒāĻžāϰ⧇āĻļāύ⧇āϰ āĻāχ āĻĒ⧁āϰ⧋ āĻ•ā§āϰāĻŽāϟāĻŋ āĻŦ⧇āĻļ āĻĻā§€āĻ°ā§āϘ āĻāĻŦāĻ‚ āĻ•ā§āϞāĻžāĻ¨ā§āϤāĻŋāĻ•āϰ, āϤāĻžāχ āĻāϟāĻŋāϕ⧇ āĻ…āĻĒā§āϟāĻŋāĻŽāĻžāχāϜ āĻ•āϰāĻžāϰ āĻŦāĻŋāĻ­āĻŋāĻ¨ā§āύ āωāĻĒāĻžāϝāĻŧ āϰāϝāĻŧ⧇āϛ⧇āĨ¤

āĻāχ āωāĻĒāĻžāϝāĻŧ āĻāĻ• āĻāϏāĻāϏāĻāχāϚ āĻĒāĻžāχāĻĒāϞāĻžāχāύ āϝāĻž āφāĻĒāύāĻžāϕ⧇ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āϏ⧇āĻļāύ āĻ–ā§‹āϞāĻžāϰ āĻĒāϰāĻŋāĻŦāĻ°ā§āϤ⧇ āύāĻŋāĻ°ā§āĻĻ⧇āĻļāĻžāĻŦāϞ⧀ āĻ•āĻžāĻ°ā§āϝāĻ•āϰ āĻ•āϰāϤ⧇ āĻāĻ•āϟāĻŋ SSH āϏ⧇āĻļāύ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāϤ⧇ āĻĻ⧇āϝāĻŧ, āϝāĻž āφāĻŽāĻžāĻĻ⧇āϰ āĻ…āύ⧇āĻ• āϏāĻŽāϝāĻŧ āĻŦāĻžāρāϚāĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ (āĻļ⧁āϧ⧁ āĻŦāĻ¨ā§āϧ āĻ•āϰāϤ⧇ āĻŽāύ⧇ āϰāĻžāĻ–āĻŦ⧇āύ requiretty āφāĻĒāύāĻžāϰ āĻŽāĻ§ā§āϝ⧇ sudo āϜāĻ¨ā§āϝ āϏ⧇āϟāĻŋāĻ‚ /etc/sudoers āϰāĻŋāĻŽā§‹āϟ āĻŽā§‡āĻļāĻŋāύ⧇ āĻĢāĻžāχāϞ)

Ansible āĻ“āĻ­āĻžāϰāĻ•ā§āϞāĻ• āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āύāϤ⧁āύ āωāĻĒāĻžāϝāĻŧ āĻšāϞ āĻāĻ•āϟāĻŋ āĻĒāĻžāχāĻĨāύ āϞāĻžāχāĻŦā§āϰ⧇āϰāĻŋ āĻŽāĻžāχāĻŸā§‹āĻœā§‡āύ. āϝāĻĻāĻŋ āϕ⧇āω āĻāϟāĻŋāϰ āĻ•āĻĨāĻž āύāĻž āĻļ⧁āύ⧇ āĻĨāĻžāϕ⧇āύ āϤāĻŦ⧇ āφāĻŽāĻŋ āϏāĻ‚āĻ•ā§āώ⧇āĻĒ⧇ āĻāϰ āĻ•āĻžāĻ°ā§āϝāĻ•āĻžāϰāĻŋāϤāĻž āĻŦāĻ°ā§āĻŖāύāĻž āĻ•āϰāĻŦāĨ¤ āĻāϟāĻŋ āĻāĻ•āϟāĻŋ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻŽā§‡āĻļāĻŋāύ⧇ āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄā§‡āϰ āĻĻā§āϰ⧁āϤ āϏāĻžā§āϚāĻžāϞāύ⧇āϰ āĻ…āύ⧁āĻŽāϤāĻŋ āĻĻ⧇āϝāĻŧ āĻāĻŦāĻ‚ Ansible āĻšāϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻāĻ•āϟāĻŋ āωāĻĻāĻžāĻšāϰāĻŖāĨ¤ Mitogen āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻŽā§‡āĻļāĻŋāύ⧇ āĻāĻ•āϟāĻŋ UNIX āĻĒāĻžāχāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ āĻāĻŦāĻ‚ zlib āĻāϰ āϏāĻžāĻĨ⧇ āϏāĻ‚āϕ⧁āϚāĻŋāϤ āĻāĻŦāĻ‚ āφāϚāĻžāϰ⧇āϰ āϏāĻžāĻĨ⧇ āĻ•ā§āϰāĻŽāĻŋāĻ•āĻ•ā§ƒāϤ āĻĒāĻžāχāĻĨāύ āϕ⧋āĻĄ āĻ¸ā§āĻĨāĻžāύāĻžāĻ¨ā§āϤāϰ āĻ•āϰ⧇āĨ¤ āĻāϟāĻŋ āĻĻā§āϰ⧁āϤ āĻāϟāĻŋ āϏāĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āϰāϤ⧇ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇ āĻāĻŦāĻ‚ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āϏāĻ‚āϰāĻ•ā§āώāĻŖ āĻ•āϰ⧇āĨ¤ āφāĻĒāύāĻŋ āϝāĻĻāĻŋ āφāϰāĻ“ āĻŦāĻŋāĻļāĻĻ āĻŦā§āϝāĻžāĻ–ā§āϝāĻž āĻ•āϰāϤ⧇ āφāĻ—ā§āϰāĻšā§€ āĻšāύ āϤāĻŦ⧇ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻāϟāĻŋ āϏāĻŽā§āĻĒāĻ°ā§āϕ⧇ āĻĒāĻĄāĻŧāĻž āĻ­āĻžāϞ "āĻ•āĻŋāĻ­āĻžāĻŦ⧇ āĻāϟāĻž āĻ•āĻžāϜ āĻ•āϰ⧇". āĻ•āĻŋāĻ¨ā§āϤ⧁ āφāϜāϕ⧇ āφāĻŽāϰāĻž āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āϞāĻžāχāĻŦā§āϰ⧇āϰ⧀ āĻ•āĻŋāĻ­āĻžāĻŦ⧇ Ansible āĻāϰ āϏāĻžāĻĨ⧇ āĻ•āĻžāϜ āĻ•āϰ⧇ āϤāĻžāϰ āωāĻĒāϰ āφāϞ⧋āĻ•āĻĒāĻžāϤ āĻ•āϰāĻŦāĨ¤

āύāĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āϟ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ Mitogen āφāĻĒāύāĻžāϰ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ āϕ⧋āĻĄāϕ⧇ āĻ•āϝāĻŧ⧇āĻ•āĻŦāĻžāϰ āĻ—āϤāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāϤ⧇ āĻĒāĻžāϰ⧇ āĻāĻŦāĻ‚ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻŸā§āϰāĻžāĻĢāĻŋāĻ• āĻ–āϰāϚ āĻ•āĻŽāĻžāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤ āφāϏ⧁āύ āϏāĻ°ā§āĻŦāĻžāϧāĻŋāĻ• āϜāύāĻĒā§āϰāĻŋāϝāĻŧ āĻŦā§āϝāĻŦāĻšāĻžāϰ⧇āϰ āĻ•ā§āώ⧇āĻ¤ā§āϰ⧇ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻ•āϰ⧇ āĻĻ⧇āĻ–āĻŋ āĻāĻŦāĻ‚ āĻāϟāĻŋ āφāĻŽāĻžāĻĻ⧇āϰ āĻ•āϤāϟāĻž āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰ⧇ āϤāĻž āĻĻ⧇āϖ⧁āύāĨ¤

āφāĻŽāĻŋ āϏāĻŦāĻšā§‡āϝāĻŧ⧇ āĻŦ⧇āĻļāĻŋ Ansible āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰāĻŋ: āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻŽā§‡āĻļāĻŋāύ⧇ āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋ āĻ•āϰāĻž, āĻĒā§āϝāĻžāϕ⧇āϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻž, āϰāĻŋāĻŽā§‹āϟ āĻŽā§‡āĻļāĻŋāύ⧇ āĻāĻŦāĻ‚ āĻĨ⧇āϕ⧇ āĻĢāĻžāχāϞ āĻ•āĻĒāĻŋ āĻ•āϰāĻžāĨ¤ āϏāĻŽā§āĻ­āĻŦāϤ āφāĻĒāύāĻžāϰ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āωāĻĻāĻžāĻšāϰāĻŖ āφāϛ⧇ - āĻŽāĻ¨ā§āϤāĻŦā§āϝ⧇ āϞāĻŋāϖ⧁āύāĨ¤

āϚāϞ āϝāĻžāχ!

Ansible āĻāϰ āϜāĻ¨ā§āϝ Mitogen āĻ•āύāĻĢāĻŋāĻ—āĻžāϰ⧇āĻļāύ āϖ⧁āĻŦāχ āϏāĻšāϜ:
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

āĻŽāĻŋāĻŸā§‹āĻœā§‡āύ āϏāĻš āĻāĻŦāĻ‚ āĻ›āĻžāĻĄāĻŧāĻž āĻ­āĻžāĻ°ā§āϚ⧁āϝāĻŧāĻžāϞ⧇āύāĻ­-āĻ 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):
    Mitogen āĻāϰ āϏāĻžāĻĨ⧇ āĻ…ā§āϝāĻžāύāϏāĻŋāĻŦāϞāϕ⧇ āĻ¤ā§āĻŦāϰāĻžāĻ¨ā§āĻŦāĻŋāϤ āĻ•āϰāĻž

  • āĻāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻĢāĻžāχāϞ āϤ⧈āϰāĻŋāϰ āϜāĻ¨ā§āϝ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ copy āĻŽāĻĄāĻŋāωāϞ:
    Mitogen āĻāϰ āϏāĻžāĻĨ⧇ āĻ…ā§āϝāĻžāύāϏāĻŋāĻŦāϞāϕ⧇ āĻ¤ā§āĻŦāϰāĻžāĻ¨ā§āĻŦāĻŋāϤ āĻ•āϰāĻž

  • āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻšā§‹āĻ¸ā§āϟ āĻĨ⧇āϕ⧇ āĻ¸ā§āĻĨāĻžāύ⧀āϝāĻŧ āĻāĻ•āϟāĻŋāϤ⧇ āĻĢāĻžāχāϞ āĻĄāĻžāωāύāϞ⧋āĻĄ āĻ•āϰāĻžāϰ āĻĻ⧃āĻļā§āϝ:
    Mitogen āĻāϰ āϏāĻžāĻĨ⧇ āĻ…ā§āϝāĻžāύāϏāĻŋāĻŦāϞāϕ⧇ āĻ¤ā§āĻŦāϰāĻžāĻ¨ā§āĻŦāĻŋāϤ āĻ•āϰāĻž

āφāϏ⧁āύ āĻŦ⧇āĻļ āĻ•āϝāĻŧ⧇āĻ•āϟāĻŋ (3) āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻŽā§‡āĻļāĻŋāύ⧇āϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻĻ⧃āĻļā§āϝ⧇āϰ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻŋ, āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āĻāĻ•āϟāĻŋ āĻĻā§‚āϰāĻŦāĻ°ā§āϤ⧀ āĻšā§‹āĻ¸ā§āĻŸā§‡ āĻĢāĻžāχāϞāϗ⧁āϞāĻŋ āĻ…āύ⧁āϞāĻŋāĻĒāĻŋ āĻ•āϰāĻžāϰ āĻāĻ•āϟāĻŋ āĻĻ⧃āĻļā§āϝ:
Mitogen āĻāϰ āϏāĻžāĻĨ⧇ āĻ…ā§āϝāĻžāύāϏāĻŋāĻŦāϞāϕ⧇ āĻ¤ā§āĻŦāϰāĻžāĻ¨ā§āĻŦāĻŋāϤ āĻ•āϰāĻž

āφāĻĒāύāĻŋ āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāĻšā§āϛ⧇āύ, āĻāχ āĻĒāϰāĻŋāĻ¸ā§āĻĨāĻŋāϤāĻŋāϤ⧇ āĻŽāĻžāχāĻŸā§‹āĻœā§‡āύ āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻŽāϝāĻŧ āĻāĻŦāĻ‚ āĻŸā§āĻ°ā§āϝāĻžāĻĢāĻŋāĻ• āωāĻ­āϝāĻŧāχ āĻŦāĻžāρāϚāĻžāϝāĻŧāĨ¤ āĻ•āĻŋāĻ¨ā§āϤ⧁ āϝāĻĻāĻŋ āĻŦāĻŋāĻĒāĻ¤ā§āϤāĻŋāϟāĻŋ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ āύāĻž āĻšāϝāĻŧ, āĻ•āĻŋāĻ¨ā§āϤ⧁ āωāĻĻāĻžāĻšāϰāĻŖāĻ¸ā§āĻŦāϰ⧂āĻĒ āĻāĻ•āϟāĻŋ āĻĄāĻŋāĻ¸ā§āĻ• āĻŦāĻž āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āϕ⧇āϰ I/O, āĻŦāĻž āĻ…āĻ¨ā§āϝ āϕ⧋āĻĨāĻžāĻ“, āϤāĻžāĻšāϞ⧇ āφāĻļāĻž āĻ•āϰāĻž āĻ•āĻ āĻŋāύ āϝ⧇ Mitogen āφāĻŽāĻžāĻĻ⧇āϰ āϏāĻžāĻšāĻžāĻ¯ā§āϝ āĻ•āϰāĻŦ⧇āĨ¤

āĻĒāĻŋāĻĒ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻ•āϰ⧇ yum/dnf āĻāĻŦāĻ‚ āĻĒāĻžāχāĻĨāύ āĻŽāĻĄāĻŋāωāϞ āϏāĻš āĻĒā§āϝāĻžāϕ⧇āϜ āχāύāĻ¸ā§āϟāϞ āĻ•āϰāĻžāϰ āϏāĻžāĻĨ⧇ āĻāĻ•āϟāĻŋ āĻ¸ā§āĻ•ā§āϰāĻŋāĻĒā§āϟ āĻšā§‡āĻˇā§āϟāĻž āĻ•āϰāĻž āϝāĻžāĻ•āĨ¤ āĻĒā§āϝāĻžāϕ⧇āϜāϗ⧁āϞāĻŋ āĻ•ā§āϝāĻžāĻļ⧇ āĻ•āϰāĻž āĻšāϝāĻŧ⧇āĻ›āĻŋāϞ āϝāĻžāϤ⧇ āύ⧇āϟāĻ“āϝāĻŧāĻžāĻ°ā§āĻ• āĻ—ā§āϞāĻŋāĻšā§‡āϰ āωāĻĒāϰ āύāĻŋāĻ°ā§āĻ­āϰ āύāĻž āĻ•āϰ⧇:

---
- 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 āϏ⧇āϕ⧇āĻ¨ā§āĻĄ āϏāĻŽāϝāĻŧ āύ⧇āϝāĻŧ, āĻāϟāĻŋ āĻ›āĻžāĻĄāĻŧāĻžāχāĨ¤
āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝ āĻĒ⧃āĻˇā§āĻ āĻžāϰ āϜāĻ¨ā§āϝ āĻŽāĻžāχāĻŸā§‹āĻœā§‡āύ āφāĻĒāύāĻŋ āĻ…āĻ¨ā§āϝāĻžāĻ¨ā§āϝ āĻŦ⧇āĻžā§āϚāĻŽāĻžāĻ°ā§āĻ• āĻāĻŦāĻ‚ āĻĒāϰ⧀āĻ•ā§āώāĻž āĻĻ⧇āĻ–āϤ⧇ āĻĒāĻžāϰ⧇āύāĨ¤ āĻĒ⧃āĻˇā§āĻ āĻžāϝāĻŧ āĻŦāϞāĻž āĻšāϝāĻŧ⧇āϛ⧇:

āĻŽāĻžāχāĻŸā§‹āĻœā§‡āύ āĻŽāĻĄāĻŋāωāϞ āϚāϞāĻžāĻ•āĻžāϞ⧀āύ āĻ—āϤāĻŋ āĻŦāĻžāĻĄāĻŧāĻžāϤ⧇ āĻĒāĻžāϰ⧇ āύāĻžāĨ¤ āĻāϟāĻŋ āĻļ⧁āϧ⧁āĻŽāĻžāĻ¤ā§āϰ āĻāχ āĻŽāĻĄāĻŋāωāϞāϟāĻŋ āϝāϤ āĻĻā§āϰ⧁āϤ āϏāĻŽā§āĻ­āĻŦ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻ•āϰāϤ⧇ āĻĒāĻžāϰ⧇āĨ¤

āĻ…āϤāĻāĻŦ, āφāĻĒāύāĻžāϰ āĻ¸ā§āĻĨāĻžāĻĒāύāĻžāϝāĻŧ āφāĻĒāύāĻžāϰ āĻŦāĻžāϧāĻžāϗ⧁āϞāĻŋ āϖ⧁āρāĻœā§‡ āĻŦ⧇āϰ āĻ•āϰāĻž āϗ⧁āϰ⧁āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ āĻāĻŦāĻ‚ āϝāĻĻāĻŋ āϏ⧇āϗ⧁āϞāĻŋ āωāĻ¤ā§āϤāϰāϝ⧋āĻ—ā§āϝāϤāĻžāϰ āĻ•āĻžāϰāϪ⧇ āĻšāϝāĻŧ, āϤāĻŦ⧇ Mitogen āφāĻĒāύāĻžāϕ⧇ āϏ⧇āϗ⧁āϞāĻŋ āϏāĻŽāĻžāϧāĻžāύ āĻ•āϰāϤ⧇ āĻāĻŦāĻ‚ āφāĻĒāύāĻžāϰ āĻĒā§āϞ⧇āĻŦ⧁āĻ•āϗ⧁āϞāĻŋāϰ āϏāĻŽā§āĻĒāĻžāĻĻāύāϕ⧇ āωāĻ˛ā§āϞ⧇āĻ–āϝ⧋āĻ—ā§āϝāĻ­āĻžāĻŦ⧇ āĻ¤ā§āĻŦāϰāĻžāĻ¨ā§āĻŦāĻŋāϤ āĻ•āϰāϤ⧇ āϏāĻšāĻžāϝāĻŧāϤāĻž āĻ•āϰāĻŦ⧇āĨ¤

āωāĻ¤ā§āϏ: www.habr.com

DDoS āϏ⧁āϰāĻ•ā§āώāĻž, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ āϏāĻš āϏāĻžāχāϟāϗ⧁āϞāĻŋāϰ āϜāĻ¨ā§āϝ āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ đŸ”Ĩ DDoS āϏ⧁āϰāĻ•ā§āώāĻž āϏāĻš āύāĻŋāĻ°ā§āĻ­āϰāϝ⧋āĻ—ā§āϝ āĻ“āϝāĻŧ⧇āĻŦāϏāĻžāχāϟ āĻšā§‹āĻ¸ā§āϟāĻŋāĻ‚ āĻ•āĻŋāύ⧁āύ, VPS VDS āϏāĻžāĻ°ā§āĻ­āĻžāϰ | ProHoster