แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“ Ansible แž‡แžถแž˜แžฝแž™ Mitogen

Ansible แž”แžถแž“แž€แŸ’แž›แžถแž™แž‡แžถแž€แžถแžšแž–แŸแž‰แž“แžทแž™แž˜แž”แŸ†แž•แžปแžแž˜แžฝแž™แŸ” แž€แžถแžšแž‚แŸ’แžšแž”แŸ‹แž‚แŸ’แžšแž„แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž”แŸ’แžšแž–แŸแž“แŸ’แž’. แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธ แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แžทแž‰แžŠแŸ„แž™ Red Hat แž“แŸ…แž†แŸ’แž“แžถแŸ† 2015 แž›แŸแž แžขแŸ’แž“แž€แž…แžผแž›แžšแžฝแž˜แž‚แž˜แŸ’แžšแŸ„แž„ แž›แžพแžŸแž–แžธแžšแžถแž”แŸ‹แž–แžถแž“แŸ‹แž“แžถแž€แŸ‹ แž แžพแž™ Ansible แž”แŸ’แžšแž แŸ‚แž›แž‡แžถแž”แŸ’แžšแž–แŸแž“แŸ’แž’แžŠแžถแž€แŸ‹แž–แž„แŸ’แžšแžถแž™ แž“แžทแž„ orchestration แžŠแŸ‚แž›แž”แŸ’แžšแžพแž…แŸ’แžšแžพแž“แž”แŸ†แž•แžปแžแŸ” แž‡แžฝแžšแž’แŸ†แž‘แžผแž›แžถแž™แž“แŸƒแž€แž˜แŸ’แž˜แžœแžทแž’แžธแžšแž”แžŸแŸ‹แžœแžถแž‚แžบแž‚แžฝแžšแžฑแŸ’แž™แž…แžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแžแŸ’แž›แžถแŸ†แž„แžŽแžถแžŸแŸ‹แŸ”

Ansible แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž›แžพแž€แžถแžšแž—แŸ’แž‡แžถแž”แŸ‹ SSH แž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แŸ” แžœแžถแž”แžพแž€แžœแž‚แŸ’แž‚ SSH แž…แžผแž› แž…แž˜แŸ’แž›แž„แž€แžผแžŠ Python แž›แžพแž”แžŽแŸ’แžแžถแž‰ แž แžพแž™แžŸแžšแžŸแŸแžšแžœแžถแž‘แŸ…แžฏแž€แžŸแžถแžšแž”แžŽแŸ’แžแŸ„แŸ‡แžขแžถแžŸแž“แŸ’แž“แžŠแžถแž…แŸ‹แžŠแŸ„แž™แžกแŸ‚แž€แŸ” แž”แž“แŸ’แž‘แžถแž”แŸ‹แž–แžธแž“แŸ„แŸ‡แžœแžถแžŠแŸ†แžŽแžพแžšแž€แžถแžšแžฏแž€แžŸแžถแžšแž“แŸแŸ‡แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แŸ” แž›แŸ†แžŠแžถแž”แŸ‹แž‘แžถแŸ†แž„แž˜แžผแž›แž“แŸƒแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž€แžถแžšแž“แŸแŸ‡แž‚แžบแžœแŸ‚แž„แž†แŸ’แž„แžถแž™ แž“แžทแž„แž’แžปแž‰แž‘แŸ’แžšแžถแž“แŸ‹ แžŠแžผแž…แŸ’แž“แŸแŸ‡แž˜แžถแž“แžœแžทแž’แžธแž•แŸ’แžŸแŸแž„แŸ—แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแž“แž”แŸ’แžšแžŸแžทแž‘แŸ’แž’แž—แžถแž–แžœแžถแŸ”

แžœแžทแž’แžธแž˜แžฝแž™แž€แŸ’แž“แžปแž„แž…แŸ†แžŽแŸ„แž˜แžœแžทแž’แžธแž‘แžถแŸ†แž„แž“แŸแŸ‡แž‚แžบ แž”แŸ†แž–แž„แŸ‹ SSH แžŠแŸ‚แž›แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžขแŸ’แž“แž€แž”แŸ’แžšแžพแžœแž‚แŸ’แž‚ SSH แž˜แžฝแž™แžŠแžพแž˜แŸ’แž”แžธแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแžŸแŸแž…แž€แŸ’แžแžธแžŽแŸ‚แž“แžถแŸ† แž‡แžถแž‡แžถแž„แž”แžพแž€แžœแž‚แŸ’แž‚แžแŸ’แž˜แžธแžšแžถแž›แŸ‹แž–แŸแž› แžŠแŸ‚แž›แžขแžถแž…แž‡แžฝแž™แžŸแž“แŸ’แžŸแŸ†แžŸแŸ†แž…แŸƒแž–แŸแž›แžœแŸแž›แžถแž…แŸ’แžšแžพแž“แžŠแž›แŸ‹แž™แžพแž„แŸ” (แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž…แž„แž…แžถแŸ†แžแžถแžแŸ’แžšแžผแžœแž”แžทแž‘ requiretty แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹ sudo แž“แŸ…แž€แŸ’แž“แžปแž„แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ” /etc/sudoers แžฏแž€แžŸแžถแžšแž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™)

แžœแžทแž’แžธแžแŸ’แž˜แžธแž˜แžฝแž™แžŠแžพแž˜แŸ’แž”แžธ Overclock Ansible แž‚แžบแž‡แžถแž”แžŽแŸ’แžŽแžถแž›แŸแž™ python แž แŸ…แžแžถ แž˜แžธแžแžผแž แŸ’แžŸแŸ‚แž“. แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แžŽแžถแž˜แŸ’แž“แžถแž€แŸ‹แž˜แžทแž“แž‘แžถแž“แŸ‹แž”แžถแž“แžฎ แžแŸ’แž‰แžปแŸ†แž“แžนแž„แžšแŸ€แž”แžšแžถแž”แŸ‹แž–แžธแž˜แžปแžแž„แžถแžšแžšแž”แžŸแŸ‹แžœแžถแžŠแŸ„แž™แžŸแž„แŸ’แžแŸแž”แŸ” แžœแžถแžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž€แžผแžŠ python แž™แŸ‰แžถแž„แžšแž แŸแžŸแž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™ แž แžพแž™ Ansible แž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แž‡แžถแžงแž‘แžถแž แžšแžŽแŸแž˜แžฝแž™แž“แŸƒแž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž”แŸ‰แžปแžŽแŸ’แžŽแŸ„แŸ‡แŸ” Mitogen แž”แŸ’แžšแžพแž”แŸ†แž–แž„แŸ‹ UNIX แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™ แž แžพแž™แž•แŸ’แž‘แŸแžšแž€แžผแžŠ python แžŠแŸ‚แž›แž”แžถแž“แž”แž„แŸ’แž แžถแž”แŸ‹แž‡แžถแž˜แžฝแž™ zlib แž“แžทแž„แžŠแžถแž€แŸ‹แž‡แžถแžŸแŸŠแŸแžšแžธแž‡แžถแž˜แžฝแž™ pickle แŸ” แžœแžถแž‡แžฝแž™แž”แŸ†แž–แŸแž‰แžœแžถแžฑแŸ’แž™แž›แžฟแž“แž‡แžถแž„แž˜แžปแž“ แž“แžทแž„แžŸแž“แŸ’แžŸแŸ†แžŸแŸ†แž…แŸƒแž…แžšแžถแž…แžšแžŽแŸแŸ” แž”แŸ’แžšแžŸแžทแž“แž”แžพแžขแŸ’แž“แž€แž…แžถแž”แŸ‹แžขแžถแžšแž˜แŸ’แž˜แžŽแŸแž›แžพแž€แžถแžšแž–แž“แŸ’แž™แž›แŸ‹แž›แž˜แŸ’แžขแžทแžแž”แž“แŸ’แžแŸ‚แž˜แž‘แŸ€แž แžœแžถแž‡แžถแž€แžถแžšแž›แŸ’แžขแž”แŸ†แž•แžปแžแž€แŸ’แž“แžปแž„แž€แžถแžšแžขแžถแž“แžขแŸ†แž–แžธแžœแžถแž“แŸ…แž›แžพแž‘แŸ†แž–แŸแžš "แžšแž”แŸ€แž”แžŠแŸ‚แž›แžœแžถแžŠแŸ†แžŽแžพแžšแž€แžถแžš". แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžแŸ’แž„แŸƒแž“แŸแŸ‡แž™แžพแž„แž“แžนแž„แž•แŸ’แžแŸ„แžแžแŸ‚แž›แžพแžšแž”แŸ€แž”แžŠแŸ‚แž›แž”แžŽแŸ’แžŽแžถแž›แŸแž™แžŠแŸ†แžŽแžพแžšแž€แžถแžšแž‡แžถแž˜แžฝแž™ Ansible แŸ”

Mitogen แž€แŸ’แž“แžปแž„แž€แžถแž›แŸˆแž‘แŸแžŸแŸˆแž˜แžฝแž™แž…แŸ†แž“แžฝแž“แžขแžถแž…แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“แž€แžผแžŠ Ansible แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž…แŸ’แžšแžพแž“แžŠแž„ แž“แžทแž„แž€แžถแžแŸ‹แž”แž“แŸ’แžแž™แž€แžถแžšแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แž…แžšแžถแž…แžšแžŽแŸแž™แŸ‰แžถแž„แžแŸ’แž›แžถแŸ†แž„แŸ” แžแŸ„แŸ‡แž–แžทแž“แžทแžแŸ’แž™แž˜แžพแž›แž€แžšแžŽแžธแž”แŸ’แžšแžพแž”แŸ’แžšแžถแžŸแŸ‹แžŠแŸแž–แŸแž‰แž“แžทแž™แž˜แž”แŸ†แž•แžปแž แž แžพแž™แž˜แžพแž›แžแžถแžแžพแžœแžถแž‡แžฝแž™แž™แžพแž„แž€แž˜แŸ’แžšแžทแžแžŽแžถแŸ”

แžแŸ’แž‰แžปแŸ†แž”แŸ’แžšแžพ Ansible แž—แžถแž‚แž…แŸ’แžšแžพแž“แžŸแž˜แŸ’แžšแžถแž”แŸ‹แŸ– แž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’แž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™ แž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แž‰แŸ’แž…แž”แŸ‹ แž…แž˜แŸ’แž›แž„แžฏแž€แžŸแžถแžšแž‘แŸ… แž“แžทแž„แž–แžธแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แŸ” แž”แŸ’แžšแž แŸ‚แž›แž‡แžถแžขแŸ’แž“แž€แž˜แžถแž“แžงแž‘แžถแž แžšแžŽแŸแž•แŸ’แžŸแŸแž„แž‘แŸ€แž - แžŸแžšแžŸแŸแžšแž“แŸ…แž€แŸ’แž“แžปแž„แž˜แžแžทแž™แŸ„แž”แž›แŸ‹แŸ”

แžแŸ„แŸ‡แž‘แŸ…!

แž€แžถแžšแž€แŸ†แžŽแžแŸ‹แžšแž…แž“แžถแžŸแž˜แŸ’แž–แŸแž“แŸ’แž’ Mitogen แžŸแž˜แŸ’แžšแžถแž”แŸ‹ Ansible แž‚แžบแžŸแžถแž˜แž‰แŸ’แž‰แžŽแžถแžŸแŸ‹แŸ–
แžŠแŸ†แžกแžพแž„แž”แžŽแŸ’แžŽแžถแž›แŸแž™ 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แŸ–

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 }}

แž แžพแž™แžขแž“แžปแž‰แŸ’แž‰แžถแžแžฑแŸ’แž™แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžœแžถแžŠแŸ„แž™แž˜แžถแž“ แž“แžทแž„แž‚แŸ’แž˜แžถแž“ Mitogen แžŠแžพแž˜แŸ’แž”แžธแž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž…แŸ†แž“แžฝแž“ 10แŸ–

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

แž‡แžถแž›แž‘แŸ’แž’แž•แž› แž™แžพแž„แž”แžถแž“แž–แž“แŸ’แž›แžฟแž“แž€แžถแžšแžขแž“แžปแžœแžแŸ’แžแž›แžพแžŸแž–แžธ แŸกแŸ  แžŠแž„!
แžฅแžกแžผแžœโ€‹แž“แŸแŸ‡ แžŸแžผแž˜โ€‹แžŸแžถแž€แž›แŸ’แž”แž„โ€‹แžŸแŸแžŽแžถแžšแžธแž™แŸ‰แžผโ€‹แž•แŸ’แžŸแŸแž„โ€‹แž‚แŸ’แž“แžถ แž แžพแž™โ€‹แž˜แžพแž›โ€‹แžแžถโ€‹แžขแŸ’แžœแžธโ€‹แž‚แŸ’แžšแž”แŸ‹โ€‹แž™แŸ‰แžถแž„โ€‹แžŠแŸ†แžŽแžพแžšแž€แžถแžšโ€‹แž›แžฟแž“โ€‹แž‡แžถแž„โ€‹แž“แŸแŸ‡โ€‹แžŸแž˜แŸ’แžšแžถแž”แŸ‹โ€‹แž™แžพแž„แŸ–

  • แžŸแŸ’แž‚แŸ’แžšแžธแž”แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž…แž˜แŸ’แž›แž„แžฏแž€แžŸแžถแžšแž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แž–แžธแž˜แžผแž›แžŠแŸ’แž‹แžถแž“แž˜แžฝแž™ (แž‡แžถแž˜แžฝแž™แž˜แŸ‰แžผแžŒแžปแž› copy):
    แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“ Ansible แž‡แžถแž˜แžฝแž™ Mitogen

  • แžŸแŸ’แž‚แŸ’แžšแžธแž”แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž”แž„แŸ’แž€แžพแžแžฏแž€แžŸแžถแžšแž“แŸ…แž›แžพแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แž‡แžถแž˜แžฝแž™ copy แž˜แŸ‰แžผแžŒแžปแž›แŸ–
    แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“ Ansible แž‡แžถแž˜แžฝแž™ Mitogen

  • แžŸแŸแžŽแžถแžšแžธแž™แŸ‰แžผแž‡แžถแž˜แžฝแž™แž€แžถแžšแž‘แžถแž‰แž™แž€แžฏแž€แžŸแžถแžšแž–แžธแž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แž‘แŸ…แž€แžถแž“แŸ‹แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž˜แžฝแž™แŸ–
    แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“ Ansible แž‡แžถแž˜แžฝแž™ Mitogen

แžแŸ„แŸ‡แžŸแžถแž€แž›แŸ’แž”แž„แžŸแŸแžŽแžถแžšแžธแž™แŸ‰แžผแž‡แžถแž˜แžฝแž™แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แž‡แžถแž…แŸ’แžšแžพแž“ (3) แžงแž‘แžถแž แžšแžŽแŸ แžŸแŸแžŽแžถแžšแžธแž™แŸ‰แžผแž‡แžถแž˜แžฝแž™แž€แžถแžšแž…แž˜แŸ’แž›แž„แžฏแž€แžŸแžถแžšแž‘แŸ…แž˜แŸ‰แžถแžŸแŸŠแžธแž“แž–แžธแž…แž˜แŸ’แž„แžถแž™แŸ–
แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“ Ansible แž‡แžถแž˜แžฝแž™ Mitogen

แžŠแžผแž…แžŠแŸ‚แž›แžขแŸ’แž“แž€แžขแžถแž…แžƒแžพแž‰ Mitogen แž‡แžฝแž™แž™แžพแž„แž‘แžถแŸ†แž„แž–แŸแž›แžœแŸแž›แžถ แž“แžทแž„แž…แžšแžถแž…แžšแžŽแŸแž“แŸ…แž€แŸ’แž“แžปแž„แžŸแŸแžŽแžถแžšแžธแž™แŸ‰แžผแž‘แžถแŸ†แž„แž“แŸแŸ‡แŸ” แž”แŸ‰แžปแž“แŸ’แžแŸ‚แž”แŸ’แžšแžŸแžทแž“แž”แžพแž€แžถแžšแžŸแŸ’แž‘แŸ‡แž˜แžทแž“แžŸแŸ’แžแžทแžแž“แŸ…แž€แŸ’แž“แžปแž„ Ansible แž”แŸ‰แžปแž“แŸ’แžแŸ‚แžงแž‘แžถแž แžšแžŽแŸแž“แŸ…แž€แŸ’แž“แžปแž„ I/O แž“แŸƒแžŒแžธแžŸ แžฌแž”แžŽแŸ’แžแžถแž‰ แžฌแž€แž“แŸ’แž›แŸ‚แž„แž•แŸ’แžŸแŸแž„แž‘แŸ€แž แž“แŸ„แŸ‡แžœแžถแž–แžทแž”แžถแž€แž€แŸ’แž“แžปแž„แž€แžถแžšแžšแŸ†แž–แžนแž„แžแžถ Mitogen แž“แžนแž„แž‡แžฝแž™แž™แžพแž„แŸ”

แžแŸ„แŸ‡แžŸแžถแž€แž›แŸ’แž”แž„แžŸแŸ’แž‚แŸ’แžšแžธแž”แž‡แžถแž˜แžฝแž™แž€แžถแžšแžŠแŸ†แžกแžพแž„แž€แž‰แŸ’แž…แž”แŸ‹แž‡แžถแž˜แžฝแž™แž˜แŸ‰แžผแžŒแžปแž› yum/dnf แž“แžทแž„ python แžŠแŸ„แž™แž”แŸ’แžšแžพ pip แŸ” แž€แž‰แŸ’แž…แž”แŸ‹แžแŸ’แžšแžผแžœแž”แžถแž“แž‘แžปแž€แž€แŸ’แž“แžปแž„แžƒแŸ’แž›แžถแŸ†แž„แžŸแž˜แŸ’แž„แžถแžแŸ‹ แžŠแžพแž˜แŸ’แž”แžธแž€แžปแŸ†แžฑแŸ’แž™แž–แžนแž„แž•แŸ’แžขแŸ‚แž€แž›แžพแž”แž‰แŸ’แž แžถแž”แžŽแŸ’แžแžถแž‰แŸ–

---
- 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 แžŸแž˜แŸ’แžšแžถแž”แŸ‹แž‘แŸ†แž–แŸแžš Ansible แžขแŸ’แž“แž€โ€‹แžขแžถแž…โ€‹แž˜แžพแž›โ€‹แž€แžถแžšโ€‹แž€แŸ†แžŽแžแŸ‹โ€‹แž“แžทแž„โ€‹แž€แžถแžšโ€‹แž’แŸ’แžœแžพโ€‹แžแŸโ€‹แžŸแŸ’แžโ€‹แž•แŸ’แžŸแŸแž„โ€‹แž‘แŸ€แžโ€‹แŸ” แžŠแžผแž…โ€‹แž‘แŸ†แž–แŸแžšโ€‹แž”แžถแž“โ€‹แž…แŸ‚แž„โ€‹แžแžถแŸ–

Mitogen แž˜แžทแž“แžขแžถแž…แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“แž˜แŸ‰แžผแžŒแžปแž›แž”แžถแž“แž‘แŸแž“แŸ…แž–แŸแž›แžœแžถแž€แŸ†แž–แžปแž„แžŠแŸ†แžŽแžพแžšแž€แžถแžšแŸ” แžœแžถแž‚แŸ’แžšแžถแž“แŸ‹แžแŸ‚แžขแžถแž…แž’แŸ’แžœแžพแžฑแŸ’แž™แž€แžถแžšแž”แŸ’แžšแžแžทแž”แžแŸ’แžแžทแž“แŸƒแž˜แŸ‰แžผแžŒแžปแž›แž“แŸแŸ‡แž›แžฟแž“แžแžถแž˜แžŠแŸ‚แž›แžขแžถแž…แž’แŸ’แžœแžพแž‘แŸ…แž”แžถแž“แŸ”

แžŠแžผแž…แŸ’แž“แŸแŸ‡ แžœแžถแž‡แžถแžšแžฟแž„แžŸแŸ†แžแžถแž“แŸ‹แž€แŸ’แž“แžปแž„แž€แžถแžšแžŸแŸ’แžœแŸ‚แž„แžšแž€แž—แžถแž–แžšแžถแŸ†แž„แžŸแŸ’แž‘แŸ‡แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แž“แŸ…แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแžถแž€แŸ‹แž–แž„แŸ’แžšแžถแž™แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€ แž แžพแž™แž”แŸ’แžšแžŸแžทแž“แž”แžพแž–แžฝแž€แž‚แŸแž€แžพแžแžกแžพแž„แžŠแŸ„แž™แžŸแžถแžš Ansible แž“แŸ„แŸ‡ Mitogen แž“แžนแž„แž‡แžฝแž™แžขแŸ’แž“แž€แž€แŸ’แž“แžปแž„แž€แžถแžšแžŠแŸ„แŸ‡แžŸแŸ’แžšแžถแž™แžœแžถ แž“แžทแž„แž”แž„แŸ’แž€แžพแž“แž›แŸ’แž”แžฟแž“แžŠแŸ†แžŽแžพแžšแž€แžถแžšแžŸแŸ€แžœแž—แŸ…แž›แŸแž„แžšแž”แžŸแŸ‹แžขแŸ’แž“แž€แŸ”

แž”แŸ’แžšแž—แž–: www.habr.com

แž”แž“แŸ’แžแŸ‚แž˜แž˜แžแžทแž™แŸ„แž”แž›แŸ‹