Izinto ezisisiseko ezifanelekileyo, ngaphandle kokuba iincwadi zakho zokudlala ziya kuba sisigaqa sepasta encangathi

Ndenza uphononongo oluninzi lwekhowudi yabanye abantu kwaye ndibhale kakhulu ngokwam. Ngethuba lokuhlalutya iimpazamo (zombini zabanye abantu kunye nezam), kunye nenani lodliwano-ndlebe, ndaqonda impazamo enkulu eyenziwa ngabasebenzisi be-Ansible - bangena kwizinto eziyinkimbinkimbi ngaphandle kokuqonda izinto ezisisiseko.

Ukulungisa oku kungabikho kokusesikweni kwindalo yonke, ndagqiba ekubeni ndibhale isingeniso kwi-Ansible kwabo sele beyazi. Ndiyakulumkisa, oku ayikokubalisa kwakhona ngendoda, le yinto ende efundwayo enobumba oluninzi kwaye akukho mifanekiso.

Inqanaba elilindelekileyo lomfundi kukuba amawaka aliqela emigca yeyamla sele ibhaliwe, kukho into esele ikwimveliso, kodwa β€œngandlel’ ithile yonke into igoso.”

Amagama

Eyona mpazamo iphambili eyenziwa ngumsebenzisi we-Ansible kukungazi ukuba into ibizwa ntoni. Ukuba awuwazi amagama, awukwazi ukuqonda ukuba amaxwebhu athini. Umzekelo ophilayo: ngexesha lodliwano-ndlebe, umntu obonakala ngathi ubhale kakhulu kwi-Ansible akakwazanga ukuphendula umbuzo othi "zeziphi izinto eziqulathwe yincwadi yokudlala?" Kwaye xa ndacebisa ukuba "impendulo yayilindelwe ukuba incwadi yokudlala ibe ngumdlalo," igqabaza elibi elithi "asiyisebenzisi loo nto" lalandela. Abantu babhala I-Ansible for imali kwaye musa ukusebenzisa ukudlala. Bayisebenzisa ngokwenene, kodwa abazi ukuba yintoni na.

Ngoko masiqale ngento elula: ibizwa ngokuba yintoni. Mhlawumbi uyazi oku, okanye mhlawumbi awukwazi, kuba awuzange unikele ingqalelo xa ufunda amaxwebhu.

i-ansible-playbook yenza incwadi yokudlala. Incwadi yokudlala yifayile enolwandiso lwe-yml/yaml, ngaphakathi apho kukho into enje:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Sele sibonile ukuba yonke le fayile yincwadi yokudlala. Singabonisa apho iindima ziphi kwaye iphi imisebenzi. Kodwa uphi umdlalo? Kwaye yintoni umahluko phakathi komdlalo kunye nendima okanye incwadi yokudlala?

Konke kumaxwebhu. Kwaye bayayiphosa. Abaqalayo - kuba kuninzi kakhulu kwaye awuyi kukhumbula yonke into ngaxeshanye. Amava - kuba "izinto ezingenamsebenzi". Ukuba unamava, phinda uwafunde la maphepha kanye kanye kwiinyanga ezintandathu, kwaye ikhowudi yakho iya kuba yiklasi ekhokelayo.

Ke, khumbula: I-Playbook luluhlu olubandakanya umdlalo kunye import_playbook.
Lo ngumdlalo omnye:

- hosts: group1
  roles:
    - role1

kwaye lo ngomnye umdlalo:

- hosts: group2,group3
  tasks:
    - debug:

Yintoni umdlalo? Kutheni?

Ukudlala yeyona nto iphambili yencwadi yokudlala, kuba umdlalo kunye nokudlala kuphela kunxulumanisa uluhlu lweendima kunye/okanye imisebenzi enoluhlu lweenginginya ekufuneka zenziwe. Ebunzulu boxwebhu unokufumana ukukhankanywa delegate_to, iiplagi zokujongwa kwendawo, useto lwe-network-cli-specific, jump host host, njl. Bakuvumela ukuba utshintshe kancinci indawo apho imisebenzi yenziwa khona. Kodwa, yilibale ngayo. Nganye kwezi ndlela zikrelekrele zinosetyenziso olukhethekileyo, kwaye ngokuqinisekileyo azikho jikelele. Kwaye sithetha ngezinto ezisisiseko ekufuneka wonke umntu azazi kwaye azisebenzise.

Ukuba ufuna ukwenza "into" "endaweni ethile", ubhala umdlalo. Hayi indima. Ayiyondima yeemodyuli kunye nabathunywa. Uyawuthatha ubhale umdlalo. Kuyo, kumhlaba wenginginya udwelisa apho uphumeza, kwaye kwiindima/imisebenzi - omawuphumeze.

Kulula, akunjalo? Bekunokuba njalo njani?

Elinye lamaxesha apho abantu banomnqweno wokwenza oku hayi ngokudlala β€œyindima emisela yonke into.” Ndingathanda ukuba nendima eqwalasela zombini iiseva zodidi lokuqala kunye neeseva zodidi lwesibini.

Umzekelo we-archetypal kukubeka iliso. Ndingathanda ukuba nendima yokubeka iliso eya kuqwalasela ukubeka iliso. Indima yokubeka iliso inikwe ababuki zindwendwe (ngokomdlalo). Kodwa kuye kwavela ukuba ukubeka esweni kufuneka sihambise iipakethe kubabuki zindwendwe esibajongileyo. Kutheni ungasebenzisi abathunywa? Kufuneka kwakhona uqwalasele iiptables. umthunywa? Kananjalo kufuneka ubhale/ulungise uqwalaselo lwe-DBMS ukwenza ukubekwa esweni. umthunywa! Kwaye ukuba ubuchule bunqongophele, ngoko unokwenza abathunywa include_role kwiluphu enendlwane usebenzisa isihluzo esinenkohliso kuluhlu lwamaqela, nangaphakathi include_role ungenza ngakumbi delegate_to kwakhona. Kwaye siyahamba...

Umnqweno olungileyo - ukuba nendima enye yokubeka iliso, "eyenza yonke into" - isikhokelela kwisihogo esipheleleyo apho amaxesha amaninzi kukho indlela enye yokuphuma: ukubhala yonke into ukusuka ekuqaleni.

Yenzeke phi impazamo apha? Umzuzu oye wafumanisa ukuba ukwenza umsebenzi "x" kumamkeli u-X kufuneka uye kumamkeli u-Y kwaye wenze "y" apho, kufuneka wenze umthambo olula: hamba uye kubhala umdlalo, othi kumamkeli uY enze y. Musa ukongeza into ku "x", kodwa yibhale ukusuka ekuqaleni. Nokuba kunezinto eziguquguqukayo ezinekhowudi.

Kubonakala ngathi yonke into ekwimihlathi engentla ithethwa ngokuchanekileyo. Kodwa oku akusiyo imeko yakho! Kuba ufuna ukubhala ikhowudi enokusetyenziswa kwakhona ethi DRY kunye nethala leencwadi, kwaye kufuneka ujonge indlela yokwenza.

Kulapho enye impazamo enkulu ifihlakele khona. Impazamo eguqule iiprojekthi ezininzi ekubeni zibhalwe ngokunyamezelayo (kunokuba ngcono, kodwa yonke into iyasebenza kwaye kulula ukuyigqiba) ibe yinto eyoyikisayo kangangokuba nombhali akanakuyiqonda. Iyasebenza, kodwa uThixo akakuvumeli ukuba utshintshe nantoni na.

Impazamo yile: indima ngumsebenzi wethala leencwadi. Lo mzekeliso wonakalise iziqalo ezininzi ezintle kangangokuba kubuhlungu nje ukubukela. Indima ayingomsebenzi wethala leencwadi. Akakwazi ukwenza izibalo kwaye akakwazi ukwenza izigqibo kwinqanaba lokudlala. Ndikhumbuze ukuba zeziphi izigqibo ezenziwa ngumdlalo?

Enkosi, unyanisile. Umdlalo uthatha isigqibo (ngokuchanekileyo, unolwazi) malunga nokuba yeyiphi imisebenzi kunye neendima ekufuneka zenziwe kweyiphi iindwendwe.

Ukuba unikezela esi sigqibo kwindima, kwaye nokubala, uzitshabalalisa (kunye nalowo uya kuzama ukwahlula ikhowudi yakho) kubomi obulusizi. Indima ayikhethi apho iqhutyelwa khona. Esi sigqibo senziwa ngumdlalo. Indima yenza le nto ixelelwayo, apho ixelwa khona.

Kutheni kuyingozi kwiprogram kwi-Ansible kwaye kutheni i-COBOL ingcono kune-Ansible siya kuthetha kwisahluko malunga neenguqu kunye nejinja. Okwangoku, masithethe into enye-isibalo sakho ngasinye sishiya ngasemva umkhondo ongacimekiyo wotshintsho kwizinto eziguquguqukayo zehlabathi, kwaye akukho nto unokuyenza ngayo. Ngokukhawuleza nje ukuba "imizila" emibini idibane, yonke into yayiphelile.

Qaphela kwi-squeamish: indima ngokuqinisekileyo inokuchaphazela ukuhamba kokulawula. Yitya delegate_to kwaye inosetyenziso olufanelekileyo. Yitya meta: end host/play. Kodwa! Khumbula ukuba sifundisa iziseko? Ulibele malunga delegate_to. Sithetha ngeyona khowudi ilula kwaye intle kakhulu eAnsible. Efundeka lula, kulula ukuyibhala, kulula ukuyilungisa, kulula ukuyivavanya kwaye kulula ukuyigqiba. Ngoko, kwakhona:

Ukudlala kunye nomdlalo kuphela othatha isigqibo malunga nokuba yeyiphi inginginya into eyenziwayo.

Kweli candelo, sijongane nenkcaso phakathi komdlalo kunye nendima. Ngoku makhe sithethe ngemisebenzi vs ubudlelwane bendima.

Imisebenzi kunye neendima

Cinga ngomdlalo:

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

Masithi kufuneka wenze foo. Kwaye kubonakala ngathi foo: name=foobar state=present. Ndiyibhale phi lento? ngaphambili? iposti? Yenza indima?

...Yaye yaya phi imisebenzi?

Siqala ngeziseko kwakhona - isixhobo sokudlala. Ukuba uyadada kulo mbandela, awukwazi ukusebenzisa umdlalo njengesiseko sayo yonke enye into, kwaye umphumo wakho uya kuba "ungcangcazela".

Isixhobo sokudlala: ulwalathiso lweenginginya, useto lokudlala ngokwalo kunye ne-pre_tasks, imisebenzi, iindima, amacandelo e-post_tasks. Iiparamitha eziseleyo zokudlala azibalulekanga kuthi ngoku.

Ulandelelwano lwamacandelo abo kunye nemisebenzi kunye neendima: pre_tasks, roles, tasks, post_tasks. Ekubeni ngokwesemantiki umyalelo wophumezo uphakathi tasks ΠΈ roles ayicacanga, ke ezona zenzo zingcono zithi songeza icandelo tasks, kuphela ukuba akunjalo roles. Ukuba kukho roles, emva koko yonke imisebenzi eqhotyoshelweyo ibekwe kumacandelo pre_tasks/post_tasks.

Into eseleyo kukuba yonke into icacile ngokwentsingiselo: okokuqala pre_tasksngoko rolesngoko post_tasks.

Kodwa asikawuphenduli umbuzo: uphi umnxeba wemodyuli? foo bhala? Ngaba kufuneka sibhale indima epheleleyo kwimodyuli nganye? Okanye ngaba kungcono ukuba nendima enkulu kuyo yonke into? Kwaye ukuba ayisiyiyo indima, kufuneka ndibhale phi - ngaphambili okanye ngeposi?

Ukuba akukho mpendulo iqiqayo kule mibuzo, ke olu luphawu lokunqongophala kwe-intuition, oko kukuthi, "iziseko ezigungqisayo" ezifanayo. Masiyiqonde. Okokuqala, umbuzo wokhuseleko: Ukuba umdlalo unawo pre_tasks ΠΈ post_tasks (kwaye akukho misebenzi okanye iindima), ngoko into inokuqhawuka ukuba ndenza umsebenzi wokuqala ukusuka post_tasks Ndizakuyihambisa ekugqibeleni pre_tasks?

Kakade ke, amagama ombuzo abonisa ukuba kuya kwaphuka. Kodwa yintoni kanye kanye?

... Abaphangi. Ukufunda izinto ezisisiseko kutyhila inyani ebalulekileyo: bonke abaphathi bagungxulwa ngokuzenzekelayo emva kwecandelo ngalinye. Ezo. yonke imisebenzi ukusuka pre_tasks, emva koko bonke abaphathi abaye bazisiwe. Emva koko zonke iindima kunye nabo bonke abaphathi abaye bazisiwe kwiindima baye baphunyezwa. Emva koko post_tasks kunye nabaphathi babo.

Ke, ukuba utsala umsebenzi ukusuka post_tasks Π² pre_tasks, ngoko ngokunokubakho uzakuyiphumeza phambi kokuba umphathi aphunyezwe. umzekelo, ukuba ku pre_tasks umncedisi wewebhu ufakiwe kwaye uqwalaselwe, kwaye post_tasks into ithunyelwa kuyo, emva koko udlulisele lo msebenzi kwicandelo pre_tasks iya kukhokelela kwinto yokuba ngexesha "lokuthumela" iseva ayisayi kusebenza kwaye yonke into iya kuphuka.

Ngoku makhe sicinge kwakhona, kutheni sifuna pre_tasks ΠΈ post_tasks? Umzekelo, ukuze kugqitywe yonke into efunekayo (kubandakanywa nabaphangi) phambi kokuphumeza indima. A post_tasks iya kusivumela ukuba sisebenze kunye neziphumo zokwenza iindima (kubandakanywa abaphathi).

Ingcali enengqondo enengqondo iya kusixelela ukuba yintoni na. meta: flush_handlers, kodwa kutheni sifuna i-flush_handlers ukuba sinokuthembela kumyalelo wokuphunyezwa kwamacandelo ekudlalweni? Ngaphezu koko, ukusetyenziswa kwe-meta: flush_handlers inokusinika izinto esingazilindelanga ngabaphathi abaphindwe kabini, isinika izilumkiso ezingaqhelekanga xa zisetyenziswa. when Ρƒ block njl. Okukhona uyazi i-ansible, kokukhona iinuances ezininzi onokuthiwa ngazo kwisisombululo "esikhohlisayo". Kwaye isisombululo esilula - usebenzisa ulwahlulo lwendalo phakathi kwangaphambi / iindima / isithuba - akubangeli ama-nuances.

Kwaye, sibuyele 'kwi-foo' yethu. Ndiyibeke phi? Ngaphambili, kwisithuba okanye kwiindima? Ngokucacileyo, oku kuxhomekeke ekubeni sifuna iziphumo zomphathi we-foo. Ukuba azikho, ngoko ke i-foo ayifuni kubekwa ngaphambili okanye kwisithuba - la macandelo anentsingiselo ekhethekileyo - ukwenza imisebenzi ngaphambi nasemva kwebhodi ephambili yekhowudi.

Ngoku impendulo yombuzo othi "indima okanye umsebenzi" yehla kwinto esele idlalwa - ukuba kukho imisebenzi, ngoko kufuneka udibanise kwimisebenzi. Ukuba kukho iindima, kufuneka udale indima (kwanakumsebenzi omnye). Makhe ndikukhumbuze ukuba imisebenzi kunye neendima azisetyenziswa ngaxeshanye.

Ukuqonda izinto ezisisiseko ze-Ansible kunika iimpendulo ezifanelekileyo kwimibuzo ebonakala ngathi inomdla.

Imisebenzi kunye neendima (icandelo lesibini)

Ngoku makhe sixoxe ngale meko xa usaqala ukubhala incwadi yokudlala. Kufuneka wenze i-foo, ibha kunye ne-baz. Ngaba le misebenzi mithathu, indima enye okanye iindima ezintathu? Ukushwankathela umbuzo: kufuneka uqale nini ukubhala iindima? Yintoni injongo yokubhala iindima xa ukwazi ukubhala imisebenzi?... Yintoni indima?

Enye yeempazamo ezinkulu (esele ndithethile ngale nto) kukucinga ukuba indima ifana nomsebenzi kwilayibrari yenkqubo. Ijongeka njani inkcazo yomsebenzi wegeneric? Yamkela iingxoxo zegalelo, isebenzisana nezizathu ezisecaleni, yenza iziphumo ebezingalindelekanga, kwaye ibuyisela ixabiso.

Ngoku, ingqalelo. Yintoni enokwenziwa kule ndima? Uhlala wamkelekile ukuba ubize iziphumo ebezingalindelekanga, oku kusisiseko se-Ansible yonke - ukwenza iziphumo ebezingalindelekanga. Ngaba kukho oonobangela? Abokuqala. Kodwa "ngokudlula ixabiso kwaye ulibuyisele" - kulapho kungasebenzi khona. Okokuqala, awukwazi ukudlulisa ixabiso kwindima. Unokuseta uguquko lwehlabathi kunye nobukhulu bomdlalo wobomi bonke kwicandelo le-vars yendima. Unokuseta ukuguquguquka kwehlabathi kunye nobomi obudlalwayo ngaphakathi kwendima. Okanye kunye nobomi beencwadi zokudlala (set_fact/register). Kodwa awukwazi "ukuguquguquka kwendawo". Awukwazi "ukuthatha ixabiso" kwaye "libuyisele".

Into ephambili ilandelayo kule nto: awukwazi ukubhala into kwi-Ansible ngaphandle kokubangela imiphumo emibi. Ukutshintsha izinto eziguquguqukayo zehlabathi kuhlala kusisiphumo somsebenzi. Kwi-Rust, umzekelo, ukutshintsha i-global variable yi unsafe. Kwaye kwi-Ansible kuphela kwendlela yokuphembelela amaxabiso endima. Qaphela amagama asetyenzisiweyo: hayi "ukudlulisa ixabiso kwindima", kodwa "tshintsha amaxabiso asetyenziswa yindima". Akukho mahluko phakathi kweendima. Akukho mahluko phakathi kwemisebenzi kunye neendima.

Iyonke: indima ayingomsebenzi.

Yintoni elungileyo ngendima? Okokuqala, indima inamaxabiso angagqibekanga (/default/main.yaml), okwesibini, indima inezalathisi ezongezelelweyo zokugcina iifayile.

Ziziphi iingenelo zamaxabiso angagqibekanga? Kuba kwiphiramidi kaMaslow, itheyibhile ye-Ansible egqwethekileyo yezinto eziphambili eziguquguqukayo, ukungagqibeki kwendima yeyona nto iphantsi kakhulu (minus Ansible line line parameters). Oku kuthetha ukuba ukuba ufuna ukubonelela ngamaxabiso angagqibekanga kwaye ungakhathazeki malunga nawo ngaphezulu kwamaxabiso avela kwi-inventri okanye iqela eliguquguqukayo, ke indima engagqibekanga yindawo ekuphela kwayo ekulungeleyo. (Ndixoka kancinci - kukho ngaphezulu |d(your_default_here), kodwa ukuba sithetha ngeendawo ezimileyo, ke kuphela indima engagqibekanga).

Yintoni enye into ebalulekileyo ngeendima? Ngenxa yokuba baneekhathalogu zabo. Ezi ngabalawuli bezinto eziguquguqukayo, zombini eziguquguqukayo (o.k.t. zibalelwe indima) kwaye ziguquguqukayo (kukho mhlawumbi ipateni okanye i-anti-pattern - include_vars kunye {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Ezi zizikhokelo ze files/, templates/. Kwakhona, ikuvumela ukuba ube neemodyuli zakho kunye neeplagi (library/). Kodwa, xa kuthelekiswa nemisebenzi ekwincwadi yokudlala (enokuba nayo yonke le nto), inzuzo kuphela apha kukuba iifayile azilahlwa kwimfumba enye, kodwa iimfumba ezininzi ezahlukeneyo.

Enye inkcukacha: ungazama ukwenza iindima eziya kufumaneka ukuze zisetyenziswe kwakhona (ngomnyele). Ngokufika kweengqokelela, ukwabiwa kwendima kunokuqwalaselwa njengento ephantse yalityalwa.

Ngaloo ndlela, iindima zineempawu ezimbini ezibalulekileyo: zinezinto ezingagqibekanga (uphawu olulodwa) kwaye zikuvumela ukuba uhlele ikhowudi yakho.

Ukubuyela kumbuzo wokuqala: nini ukwenza imisebenzi kwaye nini ukwenza iindima? Imisebenzi kwincwadi yokudlala idla ngokusetyenziswa njenge "glue" ngaphambi / emva kweendima, okanye njengento yokwakha ezimeleyo (ngoko akufanele kubekho iindima kwikhowudi). Imfumba yemisebenzi eqhelekileyo exutywe neendima bubudenge obungacacanga. Kuya kufuneka ubambelele kwisimbo esithile - nokuba ngumsebenzi okanye indima. Iindima zibonelela ngokwahlukana kwamaziko kunye nokungagqibekanga, imisebenzi ikuvumela ukuba ufunde ikhowudi ngokukhawuleza. Ngokuqhelekileyo, ikhowudi "emileyo" (ebalulekileyo kunye neyinkimbinkimbi) ifakwe kwiindima, kwaye izikripthi ezincedisayo zibhalwa kwisitayela somsebenzi.

Kuyenzeka ukuba wenze i-import_role njengomsebenzi, kodwa ukuba ubhala oku, ke zilungiselele ukucacisela owakho umbono wobuhle ukuba kutheni ufuna ukwenza oku.

Umfundi okrelekrele unokuthi iindima zinokungenisa iindima, iindima zinokuxhomekeke kwi-galaxy.yml, kwaye kukwakho into embi neyoyikekayo. include_role - Ndiyakukhumbuza ukuba siphucula izakhono kwi-Basic Ansible, kwaye kungekhona kwi-gymnastics yomfanekiso.

Abaphangi kunye nemisebenzi

Makhe sixoxe ngenye into ecacileyo: abaphathi. Ukwazi indlela yokuzisebenzisa ngokuchanekileyo phantse bubugcisa. Uthini umahluko phakathi komphathi kunye nokutsala?

Kuba sikhumbula izinto ezisisiseko, nanku umzekelo:

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

Abaphathi bendima bakwi rolename/handler/main.yaml. Abaphathi bayaphithizela phakathi kwabo bonke abathathi-nxaxheba bomdlalo: imisebenzi yangaphambili/yasemva inokutsala ababambeli bendima, kwaye indima inokutsala abaphangi kumdlalo. Nangona kunjalo, iminxeba "yendima enqamlezileyo" eya kubaphathi ibangela i-wtf eninzi kunokuphinda isiphatho esingenamsebenzi. (Enye inkalo yeendlela ezilungileyo zokuzama ukungaphindi amagama omphathi).

Umahluko ophambili kukuba umsebenzi usoloko usenziwa (ngokungafanelekanga) (plus/minus tags and when), kunye nomphathi - ngokutshintsha kwelizwe (yazisa imililo kuphela xa itshintshiwe). Ithetha ntoni le nto? Ngokomzekelo, into yokuba xa uqala kwakhona, ukuba akuzange kubekho utshintsho, ngoko akuyi kubakho umphathi. Kutheni kunokuba yimfuneko ukuba siphumeze umphathi xa kungekho tshintsho kumsebenzi wokuvelisa? Ngokomzekelo, ngenxa yokuba into ethile yaphuka kwaye yatshintsha, kodwa ukubulawa akuzange kufike kumphathi. Umzekelo, ngenxa yokuba inethiwekhi yayiphantsi okwethutyana. Ubumbeko lutshintshile, inkonzo ayikaphinda iqalwe. Ngexesha elizayo xa uyiqala, i-config ayisatshintshi, kwaye inkonzo isala kunye noguqulelo oludala lwe-config.

Imeko enoqwalaselo ayinakusonjululwa (ngokuchanekileyo, unokuqamba iprotocol ekhethekileyo ngokwakho ngeeflegi zefayile, njl. Kodwa kukho elinye ibali eliqhelekileyo: sifake isicelo, sarekhoda .service-ifayile, kwaye ngoku siyayifuna daemon_reload ΠΈ state=started. Kwaye indawo yendalo yale nto ibonakala ingumphathi. Kodwa ukuba awuwenzi umlawuli kodwa umsebenzi ekupheleni koluhlu lomsebenzi okanye indima, ngoko iya kwenziwa ngokungafanelekanga ngalo lonke ixesha. Nokuba incwadi yokudlala yaphuka phakathi. Oku akusombululi ingxaki eqaliswe kwakhona (awukwazi ukwenza umsebenzi kunye neempawu eziqaliswe ngokutsha, kuba i-idempotency ilahlekile), kodwa ngokuqinisekileyo kuyafaneleka ukwenza i-state = iqalile, ukuzinza ngokubanzi kweencwadi zokudlala kuyanda, kuba inani loqhagamshelo kunye nemo eguqukayo iyancipha.

Enye ipropathi efanelekileyo yomphathi kukuba ayivali imveliso. Khange kubekho zinguqu-akukho nto igqithwayo okanye ilungile kwimveliso-ifundeka lula. Ikwayipropathi engalunganga - ukuba ufumana i-typo kumsebenzi owenziwe ngomgca kwintsebenzo yokuqala, ngoko ke abaphathi baya kuphunyezwa kuphela xa betshintshiwe, okt. phantsi kweemeko ezithile - kunqabile kakhulu. Ngokomzekelo, okwesihlandlo sokuqala ebomini bam emva kweminyaka emihlanu. Kwaye, ngokuqinisekileyo, kuya kubakho i-typo egameni kwaye yonke into iya kuphuka. Kwaye ukuba awuwagijimi okwesibini, akukho tshintsho.

Ngokwahlukileyo, kufuneka sithethe malunga nokufumaneka kwezinto eziguquguqukayo. Umzekelo, ukuba wazisa umsebenzi nge-loop, iya kuba yintoni kwi-variables? Unokuqikelela ngokuhlalutya, kodwa akusoloko kuncinci, ngakumbi ukuba iinguqu zivela kwiindawo ezahlukeneyo.

... Ngoko ke abaphathi abaluncedo kakhulu kwaye bayingxaki kakhulu kunokuba babonakala. Ukuba unako ukubhala into enhle (ngaphandle kweefrills) ngaphandle kwabaphathi, kungcono ukuyenza ngaphandle kwabo. Ukuba ayisebenzi kakuhle, kungcono kunye nabo.

Umfundi okrwada ngokufanelekileyo ubonisa ukuba asizange sixoxe listenukuba umgcini angafowunela isaziso somnye umbambi, ukuba umgcini angabandakanya import_tasks (enokuthi ibandakanye_indima nge_izinto), ukuba inkqubo yomphathi kwi-Ansible is Turing-complete, that handles from include_role intersect in curious way with handlers from play, njl. .d. - konke oku ngokucacileyo akuyiyo "iziseko").

Nangona kukho i-WTF enye eneneni eluphawu ekufuneka ulugcine engqondweni. Ukuba umsebenzi wakho wenziwe nge delegate_to kwaye yazisile, ngoko isibambi esihambelanayo senziwa ngaphandle delegate_to, okt. kwinginginya apho umdlalo wabelwe khona. (Nangona umphathi, ewe, unokuba nayo delegate_to Ngokufanayo).

Ngokwahlukileyo, ndifuna ukuthetha amagama ambalwa malunga neendima ezinokuphinda zisetyenziswe. Ngaphambi kokuba kuvele ingqokelela, kukho umbono wokuba unokwenza iindima ezinokuthi zibekho ansible-galaxy install wahamba. Isebenza kuzo zonke ii-OS zazo zonke iinguqulelo kuzo zonke iimeko. Ngoko, imbono yam: ayisebenzi. Nayiphi na indima enobunzima include_vars, exhasa amatyala angama-100500, agwetyelwe enzonzobileni yeempazamo zekona. Banokugqunywa ngovavanyo olukhulu, kodwa njengakuluphi na uvavanyo, nokuba unemveliso yeCartesian yamaxabiso egalelo kunye nomsebenzi opheleleyo, okanye "unemeko yomntu ngamnye." Umbono wam kukuba kungcono kakhulu ukuba indima ihambelana (i-cyclomatic complexity 1).

Ukuba ii-if ezimbalwa (ezicacileyo okanye ezichazayo - ngendlela when okanye ifom include_vars ngokweseti yezinto eziguquguqukayo), kokukhona indima ingcono. Ngamanye amaxesha kufuneka wenze amasebe, kodwa, ndiyaphinda, ambalwa akhoyo, angcono. Ngoko kubonakala ngathi indima enhle kunye ne-galaxy (isebenza!) Ngeqela le when isenokukhethwa ngaphantsi kwendima "yomntu" kwimisebenzi emihlanu. Umzuzu xa indima kunye ne-galaxy ingcono xa uqala ukubhala into. Umzuzu xa usiba mbi ngakumbi kuxa kukho into eqhekezayo kwaye ukrokrela ukuba kungenxa ye "ndima kunye negalaksi". Uyayivula, kwaye kukho ukubandakanywa okuhlanu, amaphepha asibhozo omsebenzi kunye nesitaki when'ov... Kwaye kufuneka siyiqonde le nto. Esikhundleni semisebenzi emi-5, uluhlu lomgca apho kungekho nto yokuqhawula.

Kwezi ndawo zilandelayo

  • Kancinci malunga ne-inventory, iinguqu zeqela, i-hostvars ye-hostvars, i-hostvars. Indlela yokubopha iqhina leGordian kunye ne-spaghetti. Ububanzi kunye nokuguquguquka kwangaphambili, Imodeli yememori esebenzayo. "Ke ngoko siligcina phi igama lomsebenzisi lesiseko sedatha?"
  • jinja: {{ jinja }} β€” nosql nosense impumlo iplastiki ethambileyo. Ikho kuyo yonke indawo, nalapho ubungayilindelanga. Kancinci malunga !!unsafe kunye neyaml emnandi.

umthombo: www.habr.com

Yongeza izimvo