Ansible bizkortzea

Ansible bizkortzea
Ez da sekretua ezarpen lehenetsiekin Ansiblek ezin duela bere lana oso azkar egin. Artikuluan horretarako hainbat arrazoi adieraziko ditut eta gutxieneko ezarpen erabilgarriak eskainiko ditut, ziurrenik zure proiektuaren abiadura areagotuko dutenak.

Hemen eta behean Ansible 2.9.x eztabaidatuko dugu, zure modu gogokoenean sortu berri den virtualenv batean instalatu zena.

Instalatu ondoren, sortu "ansible.cfg" fitxategi bat zure playbook ondoan - kokapen honek ezarpen hauek proiektuarekin batera transferitzeko aukera emango dizu, eta automatikoki kargatuko dira.

Kanalizazioa

Batzuek dagoeneko entzun izan dute pipelining-a erabili beharrari buruz, hau da, xede-sistemaren fitxategi-sisteman moduluak ez kopiatzea, baizik eta Base64-n bildutako zip artxibo bat zuzenean Python interpretearen stdin-era transferitzea, baina beste batzuk agian ez, baina egia esan. errealitate bat izaten jarraitzen du: ezarpen hau oraindik gutxietsita geratzen da. Zoritxarrez, sudo konfiguratzeko erabiltzen diren Linux banaketa ezagun batzuk ez dira oso ondo lehenespenez; beraz, komando honek tty (terminal) bat behar zuen, beraz, Ansiblek ezarpen oso erabilgarria desgaituta utzi zuen lehenespenez.

pipelining = True

Gertaerak biltzea

Ba al zenekien ezarpen lehenetsiekin, antzezlan bakoitzeko Ansiblek bertan parte hartzen duten ostalari guztien datuen bilketa abiarazten duela? Orokorrean, ez bazenekien, orain badakizu. Hori gerta ez dadin, gertakariak biltzeko eskaera modu esplizitua (esplizitua) edo modu adimenduna gaitu behar duzu. Bertan, aurreko antzezlanetan aurkitu ez ziren anfitrioietatik soilik bilduko dira.
UPD. Kopiatzen duzunean, ezarpen hauetako bat hautatu beharko duzu.

gathering = smart|explicit

Ssh konexioak berrerabili

Inoiz exekutatu baduzu Ansible arazketa moduan ("v" aukera, bat edo bederatzi aldiz errepikatua), baliteke ssh konexioak etengabe egiten eta hautsi egiten direla konturatu izana. Beraz, pare bat sotiltasun daude hemen ere.

Ssh konexioa aldi berean bi mailatan berrezartzeko urratsa saihestu dezakezu: zuzenean ssh bezeroan eta kudeatzailetik kudeatutako ostalari fitxategiak transferitzean.
Ssh konexio ireki bat berrerabiltzeko, ssh bezeroari beharrezko gakoak pasa besterik ez dago. Ondoren, honako hau egiten hasiko da: ssh konexioa lehen aldiz ezartzean, kontrol-socket deritzona ere sortuko du, ondorengo instalazioetan, socket horren existentzia egiaztatuko du, eta arrakasta izanez gero, berrerabili. dagoen ssh konexioa. Eta honek guztiak zentzua izan dezan, ezar dezagun konexioa mantentzeko ordua aktibo ez dagoenean. Gehiago irakurri dezakezu ssh dokumentazioa, eta Ansible-ren testuinguruan ssh bezeroari beharrezko aukerak "birbidaltzea" besterik ez dugu erabiltzen.

ssh_args = "-o ControlMaster=auto -o ControlPersist=15m"

Dagoeneko irekita dagoen ssh konexio bat berrerabiltzeko fitxategiak kudeatutako ostalari batera transferitzean, zehaztu beste ezarpen ezezagun bat ssh_transfer_method. Gai honi buruzko dokumentazioa izugarria da zikorrak eta engainagarria, aukera honek nahiko ondo funtzionatzen duelako! Baina irakurtzen iturburu kodea zehazki zer gertatuko den ulertzeko aukera ematen du: dd komandoa kudeatutako ostalarian abiaraziko da, nahi duzun fitxategiarekin zuzenean lan eginez.

transfer_method = piped

Bide batez, “garatu” adarrean ezarpen hau ere badago inora ez joan.

Ez izan aiztoaren beldur, izan sardexkaren beldur

Beste ezarpen erabilgarria sardexkak dira. Ostalariekin aldi berean konektatuko diren eta zereginak egingo dituzten langile-prozesuen kopurua zehazten du. Python-ek hizkuntza gisa dituen berezitasunak direla eta, prozesuak erabiltzen dira, ez hariak, Ansiblek Python 2.7 onartzen duelako oraindik - ez dago asinziorik zuretzat, ez du balio hemen portaera asinkronoa sartzeak! Lehenespenez, Ansible exekutatzen da bost langileak, baina behar bezala galdetuz gero, gehiago jarriko ditu martxan:

forks = 20

Berehala ohartarazten dizut kontrol-makinaren memoria-kopuruarekin lotutako zailtasun batzuk egon daitezkeela hemen. Beste era batera esanda, sardexkak=100500 ezar ditzakezu, noski, baina nork esan du funtzionatuko zuela?

Guztia batuta

Ondorioz, ansible.cfg (ini formatuan), beharrezkoak diren ezarpenak honelakoak izan daitezke:

[defaults]
gathering = smart|explicit
forks = 20
[ssh_connection]
pipelining = True
ssh_args = -o ControlMaster=auto -o ControlPersist=15m
transfer_method = piped

Eta pertsona osasuntsu baten YaML-inbentario normal batean dena ezkutatu nahi baduzu, honelakoa izan daiteke:

---
all:
  vars:
    ansible_ssh_pipelining: true
    ansible_ssh_transfer_method: piped
    ansible_ssh_args: -o ControlMaster=auto -o ControlPersist=15m

Zoritxarrez, honek ez du funtzionatuko "gathering = smart/explicit" eta "forks = 20" ezarpenekin: haien YaML baliokideak ez dira existitzen. Edo ansible.cfg-en ezartzen ditugu, edo ANSIBLE_GATHERING eta ANSIBLE_FORKS ingurune-aldagaietatik pasatzen ditugu.

Mitogen buruz
- Non da hau Mitogen buruz? - galdetzeko eskubidea duzu, irakurle maitea. Artikulu honetan inon. Baina benetan prest bazaude bere kodea irakurtzeko eta zure jolas-liburua zergatik huts egiten duen Mitogen-ekin, baina ondo funtzionatzen duen Vanilla Ansible-rekin, edo zergatik funtzionatzen zuen lehen jolas-liburua bera, baina eguneratze baten ondoren gauza arraroak egiten hasi zen - tira, Mitogen zure tresna izan liteke. Aplikatu, ulertu, idatzi artikuluak - interes handiz irakurriko dut.

Zergatik ez dut pertsonalki Mitogen erabiltzen? Gladiolus-ek zereginak oso errazak diren bitartean eta dena ondo dagoen bitartean bakarrik funtzionatzen duelako. Dena den, ezkerrera edo eskuinera pixka bat biratuz gero, hori da, iritsi gara: erantzunez, salbuespen gutxi batzuk hegan egiten zaituzte, eta argazkia osatzeko, falta dena da “eskerrik asko guztiei” esaldi arrunta. , denak aske dira». Orokorrean, ez dut denbora galdu nahi hurrengo "lurpeko kolpearen" arrazoiak aurkitzen.

Ezarpen horietako batzuk irakurketa prozesuan aurkitu ziren iturburu kodea konexio plugina "ssh.py" izen esplikatuarekin. Irakurketaren emaitzak partekatzen ditut beste norbait iturriak aztertzera, irakurtzera, ezarpena egiaztatzeko, dokumentazioarekin alderatzera bultzatuko duen esperantzarekin - azken finean, lehenago edo beranduago horrek guztiak emaitza positiboak ekarriko dizkizu. Zorte on!

Erregistratutako erabiltzaileek soilik parte hartu dezakete inkestan. Hasi saioa, mesedez.

Ansible-ren ezarpen hauetatik zein erabiltzen duzu zure proiektuak bizkortzeko?

  • 69,6%kanalizazioa=egia32

  • 34,8%bilketa = adimentsu/esplizitu16

  • 52,2%ssh_args = "-o ControlMaster=auto -o ControlPersist=..."24

  • 17,4%transfer_method = kanalizatu8

  • 63,0%sardexkak = XXX29

  • 6,5%Horietako bat ere ez, Mitogen3 besterik ez

  • 8,7%Mitogen + ezarpen hauetako zeintzuk kontuan hartuko dut4

46 erabiltzailek eman dute botoa. Erabiltzaile 21 abstenitu egin zen.

Ansibleri buruzko gauza gehiago nahi dituzu?

  • 78,3%bai, noski54

  • 21,7%bai, gauza hardcore gehiago nahi ditut!15

  • 0,0%ez, eta ez da ezertarako beharrezkoa0

  • 0,0%ez, konplikatua da!!!0

69 erabiltzailek eman dute botoa. 7 erabiltzaile abstenitu ziren.

Iturria: www.habr.com

Gehitu iruzkin berria