Manafaingana ny Ansible miaraka amin'i Mitogen

Ansible lasa iray amin'ireo malaza indrindra System Configuration Management. rehefa novidin'ny Red Hat tamin'ny 2015 ny isa mpandray anjara amin'ny tetikasa Nihoatra ny an'arivony ary ny Ansible angamba no rafitra fametrahana sy orkestra be mpampiasa indrindra. Mahavariana tokoa ny fampiasany isan-karazany.

Ansible miasa amin'ny fifandraisana SSH amin'ny mpampiantrano lavitra. Manokatra fivoriana SSH, miditra, mandika ny kaody Python amin'ny tambajotra ary manoratra izany amin'ny rakitra vonjimaika mitokana. Aorian'izay dia mandeha amin'ny milina lavitra io rakitra io. Ity filaharan'ny asa rehetra ity dia lava sy mandreraka, noho izany dia misy fomba isan-karazany hanatsarana azy.

Ny iray amin'ireo fomba ireo dia SSH pipelines izay ahafahanao mampiasa fivoriana SSH iray hanatanteraka toromarika, fa tsy manokatra fivoriana vaovao isaky ny mandeha, izay afaka mamonjy antsika fotoana betsaka. (Tsarovy fotsiny ny hamono requiretty fametrahana sudo ao amin'ny anao /etc/sudoers rakitra amin'ny milina lavitra)

Fomba vaovao hamerenana ny Ansible dia tranomboky python antsoina Mitogen. Raha misy tsy nandre izany dia holazaiko fohifohy ny fiasany. Izy io dia mamela ny famonoana haingana ny code python amin'ny milina lavitra, ary ny Ansible dia ohatra iray amin'ny fampiasana. Mitogen dia mampiasa fantsona UNIX amin'ny milina lavitra ary mamindra kaody python voatsindry amin'ny zlib ary serialized miaraka amin'ny pickle. Izany dia manampy amin'ny famitana azy haingana kokoa ary mamonjy ny fifamoivoizana. Raha liana amin'ny fanazavana amin'ny antsipiriany kokoa ianao, dia tsara ny mamaky momba izany ao amin'ny pejy "Ahoana no miasa". Fa ny fomba fiasan'ny tranomboky miaraka amin'ny Ansible ihany no hifantohantsika anio.

Ny mitogen amin'ny toe-javatra sasany dia afaka manafaingana imbetsaka ny code Ansible anao ary mampihena be ny fandaniana fifamoivoizana. Andeha hojerentsika ireo tranga fampiasa malaza indrindra ary hojerentsika hoe tena manampy antsika izany.

Ampiasaiko indrindra ny Ansible amin'ny: famoronana rakitra fanamafisana amin'ny milina lavitra, fametrahana fonosana, kopia rakitra mankany sy avy amin'ny milina lavitra. Angamba manana ohatra hafa ianao - soraty ao amin'ny fanehoan-kevitra.

Andao handeha!

Ny fanamafisana mitogen ho an'ny Ansible dia tena tsotra:
Apetraho ny tranomboky Mitogen:

pip install mitogen

Misy fomba roa mitovy izao - na amboary ireo safidy ao amin'ny fichier configuration ansible.cfg, na apetraho ireo fari-piainana ilaina.

Andao atao hoe ny lalana mankany amin'ny Mitogen napetraka dia ho /usr/lib/python2.7/site-packages/ansible_mitogen/plugins/strategy. Avy eo:

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

na

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

Andao hametraka Ansible amin'ny virtualenv, miaraka sy tsy misy 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

Mariho fa ny Mitogen 0.2.7 dia tsy miasa amin'ny Ansible 2.8 (hatramin'ny Mey 2019)

Mamorona anarana:

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'

Andeha isika izao hanandrana handefa playbook izay mamorona rakitra amin'ny milina lavitra:

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

Ary andao ataontsika miaraka sy tsy misy Mitogen hamorona rakitra 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

Mahita fanatsarana in-2 isika. Andeha hojerentsika ny rakitra 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

Vokatr'izany dia nanafaingana ny famonoana in-10 mahery izahay!
Andeha isika hanandrana toe-javatra samihafa ary hojerentsika hoe manao ahoana ny fandehan'ny zava-drehetra ho antsika:

  • Script ho an'ny kopia rakitra amin'ny mpampiantrano lavitra avy any an-toerana (miaraka amin'ny module copy):
    Manafaingana ny Ansible miaraka amin'i Mitogen

  • Script hanaovana rakitra amin'ny mpampiantrano lavitra miaraka amin'ny copy Module:
    Manafaingana ny Ansible miaraka amin'i Mitogen

  • Scenario amin'ny fampidinana rakitra avy amin'ny mpampiantrano lavitra mankany amin'ny eo an-toerana:
    Manafaingana ny Ansible miaraka amin'i Mitogen

Andeha isika hanandrana scenario misy milina lavitra (3) maromaro, ohatra ny scenario amin'ny fanaovana kopia rakitra amin'ny mpampiantrano lavitra:
Manafaingana ny Ansible miaraka amin'i Mitogen

Araka ny hitanao, ny Mitogen dia mamonjy antsika amin'ny fotoana sy ny fifamoivoizana amin'ireo toe-javatra ireo. Fa raha tsy ao amin'ny Ansible ny bottleneck, fa ohatra ao amin'ny I/O amin'ny kapila na tambajotra, na any an-kafa, dia sarotra ny manantena fa hanampy antsika i Mitogen.

Andao hanandrana script miaraka amin'ny fametrahana fonosana miaraka amin'ny modules yum/dnf sy python mampiasa pip. Natao cache ireo fonosana mba tsy hiankina amin'ny fikorontanan'ny tambajotra:

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

Miaraka amin'i Mitogen dia naharitra 12 segondra izany, mitovy amin'ny tsy misy azy.
Ao amin'ny pejy Mitogen ho an'ny pejy Ansible afaka mijery benchmarks sy fitsapana hafa ianao. Araka ny voalazan'ny pejy:

Tsy afaka manafaingana ny maodely i Mitogen rehefa mandeha izy. Izy io ihany no afaka manao ny fanatanterahana ity maody ity haingana araka izay azo atao.

Noho izany, zava-dehibe ny mahita ny bottlenecks anao amin'ny fametrahanao ary raha noho ny Ansible izy ireo, dia hanampy anao hamaha azy ireo i Mitogen ary hanafaingana ny fanatanterahana ny bokinao.

Source: www.habr.com

Add a comment