ʻO ka wikiwiki o Ansible me Mitogen

ʻO ke kūpono lilo i mea kaulana loa Hoʻoponopono hoʻonohonoho pūnaewele. Ma hope ua kūʻai ʻia e Red Hat i ka makahiki 2015 ka helu hui papahana ʻoi aku ma mua o nā kaukani a ua lilo ʻo Ansible i mea hoʻohana nui ʻia a me ka ʻōnaehana orkestra. ʻO kona ākea ākea o nā noi he mea kupanaha loa.

Hana ʻo Ansible ma luna o nā pili SSH i nā pūʻali mamao. Wehe ia i kahi hālāwai SSH, hoʻopaʻa inoa, kope i ka code Python ma luna o ka pūnaewele a kākau iā ia i kahi faila kaʻawale. Ma hope o kēlā, holo ia i kēia faila ma ka mīkini mamao. He lōʻihi a paʻakikī kēia kaʻina hana holoʻokoʻa, no laila aia nā ala like ʻole e hoʻonui ai.

ʻO kekahi o kēia mau ala Nā paipu SSH hiki iā ʻoe ke hoʻohana i hoʻokahi kau SSH e hoʻokō i nā ʻōlelo aʻo, ma mua o ka wehe ʻana i kahi hālāwai hou i kēlā me kēia manawa, hiki ke mālama iā mākou i ka manawa nui. (E hoʻomanaʻo wale e hoʻopau requiretty hoʻonohonoho no sudo i kāu /etc/sudoers waihona ma ka mīkini mamao)

ʻO kahi ala hou e overclock ai ʻo Ansible kahi waihona python i kapa ʻia Mitogen. Inā ʻaʻole i lohe kekahi, e wehewehe pōkole wau i kāna hana. Hiki iā ia ke hoʻokō wikiwiki i ka code python ma kahi mīkini mamao, a ʻo Ansible hoʻokahi wale nō hiʻohiʻona o ka hoʻohana. Hoʻohana ʻo Mitogen i kahi paipu UNIX ma ka mīkini mamao a hoʻoili i ka code python i hoʻopaʻa ʻia me zlib a hoʻopaʻa ʻia me ka pickle. Kōkua kēia i ka hoʻopau wikiwiki ʻana a mālama i ke kaʻa. Inā makemake ʻoe i ka wehewehe kikoʻī, ʻoi aku ka maikaʻi o ka heluhelu ʻana e pili ana iā ia ma ka ʻaoʻao "Pehea ia hana". Akā i kēia lā e nānā wale mākou i ka hana ʻana o ka waihona me Ansible.

Hiki i ka Mitogen i kekahi mau kūlana ke hoʻoikaika i kāu code Ansible i nā manawa he nui a hoʻemi nui i ka hoʻohana ʻana i nā kaʻa. E nānā i nā hihia hoʻohana kaulana loa a ʻike i ka nui o ke kōkua ʻana iā mākou.

Hoʻohana au i ka Ansible no ka: hana ʻana i nā faila hoʻonohonoho ma kahi mīkini mamao, hoʻokomo i nā pūʻolo, kope ʻana i nā faila i ka mīkini mamao. Loaʻa paha kāu mau hiʻohiʻona - e kākau i nā manaʻo.

E hele kākou!

He maʻalahi loa ka hoʻonohonoho Mitogen no Ansible:
E hoʻouka i ka waihona Mitogen:

pip install mitogen

I kēia manawa, ʻelua mau ala like - e hoʻonohonoho i nā koho i ka faila hoʻonohonoho ansible.cfg, a i ʻole e hoʻonohonoho i nā ʻano hoʻololi kaiapuni kūpono.

E noʻonoʻo kākou ʻo ke ala i ka Mitogen i hoʻokomo ʻia /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. A laila:

export ANSIBLE_STRATEGY_PLUGINS=/usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy
export ANSIBLE_STRATEGY=mitogen_linear

ai ole ia,

[defaults]
strategy = mitogen_linear
strategy_plugins = /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy

E hoʻokomo iā Ansible ma virtualenv, me ka ʻole o 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

E ʻoluʻolu, ʻaʻole hana ʻo Mitogen 0.2.7 me Ansible 2.8 (mai Mei 2019)

Ke hana nei i nā inoa inoa:

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'

I kēia manawa, e hoʻāʻo kākou e holo i kahi puke pāʻani e hana ana i nā faila ma kahi mīkini mamao:

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

A e holo mākou me ka ʻole o Mitogen e hana i nā faila 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

ʻIke mākou i kahi hoʻomaikaʻi 2-fold. E nānā kākou no 20, 30, ..., 100 faila:

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

ʻO ka hopena, ua wikiwiki mākou i ka hoʻokō ʻana ma mua o 10 mau manawa!
I kēia manawa, e hoʻāʻo kākou i nā hiʻohiʻona like ʻole a ʻike i ka wikiwiki o ka hana ʻana o nā mea āpau iā mākou:

  • Palapala no ke kope ʻana i nā faila i kahi host mamao mai kahi kūloko (me ka module copy):
    ʻO ka wikiwiki o Ansible me Mitogen

  • Palapala no ka hana ʻana i nā faila ma kahi hoʻokipa mamao me copy module:
    ʻO ka wikiwiki o Ansible me Mitogen

  • ʻO ka hiʻohiʻona me ka hoʻoiho ʻana i nā faila mai kahi host mamao a i kahi kūloko:
    ʻO ka wikiwiki o Ansible me Mitogen

E hoʻāʻo kākou i kahi hiʻohiʻona me nā mīkini mamao (3), no ka laʻana, kahi hiʻohiʻona me ke kope ʻana i nā faila i kahi host mamao:
ʻO ka wikiwiki o Ansible me Mitogen

E like me kāu e ʻike ai, mālama ʻo Mitogen iā mākou i ka manawa a me ke kaʻa i kēia mau hiʻohiʻona. Akā inā ʻaʻole i Ansible ka bottleneck, akā no ka laʻana i ka I / O o kahi disk a i ʻole pūnaewele, a i ʻole ma kahi ʻē aʻe, a laila paʻakikī ke manaʻo e kōkua mai ʻo Mitogen iā mākou.

E hoʻāʻo kāua i kahi palapala me ka hoʻokomo ʻana i nā pūʻolo me yum/dnf a me nā modula python me ka hoʻohana ʻana i ka pip. Ua hūnā ʻia nā pūʻolo i ʻole e hilinaʻi i nā pilikia o ka pūnaewele:

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

Me Mitogen he 12 kekona, e like me ka nele.
Ma kaʻaoʻao Mitogen no ka ʻaoʻao Ansible hiki iā ʻoe ke nānā i nā hōʻailona a me nā hoʻokolohua ʻē aʻe. E like me ka ʻōlelo a ka ʻaoʻao:

ʻAʻole hiki i ka Mitogen ke wikiwiki i ka module ke holo. Hiki iā ia ke hana wikiwiki i ka hoʻokō ʻana i kēia module.

No laila, he mea nui e ʻike i kāu mau bottlenecks i kāu hoʻolālā ʻana a inā ma muli o Ansible, a laila e kōkua ʻo Mitogen iā ʻoe e hoʻoponopono iā lākou a wikiwiki loa i ka hoʻokō ʻana i kāu mau puke pāʻani.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka