Izisekelo ezinengqondo, ngaphandle kwalokho izincwadi zakho zokudlala zizoba yiqebelengwane le-pasta enamathelayo

Ngenza ukubuyekezwa okuningi kwekhodi yabanye abantu futhi ngibhala okuningi ngokwami. Ngesikhathi sokuhlaziya amaphutha (abanye abantu newami), kanye nenani lezingxoxo, ngabona iphutha elikhulu elenziwa ngabasebenzisi be-Ansible - bangena ezintweni eziyinkimbinkimbi ngaphandle kokwazi okuyisisekelo.

Ukuze ngilungise lokhu kungabi nabulungisa kwendawo yonke, nginqume ukubhala isingeniso se-Ansible kulabo asebeyazi. Ngiyakuxwayisa, lokhu akukona ukulandisa kabusha kwendoda, lokhu ukufunda okude okunezinhlamvu eziningi futhi azikho izithombe.

Izinga elilindelekile lomfundi ukuthi izinkulungwane ezimbalwa zemigqa ye-yamla isibhaliwe kakade, kukhona osekukhiqizwa kakade, kodwa "ngandlela-thile yonke into igwegwile."

Amagama

Iphutha elikhulu elenziwa ngumsebenzisi we-Ansible ukungazi ukuthi into ethile ibizwa ngani. Uma ungawazi amagama, awukwazi ukuqonda ukuthi imibhalo ithini. Isibonelo esiphilayo: phakathi nenhlolokhono, umuntu obebonakala ethi ubhale kakhulu ku-Ansible akakwazanga ukuphendula umbuzo othi “incwadi yokudlala iqukethe ziphi izici?” Futhi lapho ngiphakamisa ukuthi “impendulo bekulindeleke ukuthi incwadi yokudlala iqukethe umdlalo,” kwalandela ukuphawula okudelelayo “asikusebenzisi lokho”. Abantu babhala I-Ansible for money futhi abasebenzisi ukudlala. Empeleni bayayisebenzisa, kodwa abazi ukuthi iyini.

Ngakho-ke ake siqale ngento elula: ibizwa ngani? Mhlawumbe uyakwazi lokhu, noma mhlawumbe awukwazi, ngoba awuzange unake lapho ufunda imibhalo.

i-ansible-playbook isebenzisa incwadi yokudlala. Ibhuku lokudlala yifayela elinesandiso se-yml/yaml, ngaphakathi kwalo kunokuthile okufana nalokhu:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Sesivele sibonile ukuthi lonke leli fayela liyincwadi yokudlala. Singakhombisa ukuthi izindima zikuphi nokuthi imisebenzi ikuphi. Kodwa kuphi ukudlala? Futhi yini umehluko phakathi kwemidlalo nendima noma incwadi yokudlala?

Konke kukumadokhumenti. Futhi bayakugeja. Abaqalayo - ngoba kuningi kakhulu futhi ngeke ukhumbule konke ngesikhathi esisodwa. Abanolwazi - ngoba "izinto ezingasho lutho". Uma unolwazi, phinda ufunde lawa makhasi okungenani kanye njalo ezinyangeni eziyisithupha, futhi ikhodi yakho izohamba phambili ekilasini.

Ngakho-ke, khumbula: I-Playbook iwuhlu oluqukethe umdlalo kanye import_playbook.
Lona umdlalo owodwa:

- hosts: group1
  roles:
    - role1

futhi lona omunye umdlalo:

- hosts: group2,group3
  tasks:
    - debug:

Kuyini ukudlala? Kungani?

Ukudlala kuyisici esiyinhloko sebhuku lokudlala, ngoba ukudlala nokudlala kuphela kuhlobanisa uhlu lwezindima kanye/noma imisebenzi enohlu lwabasingathi okumele isetshenziswe kukho. Ekujuleni kwemibhalo ungathola okukhulunywa ngakho delegate_to, ama-plugin okubuka indawo, izilungiselelo eziqondene nenethiwekhi, abasingathi be-jump, njll. Bakuvumela ukuthi ushintshe kancane indawo lapho imisebenzi yenziwa khona. Kodwa, khohlwa ngakho. Ngayinye yalezi zinketho ezihlakaniphile zinokusetshenziswa okukhethekile, futhi azikho emhlabeni wonke. Futhi sikhuluma ngezinto eziyisisekelo okufanele wonke umuntu azazi futhi azisebenzise.

Uma ufuna ukwenza “into ethile” “ndawana thize”, ubhala umdlalo. Akuyona indima. Akuyona indima enamamojula nezihambeli. Uyawuthatha ubhale umdlalo. Okuthi, kunkambu yabasingathi ubhala lapho okumele ukwenze khona, nasezindimeni/emisebenzini - okumele ukwenze.

Kulula, akunjalo? Bekungaba njani ngenye indlela?

Esinye sezikhathi eziyisici lapho abantu benesifiso sokwenza lokhu hhayi ngokudlala “indima ehlela yonke into.” Ngingathanda ukuba neqhaza elilungisa womabili amaseva ohlobo lokuqala namaseva ohlobo lwesibili.

Isibonelo se-archetypal ukuqapha. Ngingathanda ukuba nendima yokuqapha ezomisa ukuqapha. Indima yokuqapha yabelwe ukuqapha ababungazi (ngokuhambisana nokudlala). Kodwa kuvele ukuthi ukuze kuqashwe sidinga ukuletha amaphakheji kubasingathi esibaqaphile. Kungani ungasebenzisi isithunywa? Udinga futhi ukulungisa ama-iptables. isithunywa? Udinga futhi ukubhala/ukulungisa ukulungiselelwa kwe-DBMS ukuze unike amandla ukuqapha. isithunywa! Futhi uma ubuhlakani buntula, khona-ke ungenza ithimba include_role ku-loop evalelwe kusetshenziswa isihlungi esikhohlisayo ohlwini lwamaqembu, nangaphakathi include_role ungenza okwengeziwe delegate_to futhi. Futhi siyahamba...

Isifiso esihle - ukuba nendima eyodwa yokuqapha, "eyenza konke" - isiholela esihogweni esiphelele lapho kuvame ukuba khona indlela eyodwa yokuphuma: ukubhala kabusha yonke into kusukela ekuqaleni.

Kwenzeke kuphi iphutha lapha? Ngesikhathi uthola ukuthi ukwenza umsebenzi othi "x" kumsingathi u-X bekufanele uye kusingatha u-Y futhi wenze u-"y" lapho, bekufanele wenze umsebenzi olula: hamba ubhale umdlalo, okuthi kumsingathi u-Y enze y. Ungangezi okuthile kokuthi "x", kodwa yibhale kusukela ekuqaleni. Ngisho neziguquguqukayo ezinamakhodi aqinile.

Kubonakala sengathi konke okusezigabeni ezingenhla kushiwo ngendlela efanele. Kodwa lokhu akulona icala lakho! Ngoba ufuna ukubhala ikhodi esebenziseka kabusha EYOMILE futhi efana nomtapo wolwazi, futhi udinga ukubheka indlela yokuthi ukwenze kanjani.

Kulapho elinye iphutha elibi elicashe khona. Iphutha eliphendule amaphrojekthi amaningi ukuthi abhalwe ngokubekezeleleka (kungaba ngcono, kodwa yonke into iyasebenza futhi kulula ukuyiqeda) yaba yinto esabekayo ngisho nomlobi angakwazi ukuyithola. Kuyasebenza, kodwa uNkulunkulu akwenqabele ukuthi uguqule noma yini.

Iphutha lithi: indima umsebenzi welabhulali. Lesi sifaniso sonakalise iziqalo eziningi ezinhle kangangokuthi kuyadabukisa nje ukukubuka. Iqhaza akuwona umsebenzi welabhulali. Akakwazi ukwenza izibalo futhi akakwazi ukwenza izinqumo ezisezingeni lokudlala. Ngikhumbuze ukuthi yiziphi izinqumo ezenziwa ngumdlalo?

Siyabonga, uqinisile. I-Play yenza isinqumo (ngokunembe kakhulu, iqukethe ulwazi) mayelana nokuthi yimiphi imisebenzi nezindima okumele zenze kubaphi ababungazi.

Uma unikezela lesi sinqumo endimeni, futhi nangezibalo, uzilahla wena (kanye nalowo ozozama ukuncozulula ikhodi yakho) empilweni edabukisayo. Indima ayinqumi ukuthi yenziwa kuphi. Lesi sinqumo senziwa ngokudlala. Indima yenza lokho ekutshelwayo, lapho okutshelwa khona.

Kungani kuyingozi ukuhlela ku-Ansible futhi kungani i-COBOL ingcono kune-Ansible sizokhuluma esahlukweni mayelana neziguquguqukayo namajinja. Okwamanje, ake sisho into eyodwa - ukubala kwakho ngakunye kushiya umkhondo ongenakucimeka wezinguquko eziguquguqukayo zomhlaba wonke, futhi akukho lutho ongakwenza ngakho. Lapho nje “imikhondo” emibili ihlangana, konke kwase kungasekho.

Inothi le-squeamish: indima ngokuqinisekile ingaba nomthelela ekugelezeni kokulawula. Yidla delegate_to futhi inokusetshenziswa okunengqondo. Yidla meta: end host/play. Kodwa! Uyakhumbula sifundisa izisekelo? Ukhohlwe mayelana delegate_to. Sikhuluma ngekhodi ye-Ansible elula futhi enhle kakhulu. Okufundeka kalula, ukubhaleka kalula, ukukulungisa kalula, ukuhlolela kalula futhi kulula ukukuqedela. Ngakho, futhi:

ukudlala kanye nokudlala kuphela okunquma ukuthi yimuphi usokhaya okwenziwayo.

Kulesi sigaba, sibhekane nokuphikisana phakathi kokudlala nendima. Manje ake sikhulume ngemisebenzi vs ubudlelwane bendima.

Imisebenzi Nezindima

Cabangela ukudlala:

- hosts: somegroup
  pre_tasks:
    - some_tasks1:
  roles:
     - role1
     - role2
  post_tasks:
     - some_task2:
     - some_task3:

Ake sithi udinga ukwenza i-foo. Futhi kubukeka sengathi foo: name=foobar state=present. Kufanele ngikubhale kuphi lokhu? ngaphambili? okuthunyelwe? Dala indima?

...Yashonaphi imisebenzi?

Siqala ngezinto eziyisisekelo futhi - idivayisi yokudlala. Uma untanta kulolu daba, awukwazi ukusebenzisa ukudlala njengesisekelo sakho konke okunye, futhi umphumela wakho uzoba "nokunyakaziswa".

Dlala idivayisi: isiqondiso sosokhaya, izilungiselelo zemidlalo ngokwayo kanye nemisebenzi yangaphambilini, imisebenzi, izindima, izigaba zokuthunyelwe_kwemisebenzi. Imingcele esele yokudlala ayibalulekile kithi manje.

Ukuhleleka kwezigaba zabo ezinemisebenzi nezindima: pre_tasks, roles, tasks, post_tasks. Njengoba ngokwezibalo uhlelo lokubulawa luphakathi tasks и roles akucaci, khona-ke izinqubo ezingcono kakhulu zithi sengeza isigaba tasks, kuphela uma kungenjalo roles... Uma ekhona roles, bese yonke imisebenzi enamathiselwe ibekwa ngezigaba pre_tasks/post_tasks.

Okusele nje ukuthi konke kucacile ngokwemisho: okokuqala pre_tasks, Khona-ke roles, Khona-ke post_tasks.

Kodwa namanje asikawuphenduli umbuzo: luphi ucingo lwemojuli? foo bhala? Ingabe sidinga ukubhala indima yonke yemojuli ngayinye? Noma ingabe kungcono ukuba nendima ewugqinsi yayo yonke into? Futhi uma kungeyona indima, kufanele ngibhale kuphi - ngaphambi noma ngeposi?

Uma ingekho impendulo enengqondo yale mibuzo, khona-ke lokhu kuwuphawu lokuntula intuition, okungukuthi, lezo “zisekelo ezinyakazayo” ezifanayo. Ake sikuthole. Okokuqala, umbuzo wokuphepha: Uma umdlalo unawo pre_tasks и post_tasks (futhi ayikho imisebenzi noma izindima), khona-ke kukhona okungaphuka uma ngenza umsebenzi wokuqala kusuka post_tasks Ngizoyihambisa kuze kube sekupheleni pre_tasks?

Yiqiniso, amagama ombuzo abonisa ukuthi kuzophulwa. Kodwa kuthiwani ngempela?

... Abaphathi. Ukufunda izinto eziyisisekelo kuveza iqiniso elibalulekile: zonke izibambi zishaywa ngokuzenzakalelayo ngemva kwesigaba ngasinye. Labo. yonke imisebenzi evela pre_tasks, bese bonke ababambi abazisiwe. Bese kufezwa zonke izindima kanye nabo bonke ababambi abakwaziswa ezindimeni. Ngemva post_tasks nabaphathi bawo.

Ngakho, uma uhudula umsebenzi kusuka post_tasks в pre_tasks, khona-ke ngokunamandla uzowusebenzisa ngaphambi kokuthi isibambi sisetshenziswe. isibonelo, uma ku pre_tasks iseva yewebhu ifakiwe futhi yamiswa, futhi post_tasks okuthile kuthunyelwa kuyo, bese udlulisela lo msebenzi esigabeni pre_tasks kuzoholela eqinisweni lokuthi ngesikhathi "sokuthumela" iseva ngeke isasebenza futhi konke kuzophuka.

Manje ake sicabange futhi, kungani sidinga pre_tasks и post_tasks? Isibonelo, ukuze uqedele konke okudingekayo (okuhlanganisa nabaphathi) ngaphambi kokufeza indima. A post_tasks izosivumela ukuthi sisebenze ngemiphumela yokwenza izindima (kuhlanganise nabaphathi).

Uchwepheshe ohlakaniphile ohlakaniphile uzositshela ukuthi kuyini. meta: flush_handlers, kodwa kungani sidinga ama-flush_handlers uma singathembela ekuhlelweni kokwenziwa kwezigaba ezidlalwayo? Ngaphezu kwalokho, ukusetshenziswa kwe-meta: flush_handlers kungasinika izinto ezingalindelekile ngezibambi eziyimpinda, kusinike izexwayiso eziyinqaba uma zisetshenziswa. when у block njll. Uma wazi kangcono okunengqondo, ama-nuances amaningi ongawaqamba ukuze uthole isixazululo "esikhohlisayo". Futhi isixazululo esilula - ukusebenzisa ukuhlukaniswa kwemvelo phakathi kwangaphambi/indima/okuthunyelwe - akubangeli ama-nuances.

Futhi, emuva 'ku-foo' yethu. Kufanele ngiyibeke kuphi? Ngaphambili, okuthunyelwe noma izindima? Ngokusobala, lokhu kuncike ekutheni siyayidinga yini imiphumela yesibambi ye-foo. Uma zingekho, khona-ke i-foo ayidingi ukubekwa ngaphambi noma kokuthunyelwe - lezi zigaba zinencazelo ekhethekile - ukwenza imisebenzi ngaphambi nangemuva kwendikimba eyinhloko yekhodi.

Manje impendulo yombuzo othi "indima noma umsebenzi" yehlela kulokho osekudlalwa - uma kukhona imisebenzi lapho, udinga ukuyengeza emisebenzini. Uma kunezindima, udinga ukwakha indima (ngisho nomsebenzi owodwa). Ake ngikukhumbuze ukuthi imisebenzi nezindima azisetshenziswa ngesikhathi esisodwa.

Ukuqonda izinto eziyisisekelo ze-Ansible kunikeza izimpendulo ezizwakalayo emibuzweni ebonakala iwukunambitheka.

Imisebenzi nezindima (ingxenye yesibili)

Manje ake sixoxe ngesimo lapho usaqala ukubhala incwadi yokudlala. Udinga ukwenza i-foo, ibha kanye ne-baz. Ingabe le misebenzi emithathu, indima eyodwa noma izindima ezintathu? Ukufingqa lo mbuzo: kufanele uqale nini ukubhala izindima? Iyini inhloso yokubhala izindima uma ukwazi ukubhala imisebenzi?... Iyini indima?

Elinye lamaphutha amakhulu (sengike ngakhuluma ngalokhu) ukucabanga ukuthi indima ifana nomsebenzi kumtapo wolwazi wohlelo. Ibukeka kanjani incazelo yomsebenzi ojwayelekile? Yamukela ama-agumenti okokufaka, isebenzisana nezimbangela ezingaseceleni, yenza imiphumela engemihle, futhi ibuyisela inani.

Manje, ukunaka. Yini engenziwa kulokhu endimeni? Wamukelekile njalo ukubiza imiphumela emibi, lokhu kungumongo we-Ansible yonke - ukudala imiphumela emibi. Ingabe unezinkinga? Okokuqala. Kodwa ngokuthi "dlulisa inani bese ulibuyisela" - yilapho kungasebenzi khona. Okokuqala, awukwazi ukudlulisa inani endimeni. Ungasetha okuguquguqukayo komhlaba wonke ngosayizi wempilo yonke yokudlala esigabeni sama-vars endimeni. Ungasetha okuguquguqukayo komhlaba wonke ngokudlala impilo yonke ngaphakathi kwendima. Noma ngisho nempilo yonke yezincwadi zokudlala (set_fact/register). Kodwa awukwazi ukuba "nokuguquguquka kwendawo". Awukwazi "ukuthatha inani" futhi "ulibuyisele".

Into esemqoka ilandela kulokhu: awukwazi ukubhala okuthile ku-Ansible ngaphandle kokubangela imiphumela emibi. Ukushintsha okuguquguqukayo komhlaba kuhlale kuwumphumela ongaseceleni womsebenzi. Ku-Rust, isibonelo, ukushintsha i-global variable unsafe. Futhi ku-Ansible iyona ndlela kuphela yokuthonya amanani endima. Qaphela amagama asetshenzisiwe: hhayi "ukudlulisa inani endimeni", kodwa "shintsha amanani asetshenziswa indima". Akukho ukwehlukana phakathi kwezindima. Akukho ukwehlukana phakathi kwemisebenzi nezindima.

Inani: indima ayiwona umsebenzi.

Yini enhle ngendima? Okokuqala, indima inamanani azenzakalelayo (/default/main.yaml), okwesibili, indima inezinkomba ezengeziwe zokugcina amafayela.

Yiziphi izinzuzo zamanani azenzakalelayo? Ngoba kuphiramidi kaMaslow, ithebula le-Ansible elihlanekezelwe lezinto eziza kuqala eziguquguqukayo, okuzenzakalelayo kwendima kungukuhamba phambili okuphansi kakhulu (kususe amapharamitha womugqa womyalo ongenakulinganiswa). Lokhu kusho ukuthi uma udinga ukuhlinzeka ngamavelu azenzakalelayo futhi ungakhathazeki mayelana nawo eqa amanani asuka ku-inventory noma okuguquguqukayo kweqembu, khona-ke okuzenzakalelayo kwendima ukuphela kwendawo ekufanele. (Ngiqamba amanga kancane - kukhona okuningi |d(your_default_here), kodwa uma sikhuluma ngezindawo ezimile, lokho kusho ukuthi kukhona okuzenzakalelayo kuphela).

Yini enye enhle ngezindima? Ngoba banamakhathalogi abo. Lezi yizinhla zemibhalo zokuguquguquka, kokubili okungaguquki (okungukuthi kubalwe indima) kanye ne-dynamic (kungaba iphethini noma iphethini emelene - include_vars kanye {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Lezi yizinkomba ze files/, templates/. Futhi, ikuvumela ukuthi ube namamojula akho nama-plugin (library/). Kodwa, uma kuqhathaniswa nemisebenzi esebhukwini lokudlala (elingase libe nakho konke lokhu), okuwukuphela kwenzuzo lapha ukuthi amafayela awalahlwa enqwabeni eyodwa, kodwa izinqwaba eziningana ezihlukene.

Omunye umniningwane: ungazama ukudala izindima ezizotholakala ukuze ziphinde zisetshenziswe (usebenzisa umthala). Ngokufika kwamaqoqo, ukwabiwa kwendima kungabhekwa njengokucishe kwalibaleka.

Ngakho, izindima zinezici ezimbili ezibalulekile: zinokuzenzakalelayo (isici esiyingqayizivele) futhi zikuvumela ukuthi uhlele ikhodi yakho.

Ukubuyela embuzweni wokuqala: kwenziwa nini imisebenzi futhi kwenziwa nini izindima? Imisebenzi etholakala ebhukwini lokudlala ivamise ukusetshenziswa “njengokunamathisela” izindima zangaphambi/ngemuva, noma njengengxenye yokwakha ezimele (ngakho-ke akumele kube nezindima kukhodi). Inqwaba yemisebenzi evamile exutshwe nezindima kuwubudlabha obungacacile. Kufanele uhambisane nesitayela esithile - kungaba umsebenzi noma indima. Izindima zihlinzeka ngokuhlukaniswa kwezinhlangano nokuzenzakalelayo, imisebenzi ikuvumela ukuthi ufunde ikhodi ngokushesha. Ngokuvamile, ikhodi “emile” (ebalulekile futhi eyinkimbinkimbi) ifakwa ezindimeni, futhi imibhalo eyinsiza ibhalwa ngesitayela somsebenzi.

Kungenzeka ukwenza i-import_role njengomsebenzi, kodwa uma ubhala lokhu, bese ulungele ukuchaza umuzwa wakho wobuhle ukuthi kungani ufuna ukwenza lokhu.

Umfundi ohlakaniphile angase athi izindima zingangenisa izindima, izindima zingaba nokuncika nge-galaxy.yml, futhi kukhona okubi nokubi. include_role - Ngikukhumbuza ukuthi sithuthukisa amakhono ku-Basic Ansible, hhayi kuma-gymnastics esibalo.

Izibambi kanye nemisebenzi

Ake sixoxe ngenye into esobala: abaphathi. Ukwazi ukuthi zisetshenziswa kanjani ngendlela efanele cishe kuwubuciko. Uyini umehluko phakathi kwesibambi nokuhudula?

Njengoba sikhumbula okuyisisekelo, nasi isibonelo:

- hosts: group1
  tasks:
    - foo:
      notify: handler1
  handlers:
     - name: handler1
       bar:

Abaphathi bendima batholakala ku-rolename/handler/main.yaml. Izibambi ziyaxoxisana phakathi kwabo bonke ababambiqhaza bomdlalo: pre/post_tasks ingadonsa ababambe iqhaza, futhi indima ingadonsa izibambi emdlalweni. Kodwa-ke, izingcingo "ze-cross-role" eziya kubaphathi zibangela i-wtf eningi kunokuphinda isibambi esingasho lutho. (Enye ingxenye yemikhuba emihle ukuzama ukungaphindi amagama esibambi).

Umehluko omkhulu ukuthi umsebenzi uhlala wenziwa (ngokungaqondile) (plus/minus tags and when), kanye nomphathi - ngokushintsha kwesimo (yazisa imililo kuphela uma ishintshiwe). Kusho ukuthini lokhu? Isibonelo, iqiniso lokuthi uma uqala kabusha, uma kungekho okushintshiwe, ngeke kube khona isibambi. Kungani kungase kudingeke sikhiphe isibambi lapho lungekho ushintsho emsebenzini wokukhiqiza? Isibonelo, ngenxa yokuthi kukhona okuphukile futhi kwashintsha, kodwa ukubulawa akuzange kufinyelele kumphathi. Isibonelo, ngenxa yokuthi inethiwekhi ibiphansi okwesikhashana. Ukulungiselelwa kushintshile, isevisi ayikaqalwa kabusha. Ngokuzayo lapho uyiqala, ukucushwa akusashintshi, futhi isevisi ihlala nenguqulo yakudala yokulungiselelwa.

Isimo esinokulungiselelwa asikwazi ukuxazululwa (ngokunembile, ungazisungulela iphrothokholi ekhethekile yokuqalisa kabusha ngamafulegi wefayela, njll., kodwa lokhu akusasebenzi 'okuyisisekelo' nganoma yiluphi uhlobo). Kodwa kunenye indaba evamile: sifake uhlelo, saluqopha .service-file, futhi manje siyayifuna daemon_reload и state=started. Futhi indawo yemvelo yalokhu ibonakala isibambi. Kodwa uma ungenzi isibambi kodwa umsebenzi ekupheleni kohlu lomsebenzi noma indima, khona-ke izokwenziwa ngokungafanele ngaso sonke isikhathi. Ngisho noma incwadi yokudlala yaphuka phakathi. Lokhu akuyixazululi nhlobo inkinga eqaliswe kabusha (awukwazi ukwenza umsebenzi ngesibaluli esiqalwe kabusha, ngoba ukungabi namandla kulahlekile), kodwa kufanelekile ukwenza isimo = siqalisiwe, ukuzinza okuphelele kwezincwadi zokudlala kuyanda, ngoba inombolo yokuxhumana kanye nesimo esiguqukayo siyancipha.

Enye into enhle yesibambi ukuthi ayivali okukhiphayo. Azikho izinguquko - akukho okweqiwe okwengeziwe noma kulungile kokuphumayo - ukufunda okulula. Futhi kuyimpahla engalungile - uma uthola iphutha emsebenzini owenziwe ngokulandelanayo ekugijimeni kokuqala, izibambi zizobulawa kuphela lapho zishintshiwe, i.e. ngaphansi kwezimo ezithile - kuyaqabukela. Ngokwesibonelo, ngokokuqala ngqá ekuphileni kwami ​​ngemva kweminyaka emihlanu. Futhi-ke, kuzoba ne-typo egameni futhi konke kuzophuka. Futhi uma ungawagijimisi okwesibili, akukho okushintshiwe.

Ngokuhlukana, sidinga ukukhuluma ngokutholakala kwezinto eziguquguqukayo. Isibonelo, uma wazisa umsebenzi ngeluphu, kuzoba yini eziguquguqukayo? Ungakwazi ukuqagela ngokuhlaziya, kodwa akuhlali kuncane, ikakhulukazi uma okuguquguqukayo kuvela ezindaweni ezahlukene.

... Ngakho-ke izibambi azisebenziseki kangako futhi zinezinkinga kakhulu kunalokho ezibonakala zibonakala. Uma ukwazi ukubhala okuthile okuhle (ngaphandle kwama-frills) ngaphandle kwabaphathi, kungcono ukukwenza ngaphandle kwabo. Uma kungasebenzi kahle, kungcono ngabo.

Umfundi olimazayo uveza kahle ukuthi asixoxanga listenisibambi esingasishayela isaziso sesinye isibambi, ukuthi isibambi singafaka i-import_tasks (engakwazi ukuhlanganisa_indima nezinto_ezinezinto), ukuthi isistimu yesibambi kokuthi Ansible is Turing-complete, ukuthi izibambi ezivela ku- include_role ziyaphambana ngendlela enelukuluku nezibambi ezivela ekudlaleni, njll. .d. - konke lokhu ngokusobala akuzona "izisekelo").

Yize kune-WTF eyodwa ethize empeleni okuyisici okudingeka usikhumbule. Uma umsebenzi wakho wenziwa nge delegate_to futhi yazise, ​​bese isibambi esihambisanayo sibulawa ngaphandle delegate_to, i.e. kumsingathi lapho umdlalo wabelwe khona. (Nakuba umphathi, kunjalo, angaba nakho delegate_to Ngokufanayo).

Ngokwehlukana, ngifuna ukusho amagama ambalwa mayelana nezindima ezingasetshenziswa kabusha. Ngaphambi kokuvela kwamaqoqo, bekunombono wokuthi ungenza izindima zomhlaba wonke ezingaba ansible-galaxy install wahamba. Isebenza kuwo wonke ama-OS azo zonke izinhlobo kuzo zonke izimo. Ngakho, umbono wami: akusebenzi. Noma iyiphi indima enenqwaba include_vars, esekela amacala ayi-100500, igwetshwe kwalasha wezimbungulu zamacala. Angambozwa ngokuhlolwa okukhulu, kodwa njengakunoma yikuphi ukuhlola, kungenzeka ukuthi unomkhiqizo we-Cartesian wamanani okokufaka kanye nomsebenzi ophelele, noma "unezimo zomuntu ngamunye ezimboziwe." Umbono wami ukuthi kungcono kakhulu uma indima iqondile (i-cyclomatic complexity 1).

Ama-if ambalwa (okucacile noma okumemezelayo - ngendlela when noma ifomu include_vars ngesethi yezinto eziguquguqukayo), iba ngcono indima. Ngezinye izikhathi kufanele wenze amagatsha, kodwa, ngiyaphinda, ambalwa akhona, angcono. Ngakho-ke kubonakala sengathi indima enhle nge-galaxy (isebenza!) enenqwaba when kungase kuthandeke kancane kunendima "yomuntu" emisebenzini emihlanu. Isikhathi lapho indima nge-galaxy ingcono lapho uqala ukubhala okuthile. Umzuzu lapho kuba kubi kakhulu yilapho kuphuka khona futhi usola ukuthi kungenxa "yendima yomthala". Uyayivula, futhi kukhona okufakiwe okuhlanu, amaphepha omsebenzi ayisishiyagalombili kanye nesitaki when'ov... Futhi sidinga ukuqonda lokhu. Esikhundleni semisebenzi emi-5, uhlu lomugqa lapho kungekho lutho oluzophulwa.

Ezingxenyeni ezilandelayo

  • Okuncane mayelana ne-inventory, okuguquguqukayo kweqembu, i-host_group_vars plugin, ama-hostvars. Indlela yokubopha ifindo likaGordian nge-spaghetti. Okuguquguqukayo kobubanzi nokwandulelayo, Imodeli yememori enengqondo. "Manje siligcina kuphi igama lomsebenzisi lesizindalwazi?"
  • jinja: {{ jinja }} - i-nosql nosense i-plasticine ethambile yekhala. Itholakala yonke indawo, ngisho nalapho ungalindele. Kancane mayelana !!unsafe kanye neyaml emnandi.

Source: www.habr.com

Engeza amazwana