Ne estas sekreto, ke kun la defaŭltaj agordoj Ansible ne povas fari sian laboron tre rapide. En la artikolo mi montros plurajn kialojn por tio kaj proponos utilan minimumon da agordoj kiuj, tre eble, efektive pliigos la rapidecon de via projekto.
Ĉi tie kaj sube ni diskutas Ansible 2.9.x, kiu estis instalita en ĵus kreita virtualenv laŭ via plej ŝatata maniero.
Post instalado, kreu "ansible.cfg" dosieron apud via ludlibro - ĉi tiu loko permesos al vi translokigi ĉi tiujn agordojn kune kun la projekto, kaj ili ŝargiĝos tute aŭtomate.
Dukto
Iuj eble jam aŭdis pri la bezono uzi pipelining, tio estas, ne kopii modulojn al la dosiersistemo de la celsistemo, sed transloki zip-arkivon envolvitan en Base64 rekte al la stdin de la Python-interpretilo, sed aliaj eble ne, sed la fakto. restas fakto:
pipelining = True
Kolektante faktojn
Ĉu vi scias, ke kun defaŭltaj agordoj, Ansible por ĉiu teatraĵo iniciatas la kolekton de faktoj por ĉiuj gastigantoj kiuj partoprenas en ĝi? Ĝenerale, se vi ne sciis, nun vi scias. Por eviti ke tio okazu, vi devas ebligi aŭ la eksplicitan petan reĝimon por kolekti faktojn (eksplicitan) aŭ la inteligentan reĝimon. En ĝi, faktoj estos kolektitaj nur de tiuj gastigantoj, kiuj ne estis renkontitaj en antaŭaj ludoj.
UPD. Kiam vi kopias, vi devos elekti unu el ĉi tiuj agordoj.
gathering = smart|explicit
Reuzado de ssh-konektoj
Se vi iam rulis Ansible en sencimiga reĝimo (la opcio "v", ripetita unu ĝis naŭ fojojn), vi eble rimarkis, ke ssh-konektoj konstante estas faritaj kaj rompitaj. Do, ankaŭ ĉi tie estas kelkaj subtilaĵoj.
Vi povas eviti la paŝon reestabli ssh-konekton je du niveloj samtempe: ambaŭ rekte en la ssh-kliento, kaj dum transdono de dosieroj al la administrita gastiganto de la administranto.
Por reuzi malfermitan ssh-konekton, simple transdonu la necesajn ŝlosilojn al la ssh-kliento. Tiam ĝi komencos fari la jenon: kiam oni establas ssh-konekton por la unua fojo, ĝi aldone kreos tiel nomatan kontrolkonekton, dum postaj instalaĵoj, ĝi kontrolos la ekziston de ĉi tiu sama ingo, kaj se sukcesos, reuzos la ekzistanta ssh-konekto. Kaj por ke ĉi tio ĉio havu sencon, ni agordu la tempon por konservi la konekton kiam neaktive. Vi povas legi pli en
ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"
Por reuzi jam malfermitan ssh-konekton dum transdono de dosieroj al administrita gastiganto, simple specifu alian nekonatan agordon ssh_transfer_method. La dokumentado pri ĉi tiu temo estas ege
transfer_method = piped
Cetere, en la branĉo "evolui" ankaŭ ĉi tiu agordo ekzistas
Ne timu la tranĉilon, timu la forkon
Alia utila agordo estas forkoj. Ĝi determinas la nombron da laborprocezoj, kiuj samtempe konektos al gastigantoj kaj plenumos taskojn. Pro la proprecoj de Python kiel lingvo, procezoj estas uzataj, ne fadenoj, ĉar Ansible ankoraŭ subtenas Python 2.7 - neniu asincio por vi, ne utilas enkonduki nesinkronan konduton ĉi tie! Defaŭlte Ansible funkcias
forks = 20
Mi nur avertas vin tuj, ke eble estas iuj malfacilaĵoj ĉi tie rilate al la disponebla kvanto de memoro en la kontrolmaŝino. Alivorte, vi povas, kompreneble, agordi forkojn=100500, sed kiu diris, ke ĝi funkcios?
Kunmetante ĉion
Kiel rezulto, por ansible.cfg (ini-formato), la necesaj agordoj povas aspekti jene:
[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped
Kaj se vi volas kaŝi ĉion en normala YaML-inventaro de sana persono, tiam ĝi povas aspekti kiel ĉi tio:
---
all:
vars:
ansible_ssh_pipelining: true
ansible_ssh_transfer_method: piped
ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m
Bedaŭrinde, ĉi tio ne funkcios kun la agordoj "kolektado = inteligenta/eksplicita" kaj "forkoj = 20": iliaj YaML-ekvivalentoj ne ekzistas. Aŭ ni metas ilin en ansible.cfg, aŭ ni pasas ilin tra la mediovariabloj ANSIBLE_GATHERING kaj ANSIBLE_FORKS.
Pri Mitogen
- Kie temas pri Mitogen? — vi rajtas demandi, kara leganto. Nenie en ĉi tiu artikolo. Sed se vi vere pretas legi ĝian kodon kaj eltrovi kial via ludlibro kraŝas kun Mitogen, sed funkcias bone kun vanilo Ansible, aŭ kial la sama ludlibro funkciis bone antaŭe, sed post ĝisdatigo komencis fari strangajn aferojn - nu, Mitogen povus esti via ilo. Apliku ĝin, komprenu ĝin, verku artikolojn - mi legos ĝin kun intereso.
Kial mi persone ne uzas Mitogen? Ĉar Gladiolus funkcias nur dum la taskoj estas vere simplaj kaj ĉio estas bona. Tamen, se vi turnas vin iomete maldekstren aŭ dekstren - jen, ni alvenis: responde, manpleno da neklaraj esceptoj flugas al vi, kaj por kompletigi la bildon, mankas nur la komuna frazo “dankon al vi ĉiuj. , ĉiuj estas liberaj.” Ĝenerale, mi simple ne volas perdi tempon por ekscii la kialojn de la sekva "subtera frapo".
Kelkaj el ĉi tiuj agordoj estis malkovritaj dum la legado
Nur registritaj uzantoj povas partopreni la enketon.
Kiun el la sekvaj agordoj de Ansible vi uzas por akceli viajn projektojn?
-
69,6%pipelining=true32
-
34,8%kunveno = inteligenta/eksplicita16
-
52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24
-
17,4%transfer_method = piped8
-
63,0%forkoj = XXX29
-
6,5%Nenio el ĉi tio, nur Mitogen3
-
8,7%Mitogen + Mi notos, kiu el ĉi tiuj agordoj4
Voĉdonis 46 uzantoj. 21 uzanto sindetenis.
Ĉu vi volas pliajn aferojn pri Ansible?
-
78,3%jes, kompreneble54
-
21,7%jes, mi nur volas pli da malmolaj aferoj!15
-
0,0%ne, kaj ne necesas por nenio0
-
0,0%ne, estas komplike!!!0
69 uzantoj voĉdonis. 7 uzantoj sindetenis.
fonto: www.habr.com