Ùn hè micca sicretu chì cù i paràmetri predeterminati Ansible ùn pò micca fà u so travagliu assai rapidamente. In l'articulu, indicà parechji motivi per questu è offre un minimu utile di paràmetri chì, assai possibbilmente, in realtà aumenteranu a velocità di u vostru prughjettu.
Quì è quì sottu discutemu Ansible 2.9.x, chì hè stata installata in un virtualenv appena creatu in u vostru modu favuritu.
Dopu à a stallazione, crea un schedariu "ansible.cfg" accantu à u vostru playbook - stu locu vi permetterà di trasfiriri sti paràmetri cù u prugettu, in più ch'elli caricanu abbastanza automaticamente.
Pipeline
Qualchidunu pò avè digià intesu parlà di a necessità di usà pipelining, vale à dì, micca di cupià i moduli à u sistema di schedarii di u sistema di destinazione, ma trasfirendu un archiviu zip imballatu in Base64 direttamente à u stdin di l'interprete Python, ma altri ùn ponu micca, ma u fattu. resta un fattu:
pipelining = True
Raccolta di fatti
Sapete chì cù i paràmetri predeterminati, Ansible per ogni ghjocu inizia a cullizzioni di fatti per tutti l'ospiti chì participanu à questu? In generale, sè ùn sapete micca, avà sapete. Per impediscenu chì questu succede, avete bisognu di attivà sia u modu di dumanda esplicita per a cullizzioni di fatti (esplicito) sia u modu intelligente. In questu, i fatti seranu recullati solu da quelli òspiti chì ùn anu micca scontru in ghjoculi precedenti.
UPD. Quandu copia, vi tuccherà à sceglie unu di sti paràmetri.
gathering = smart|explicit
Riutilizà e cunnessione ssh
Se avete mai eseguitu Ansible in modu di debugging (l'opzione "v", ripetuta da una à nove volte), pudete avè nutatu chì e cunnessione ssh sò constantemente fatte è rotte. Dunque, ci sò ancu un paru di suttilità quì.
Pudete evitari u passu di ristabilisce una cunnessione ssh à dui livelli à una volta: sia direttamente in u cliente ssh, sia quandu si trasferisce i fugliali à l'ospite gestitu da u manager.
Per reutilizà una cunnessione ssh aperta, basta passà e chjave necessarie à u cliente ssh. Allora cumminciarà à fà ciò chì segue: quandu stabilisce una cunnessione ssh per a prima volta, hà da creà in più un cusì chjamatu socket di cuntrollu, in installazioni successive, verificarà l'esistenza di questu socket, è se successu, reutilizà u socket. cunnessione ssh esistente. È per fà tuttu questu sensu, stabiliscemu u tempu per mantene a cunnessione quandu inattivu. Pudete leghje più in
ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"
Per riutilizà una cunnessione ssh dighjà aperta quandu si trasferisce i fugliali à un host gestionatu, basta à specificà un altru paràmetru scunnisciutu ssh_transfer_method. A documentazione nantu à questu sughjettu hè estremamente
transfer_method = piped
Per via, in u ramu "sviluppà" sta paràmetru esiste ancu
Ùn àbbia paura di u cuteddu, a paura di a forchetta
Un altru paràmetru utile hè forchetta. Determina u numeru di prucessi di travagliu chì si cunnettanu simultaneamente à l'ospiti è eseguisce e so attività. A causa di e peculiarità di Python cum'è una lingua, i prucessi sò usati, micca i fili, perchè Ansible sustene sempre Python 2.7 - ùn ci hè micca asinciu per voi, ùn ci hè nunda d'introduce un cumpurtamentu asincronu quì! Per difettu, Ansible corre
forks = 20
Solu avvistu subitu chì ci ponu esse alcune difficultà quì ligati à a quantità di memoria dispunibule nantu à a macchina di cuntrollu. In altri palori, pudete, sicuru, stabilisce forche = 100500, ma quale hà dettu ch'ellu hà da travaglià?
Mettendu tuttu inseme
In u risultatu, per ansible.cfg (formatu ini), i paràmetri necessarii ponu vede cusì:
[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped
È se vulete ammuccià tuttu in un inventariu YaML normale di una persona sana, allora pò vede qualcosa cusì:
---
all:
vars:
ansible_ssh_pipelining: true
ansible_ssh_transfer_method: piped
ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m
Sfortunatamente, questu ùn funziona micca cù i paràmetri "gathering = smart / esplicit" è "forks = 20": i so equivalenti YaML ùn esistenu micca. O l'avemu stabilitu in ansible.cfg, o li passamu per e variabili di l'ambiente ANSIBLE_GATHERING è ANSIBLE_FORKS.
À propositu di Mitogen
- Induve hè questu nantu à Mitogen ? - avete u dirittu di dumandà, caru lettore. Nunda in questu articulu. Ma s'è vo site veramente prontu à leghje u so codice è capisce perchè u vostru playbook crashes cù Mitogen, ma funziona bè cù vaniglia Ansible, o perchè u listessu playbook era travagliatu bè prima, ma dopu un aghjurnamentu cuminciò à fà cose strane - bè, Mitogen puderia esse u vostru strumentu. Applicà, capiscenu, scrivite articuli - a leghje cun interesse.
Perchè ùn aghju micca aduprà personalmente Mitogen? Perchè Gladiolus travaglia solu finu à chì i travaglii sò veramente simplici è tuttu hè bè. In ogni casu, s'ellu si gira un pocu à a manca o à a diritta - hè questu, avemu ghjuntu: in risposta, una mansa di eccezzioni indistinte volanu à voi, è per compie u ritrattu, tuttu ciò chì manca hè a frasa cumuna "grazie à tutti. , tutti sò liberi ". In generale, ùn vogliu micca perde u tempu per scopre i motivi di u prossimu "coccu sotterraneo".
Alcune di sti paràmetri sò stati scuperti durante u prucessu di lettura
Solu l'utilizatori registrati ponu participà à l'indagine.
Quale di i seguenti paràmetri Ansible aduprate per accelerà i vostri prughjetti?
-
69,6%pipelining=true32
-
34,8%riunione = intelligente/esplicito16
-
52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24
-
17,4%trasferimentu_metudu = piped8
-
63,0%forchetta = XXX29
-
6,5%Nimu di questu, solu Mitogen3
-
8,7%Mitogen + notaraghju quale di questi paràmetri4
46 utilizatori anu vutatu. 21 utilizatore s'hè astenutu.
Vulete più cose nantu à Ansible?
-
78,3%iè, sicuru 54
-
21,7%iè, vogliu solu più cose hardcore !15
-
0,0%no, è ùn hè micca necessariu per nunda0
-
0,0%nò, hè cumplicatu !!!0
69 utilizatori anu vutatu. 7 utilizatori si sò astenuti.
Source: www.habr.com