Zofunikira zofunika, popanda zomwe mabuku anu osewerera azikhala pasta womamatira

Ndimachita ndemanga zambiri za Ansible code ya anthu ena ndikulemba zambiri ndekha. Pofufuza zolakwika (zonse za anthu ena ndi zanga), komanso zoyankhulana zingapo, ndinazindikira cholakwika chachikulu chomwe ogwiritsa ntchito Ansible amapanga - amalowa muzinthu zovuta popanda kudziwa zofunikira.

Pofuna kukonza chisalungamo ichi, ndinaganiza zolembera mawu oyamba ku Ansible kwa iwo omwe akudziwa kale. Ndikukuchenjezani, uku sikunenanso za mans, uku ndi kuwerenga kwanthawi yayitali ndi zilembo zambiri ndipo palibe zithunzi.

Mulingo woyembekezeka wa owerenga ndikuti mizere masauzande angapo ya yamla yalembedwa kale, china chake chapangidwa kale, koma "mwanjira ina zonse nzokhota."

Mayina

Cholakwika chachikulu chomwe wogwiritsa ntchito Ansible amapanga ndikusadziwa chomwe chimatchedwa. Ngati simukudziwa mayina, simungamvetse zomwe zolembazo zikunena. Chitsanzo chamoyo: panthawi yofunsa mafunso, munthu yemwe ankawoneka kuti walemba zambiri mu Ansible sakanatha kuyankha funso lakuti "Kodi buku la sewero lili ndi zinthu ziti?" Ndipo pamene ndinanena kuti "yankho limayembekezeredwa kuti buku lamasewera limakhala ndi sewero," ndemanga yotsutsa "sitigwiritsa ntchito" idatsatira. Anthu amalemba Ansible ndalama ndipo osagwiritsa ntchito masewera. Amachigwiritsa ntchito, koma sakudziwa kuti ndi chiyani.

Ndiye tiyeni tiyambe ndi chinthu chophweka: chimatchedwa chiyani? Mwinamwake mukudziwa izi, kapena simukudziwa, chifukwa simunamvetsere pamene mukuwerenga zolembazo.

ansible-playbook imapanga playbook. Buku lamasewera ndi fayilo yokhala ndi yml/yaml extension, mkati mwake muli chonchi:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Tazindikira kale kuti fayilo yonseyi ndi buku lamasewera. Titha kuwonetsa komwe kuli maudindo komanso komwe kuli ntchito. Koma kusewera kuli kuti? Ndipo pali kusiyana kotani pakati pa sewero ndi gawo kapena buku lamasewera?

Zonse zili muzolembedwa. Ndipo iwo amachiphonya icho. Oyamba - chifukwa pali zambiri ndipo simudzakumbukira zonse mwakamodzi. Zokumana nazo - chifukwa "zinthu zazing'ono". Ngati ndinu odziwa zambiri, werenganinso masambawa kamodzi pa miyezi isanu ndi umodzi iliyonse, ndipo code yanu idzakhala yotsogola m'kalasi.

Chifukwa chake, kumbukirani: Playbook ndi mndandanda wamasewera ndi import_playbook.
Ili ndi sewero limodzi:

- hosts: group1
  roles:
    - role1

ndipo ilinso sewero lina:

- hosts: group2,group3
  tasks:
    - debug:

Kodi kusewera ndi chiyani? Chifukwa chiyani?

Sewero ndi chinthu chofunikira kwambiri m'buku lamasewera, chifukwa masewero ndi sewero amangogwirizanitsa mndandanda wa maudindo ndi / kapena ntchito zomwe zili ndi mndandanda wa omwe akuyenera kuchitidwa. Mukuya kwa zolembedwa mungapeze kutchulidwa delegate_to, mapulagini oyang'ana kwanuko, makonda a network-cli-specific, jump host, etc. Amakulolani kuti musinthe pang'ono malo omwe ntchito zimachitikira. Koma, iwalani za izo. Iliyonse mwa njira zanzeruzi ili ndi ntchito zapadera, ndipo sizodziwika konse konse. Ndipo tikukamba za zinthu zofunika zomwe aliyense ayenera kudziwa ndikuzigwiritsa ntchito.

Ngati mukufuna kuchita "chinachake" "Penapake", mumalemba sewero. Osati udindo. Osati udindo wokhala ndi ma module ndi nthumwi. Mumachitenga ndikulemba sewero. Momwemo, m'munda wa makamu mumalemba komwe muyenera kuchita, ndi maudindo / ntchito - zoyenera kuchita.

Zosavuta, chabwino? Kodi zikanatheka bwanji?

Chimodzi mwazinthu zomwe anthu amafuna kuchita izi osati mwamasewera ndi "udindo womwe umakhazikitsa chilichonse." Ndikufuna kukhala ndi gawo lomwe limakonza ma seva onse amtundu woyamba ndi ma seva amtundu wachiwiri.

Chitsanzo cha archetypal ndikuwunika. Ndikufuna kukhala ndi gawo loyang'anira lomwe lingakonze zowunikira. Ntchito yowunikira imaperekedwa kwa oyang'anira omwe akukhala nawo (molingana ndi kusewera). Koma zikuwonekeratu kuti pakuwunika tiyenera kupereka phukusi kwa omwe akukhala nawo omwe tikuwayang'anira. Bwanji osagwiritsa ntchito delegate? Muyeneranso kukhazikitsa iptables. nthumwi? Muyeneranso kulemba / kukonza kasinthidwe ka DBMS kuti muzitha kuyang'anira. nthumwi! Ndipo ngati luso likusowa, ndiye kuti mutha kupanga nthumwi include_role m'chisa chozungulira pogwiritsa ntchito fyuluta yachinyengo pamndandanda wamagulu, ndi mkati include_role mukhoza kuchita zambiri delegate_to kachiwiri. Ndipo timapita ...

Chikhumbo chabwino - kukhala ndi gawo limodzi loyang'anira, lomwe "limachita chilichonse" - likutifikitsa ku gehena yathunthu komwe nthawi zambiri pamakhala njira imodzi yotulukira: kulembanso chilichonse kuyambira pachiyambi.

Kulakwitsa kudachitika kuti apa? Nthawi yomwe mudazindikira kuti kuti mugwire ntchito "x" pa host X muyenera kupita kukalandira Y ndikuchita "y" pamenepo, mumayenera kuchita zolimbitsa thupi zosavuta: pitani ndikulemba sewero, lomwe pa wolandila Y amachita y. Osawonjeza chinachake ku "x", koma lembani kuyambira pachiyambi. Ngakhale ndi hardcode zosinthika.

Zikuwoneka kuti zonse zomwe zili m'ndime pamwambapa zanenedwa molondola. Koma iyi si nkhani yanu! Chifukwa mukufuna kulemba kachidindo kogwiritsiridwanso ntchito komwe kuli DRY ndi laibulale, ndipo muyenera kuyang'ana njira yamomwe mungachitire.

Apa ndi pamene pali cholakwika china chachikulu. Cholakwika chomwe chinatembenuza mapulojekiti ambiri kuti asalembedwe movomerezeka (zingakhale bwino, koma zonse zimagwira ntchito komanso zosavuta kumaliza) kukhala zoopsa zomwe ngakhale wolemba sangathe kuzizindikira. Zimagwira ntchito, koma Mulungu akuletseni kusintha chilichonse.

Cholakwika ndi: udindo ndi ntchito ya library. Fanizoli lawononga zoyambira zabwino zambiri kotero kuti zimangokhala zachisoni kuwonera. Udindo si ntchito ya library. Sangathe kuwerengera ndipo sangathe kupanga zisankho zamasewera. Ndikumbutseni zomwe masewero amapanga?

Zikomo, mukulondola. Sewero limapanga chisankho (mochulukira, lili ndi zambiri) za ntchito ndi maudindo omwe akuyenera kuchita pa omwe amalandila.

Ngati mugawira chisankhochi paudindowu, ndipo ngakhale powerengera, mumadziwonongera nokha (ndi amene angayese kufotokoza nambala yanu) kukhala moyo womvetsa chisoni. Udindowo susankha komwe uchitikire. Chisankhochi chimapangidwa ndi kusewera. Udindo umachita zomwe wauzidwa, pomwe wauzidwa.

Chifukwa chiyani ndizowopsa kupanga pulogalamu mu Ansible komanso chifukwa chake COBOL ili bwino kuposa Ansible tidzakambirana m'mutuwu za zosinthika ndi jinja. Pakadali pano, tinene chinthu chimodzi - kuwerengera kwanu kulikonse kumasiya kusintha kosasinthika kwamitundu yosiyanasiyana yapadziko lonse lapansi, ndipo simungathe kuchita chilichonse. "Zotsatira" ziwirizo zitadutsana, zonse zidapita.

Zindikirani kwa squeamish: udindowo ukhoza kukhudza kayendetsedwe ka kayendetsedwe kake. Idyani delegate_to ndipo ili ndi ntchito zomveka. Idyani meta: end host/play. Koma! Mukukumbukira timaphunzitsa zoyambira? Ndinayiwala za delegate_to. Tikukamba za code yosavuta komanso yokongola kwambiri ya Ansible. Zomwe ndi zosavuta kuwerenga, zosavuta kulemba, zosavuta kusintha, zosavuta kuyesa komanso zosavuta kumaliza. Kotero, kachiwiri:

sewero ndi kusewera kokha kumasankha omwe akuchititsa zomwe zichitike.

M'chigawo chino, takambirana za kutsutsana pakati pa masewero ndi udindo. Tsopano tiyeni tikambirane za ntchito ndi udindo.

Ntchito ndi Maudindo

Ganizirani masewero:

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

Tinene kuti muyenera kuchita foo. Ndipo zikuwoneka ngati foo: name=foobar state=present. Ndilembe kuti izi? mu pre? positi? Pangani gawo?

...Ndipo ntchitozo zidapita kuti?

Tikuyambanso ndi zoyambira - chida chosewera. Ngati muyandama pankhaniyi, simungagwiritse ntchito kusewera ngati maziko a china chilichonse, ndipo zotsatira zanu zidzakhala "zogwedezeka".

Sewerani chipangizo: malangizo a makamu, makonda oti muzisewera nokha ndi pre_tasks, ntchito, maudindo, post_tasks zigawo. Zotsalira zotsalira zamasewera sizofunikira kwa ife tsopano.

Dongosolo la magawo awo okhala ndi ntchito ndi maudindo: pre_tasks, roles, tasks, post_tasks. Popeza semantically dongosolo la kuphedwa lili pakati tasks ΠΈ roles sizikumveka bwino, ndiye njira zabwino zimati tikuwonjezera gawo tasks, pokhapokha ngati ayi roles... Ngati alipo roles, ndiye ntchito zonse zophatikizidwa zimayikidwa m'magawo pre_tasks/post_tasks.

Chotsalira ndichakuti zonse ndi zomveka bwino: choyamba pre_tasksndiye rolesndiye post_tasks.

Koma sitinayankhebe funso: kodi kuyitana kwa module kuli kuti? foo kulemba? Kodi tiyenera kulemba gawo lonse la gawo lililonse? Kapena ndikwabwino kukhala ndi gawo lalikulu pa chilichonse? Ndipo ngati si udindo, ndiye ndilembe kuti - musanayambe kapena positi?

Ngati palibe yankho lomveka la mafunso awa, ndiye kuti ichi ndi chizindikiro cha kusowa kwa chidziwitso, ndiko kuti, "maziko osasunthika" omwewo. Tiyeni tiganizire. Choyamba, funso lachitetezo: Ngati kusewera kuli pre_tasks ΠΈ post_tasks (ndipo palibe ntchito kapena maudindo), ndiye kuti chinachake chikhoza kusweka ngati ndichita ntchito yoyamba kuchokera post_tasks Ndichisuntha mpaka kumapeto pre_tasks?

Inde, mawu a funsolo akusonyeza kuti kusweka. Koma bwanji kwenikweni?

... Ogwira ntchito. Kuwerenga zoyambira kumawulula mfundo yofunika: onse ogwira ntchito amangothamangitsidwa pambuyo pa gawo lililonse. Iwo. ntchito zonse kuchokera pre_tasks, ndiye onse ogwira ntchito omwe adadziwitsidwa. Ndiye maudindo onse ndi onse ogwira ntchito omwe adadziwitsidwa mu maudindo amachitidwa. Pambuyo post_tasks ndi othandizira awo.

Chifukwa chake, ngati mukoka ntchito kuchokera post_tasks Π² pre_tasks, ndiye kuti mutha kuchita izi musanagwiritse ntchito. mwachitsanzo, ngati mu pre_tasks seva yapaintaneti imayikidwa ndikukonzedwa, ndi post_tasks chinachake chimatumizidwa kwa icho, ndiye kusamutsa ntchitoyi ku gawo pre_tasks zidzatsogolera kuti pa nthawi ya "kutumiza" seva sichidzagwira ntchito ndipo zonse zidzasweka.

Tsopano tiyeni tiganizirenso, chifukwa chiyani tikusowa pre_tasks ΠΈ post_tasks? Mwachitsanzo, kuti mumalize zonse zofunika (kuphatikiza owongolera) musanakwanitse ntchitoyo. A post_tasks idzatilola kuti tigwire ntchito ndi zotsatira za ntchito (kuphatikizapo otsogolera).

Katswiri wanzeru Ansible atiuza chomwe chiri. meta: flush_handlers, koma chifukwa chiyani timafunikira flush_handlers ngati tingadalire dongosolo la magawo omwe amasewera? Kuphatikiza apo, kugwiritsa ntchito meta: flush_handlers kumatha kutipatsa zinthu zosayembekezereka ndi zogwirizira, zomwe zimatipatsa machenjezo achilendo akagwiritsidwa ntchito. when Ρƒ block ndi zina. Mukamadziwa zomveka bwino, m'pamenenso mungatchule ma nuances ambiri kuti mupeze yankho "lachinyengo". Ndipo yankho losavuta - kugwiritsa ntchito kugawanika kwachilengedwe pakati pa pre / maudindo / positi - sikumayambitsa ma nuances.

Ndipo, kubwerera ku 'foo' wathu. Ndiyike kuti? Patsogolo, positi kapena maudindo? Mwachiwonekere, izi zimatengera ngati tikufuna zotsatira za chogwirizira za foo. Ngati kulibe, ndiye kuti foo safunika kuyikidwa mu chisanadze kapena positi - magawowa ali ndi tanthauzo lapadera - kuchita ntchito isanayambe kapena itatha gulu lalikulu la code.

Tsopano yankho la funso lakuti "udindo kapena ntchito" limatsikira ku zomwe zasewera kale - ngati pali ntchito, ndiye kuti muyenera kuziwonjezera ku ntchito. Ngati pali maudindo, muyenera kupanga gawo (ngakhale kuchokera pa ntchito imodzi). Ndiloleni ndikukumbutseni kuti ntchito ndi maudindo sizigwiritsidwa ntchito nthawi imodzi.

Kumvetsetsa zoyambira za Ansible kumapereka mayankho omveka ku mafunso owoneka ngati a kukoma.

Ntchito ndi maudindo (gawo XNUMX)

Tsopano tiyeni tikambirane mmene zinthu zilili pamene mutangoyamba kulemba buku la sewero. Muyenera kupanga foo, bar ndi baz. Kodi izi ndi ntchito zitatu, gawo limodzi kapena maudindo atatu? Kufotokozera mwachidule funso: kodi muyenera kuyamba kulemba maudindo pati? Kodi ntchito yolemba maudindo ndi chiyani mukatha kulemba ntchito?... Udindo ndi chiyani?

Chimodzi mwa zolakwika zazikulu (ndinayankhula kale za izi) ndikuganiza kuti udindo uli ngati ntchito mu laibulale ya pulogalamu. Kodi kufotokozera kwa generic ntchito kumawoneka bwanji? Imavomereza mikangano yolowera, imalumikizana ndi zoyambitsa, imachita zoyipa, ndikubweza mtengo.

Tsopano, tcheru. Kodi chingachitike ndi chiyani kuchokera pankhaniyi? Mwalandiridwa nthawi zonse kuti muyitane zotsatira zoyipa, ichi ndiye chofunikira cha Ansible yonse - kupanga zotsatira zoyipa. Muli ndi zifukwa? Zoyambira. Koma ndi "kudutsa mtengo ndikubweza" - ndipamene sizigwira ntchito. Choyamba, simungadutse phindu ku gawo. Mutha kukhazikitsa kusintha kwapadziko lonse lapansi ndi kukula kwa moyo wonse mu gawo la vars pagawolo. Mutha kukhazikitsa kusinthika kwapadziko lonse lapansi ndikusewera moyo wanu wonse. Kapena ngakhale ndi moyo wa mabuku osewerera (set_fact/register). Koma simungakhale ndi "zosintha zam'deralo". Simungathe "kutenga mtengo" ndi "kubweza".

Chinthu chachikulu chimachokera ku izi: simungathe kulemba chinachake mu Ansible popanda kuyambitsa zotsatira zake. Kusintha kwapadziko lonse lapansi nthawi zonse kumakhala ndi zotsatira zoyipa pa ntchito. Mu Rust, mwachitsanzo, kusintha kusintha kwapadziko lonse ndi unsafe. Ndipo mu Ansible, iyi ndi njira yokhayo yosinthira mayendedwe. Onani mawu omwe agwiritsidwa ntchito: osati "kupatsirani phindu", koma "kusintha zomwe gawolo limagwiritsa ntchito". Palibe kudzipatula pakati pa maudindo. Palibe kudzipatula pakati pa ntchito ndi maudindo.

Chiwerengero: udindo si ntchito.

Ubwino wa ntchitoyo ndi chiyani? Choyamba, gawoli limakhala ndi zikhalidwe zosasinthika (/default/main.yaml), chachiwiri, ntchitoyi ili ndi maupangiri owonjezera osungira mafayilo.

Ubwino wa zinthu zosasinthika ndi zotani? Chifukwa mu piramidi ya Maslow, tebulo losokonekera la Ansible la zinthu zofunika kwambiri, zosasinthika ndizofunika kwambiri (kuchotsa magawo a mzere wa Ansible). Izi zikutanthauza kuti ngati mukufuna kupereka zikhalidwe zosasinthika komanso osadandaula za zomwe zikupitilira kuchokera pagulu kapena zosintha zamagulu, ndiye kuti zosasintha ndi malo okhawo oyenera kwa inu. (Ndikunama pang'ono - pali zambiri |d(your_default_here), koma ngati tilankhula za malo oyima, ndiye kuti amangosasintha).

Ndi chiyani chinanso chomwe chili chabwino pa maudindo? Chifukwa ali ndi makabudula awoawo. Awa ndi maulalo amitundu, zonse zokhazikika (ie zowerengedwera gawo) ndi zamphamvu (pali mwina pateni kapena anti-pattern - include_vars pamodzi ndi {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Awa ndi akalozera a files/, templates/. Komanso, zimakulolani kuti mukhale ndi ma modules anu ndi mapulagini (library/). Koma, poyerekeza ndi ntchito zomwe zili m'buku lamasewera (lomwe lingakhalenso ndi zonsezi), phindu lokhalo ndilokuti mafayilo samatayidwa mulu umodzi, koma milu ingapo yosiyana.

Tsatanetsatane wina: mutha kuyesa kupanga maudindo omwe angakhalepo kuti agwiritsidwenso ntchito (kudzera mu mlalang'amba). Pakubwera kwa zosonkhanitsa, kugawa maudindo kungaganizidwe ngati kuiwalika.

Chifukwa chake, maudindo ali ndi zinthu ziwiri zofunika: ali ndi zosintha (chinthu chapadera) ndipo amakulolani kupanga code yanu.

Kubwerera ku funso loyambirira: nthawi yoti mugwire ntchito ndi nthawi yoti mugwire ntchito? Ntchito zomwe zili m'buku lamasewera zimagwiritsidwa ntchito nthawi zambiri ngati "glue" isanayambe / itatha maudindo, kapena ngati chinthu chomanga chodziimira (ndiye kuti pasakhale maudindo mu code). Mulu wa ntchito zabwinobwino zosakanikirana ndi maudindo ndi kusasamala. Muyenera kumamatira kumayendedwe apadera - kaya ntchito kapena gawo. Maudindo amapereka kulekanitsa mabungwe ndi zosintha, ntchito zimakulolani kuti muwerenge kachidindo mwachangu. Nthawi zambiri, zolemba zambiri "zokhazikika" (zofunika ndi zovuta) zimayikidwa mu maudindo, ndipo zolemba zothandizira zimalembedwa ngati ntchito.

Ndizotheka kuchita import_role ngati ntchito, koma ngati mulemba izi, khalani okonzeka kufotokozera kukongola kwanu chifukwa chomwe mukufuna kuchitira izi.

Wowerenga wanzeru anganene kuti maudindo amatha kutengera maudindo, maudindo amatha kukhala ndi zodalira kudzera pa galaxy.yml, palinso zoyipa komanso zoyipa. include_role - Ndikukukumbutsani kuti tikuwongolera luso muzofunikira za Ansible, osati pamasewera olimbitsa thupi.

Wothandizira ndi ntchito

Tiyeni tikambirane chinthu china chodziwikiratu: ogwira ntchito. Kudziwa kuzigwiritsa ntchito molondola ndi pafupifupi luso. Kodi pali kusiyana kotani pakati pa chogwirizira ndi kukoka?

Popeza tikukumbukira zoyambira, nachi chitsanzo:

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

Ogwira ntchitoyo ali mu rolename/handler/main.yaml. Ogwira nawo ntchito amakangana pakati pa onse omwe atenga nawo mbali: ntchito zisanakwane/zolemba_ntchito zimatha kukoka anthu omwe akugwira nawo ntchito, ndipo gawo limatha kukokera otsogolera ku sewerolo. Komabe, kuyimba kwa "magawo" kwa othandizira kumayambitsa wtf yochulukirapo kuposa kubwereza chogwirizira chaching'ono. (Chinthu china cha machitidwe abwino ndikuyesa kusabwereza mayina a othandizira).

Kusiyanitsa kwakukulu ndikuti ntchitoyo imachitidwa (mosasamala) nthawi zonse (kuphatikiza / kuchotsera ma tag ndi when), ndi wogwirizira - ndi kusintha kwa boma (dziwitsani moto pokhapokha ngati zasinthidwa). Kodi izi zikutanthauza chiyani? Mwachitsanzo, kuti pamene muyambitsanso, ngati palibe kusintha, ndiye kuti sipadzakhala wothandizira. N’cifukwa ciani tifunika kugwila nchito yolalikila popanda kusintha? Mwachitsanzo, chifukwa chinachake chinathyoka ndi kusintha, koma kuphedwa sikunafike kwa wothandizira. Mwachitsanzo, chifukwa netiweki inali yochepa kwakanthawi. Zosintha zasintha, ntchitoyo sinayambitsidwenso. Nthawi ina mukadzayambitsa, zosintha sizisinthanso, ndipo ntchitoyo imakhalabe ndi mtundu wakale wa config.

Zomwe zili ndi kasinthidwe sizingathetsedwe (mochulukira, mutha kudzipangira nokha pulogalamu yapadera yoyambiranso ndi mbendera, ndi zina zambiri, koma izi sizilinso 'zofunikira' mwanjira iliyonse). Koma pali nkhani ina yodziwika: tidayika pulogalamuyo, tidayilemba .service-fayilo, ndipo tsopano tikufuna daemon_reload ΠΈ state=started. Ndipo malo achilengedwe a izi akuwoneka kuti ndi omwe amawongolera. Koma ngati simupanga kukhala chowongolera koma ntchito kumapeto kwa mndandanda wantchito kapena gawo, ndiye kuti imachitidwa mwachisawawa nthawi zonse. Ngakhale playbook idasweka pakati. Izi sizimathetsa vuto lomwe linayambikanso (simungathe kugwira ntchito ndi chikhalidwe choyambitsiranso, chifukwa chidziwitso chatayika), koma ndithudi ndi bwino kuchita state = kuyamba, kukhazikika kwa mabuku osewerera kumawonjezeka, chifukwa chiwerengero cha maulumikizidwe ndi dynamic state imachepa.

Chinthu china chabwino cha wothandizira ndikuti sichitseka zotuluka. Panalibe zosintha - palibe zowonjezera zomwe zidalumpha kapena zabwino pazotulutsa - zosavuta kuwerenga. Komanso ndi katundu woipa - ngati mutapeza typo mu ntchito yomwe yachitidwa pamzere woyamba, ndiye kuti oyendetsa adzaphedwa pokhapokha atasinthidwa, i.e. nthawi zina - kawirikawiri. Mwachitsanzo, kwa nthawi yoyamba m’moyo wanga patapita zaka zisanu. Ndipo, ndithudi, padzakhala typo mu dzina ndipo chirichonse chidzasweka. Ndipo ngati simuwathamangitsa kachiwiri, palibe kusintha.

Payokha, tiyenera kulankhula za kupezeka kwa zosinthika. Mwachitsanzo, ngati mudziwitsa ntchito ndi lupu, mudzakhala ndi chiyani pazosintha? Mutha kulingalira mosanthula, koma sizikhala zazing'ono nthawi zonse, makamaka ngati zosinthazo zimachokera kumadera osiyanasiyana.

... Chifukwa chake zogwira ntchito ndizochepa kwambiri komanso zovuta kwambiri kuposa momwe zimawonekera. Ngati mungathe kulemba chinachake chokongola (popanda frills) popanda ogwira ntchito, ndi bwino kuchita popanda iwo. Ngati sichikuyenda bwino, ndi bwino kukhala nawo.

Wowerenga wowonongayo akunena bwino zomwe sitinakambirane listenkuti wothandizira angayimbire zidziwitso kwa wothandizira wina, kuti wothandizira angaphatikizepo import_tasks (zomwe zingaphatikizepo_role with_items), kuti kachitidwe ka Ansible ndi Turing-complete, kuti othandizira kuchokera ku include_role amadutsana mwachidwi ndi othandizira kuchokera pamasewera, ndi zina .d. - zonsezi mwachiwonekere si "zoyambira").

Ngakhale pali WTF imodzi yokha yomwe ndi chinthu chomwe muyenera kukumbukira. Ngati ntchito yanu yachitika ndi delegate_to ndipo yadziwitsa, ndiye chogwirizira chofananacho chimachitidwa popanda delegate_to,ndi. pa wolandira kumene sewero laperekedwa. (Ngakhale wothandizira, ndithudi, angakhale nawo delegate_to Momwemo).

Payokha, ndikufuna kunena mawu ochepa okhudza maudindo omwe angagwiritsiridwenso ntchito. Zosonkhanitsa zisanachitike, panali lingaliro loti mutha kupanga maudindo apadziko lonse lapansi omwe angakhale ansible-galaxy install ndipo anapita. Imagwira ntchito pamitundu yonse ya OS mumitundu yonse. Kotero, lingaliro langa: sizikugwira ntchito. Udindo uliwonse ndi misa include_vars, yochirikiza milandu 100500, ikuyenera kukhala kuphompho kwa nsikidzi zamakona. Atha kuphimbidwa ndi kuyezetsa kwakukulu, koma monga kuyesa kulikonse, mwina muli ndi zida za Cartesian zamtengo wapatali komanso ntchito yonse, kapena muli ndi "zochitika zapayekha." Lingaliro langa ndikuti ndikwabwinoko ngati gawolo liri lolunjika (kuvuta kwa cyclomatic 1).

Zocheperako ngati (zomveka kapena zofotokozera - mwanjira when kapena mawonekedwe include_vars potengera zosinthika), ndiye kuti ntchitoyo ndiyabwino. Nthawi zina mumayenera kupanga nthambi, koma, ndikubwereza, zochepa zomwe zilipo, zimakhala bwino. Kotero zikuwoneka ngati ntchito yabwino ndi mlalang'amba (imagwira ntchito!) Ndi gulu la when zitha kukhala zocheperako kusiyana ndi "zake" kuchokera ku ntchito zisanu. Nthawi yomwe udindo ndi mlalang'amba uli bwino ndi pamene muyamba kulemba chinachake. Nthawi yomwe ikuipiraipira ndi pamene chinachake chikusweka ndipo mumakayikira kuti ndi chifukwa cha "udindo ndi mlalang'amba". Mumatsegula, ndipo pali zophatikizika zisanu, mapepala asanu ndi atatu ndi stack when'Ov ... Ndipo tiyenera kulingalira izi. M'malo mwa ntchito 5, mndandanda wa mzere womwe mulibe chophwanya.

M'magawo otsatirawa

  • Pang'ono zazinthu, zosinthika zamagulu, plugin host_group_vars, hostvars. Momwe mungamangirire mfundo ya Gordian ndi spaghetti. Zosiyanasiyana ndi zoyambira, Ansible memory model. "Ndiye timasunga kuti dzina lolowera pankhokwe?"
  • jinja: {{ jinja }} - nosql notype mphuno pulasitiki yofewa. Zili paliponse, ngakhale kumene simumayembekezera. Pang'ono za !!unsafe ndi yaml yokoma.

Source: www.habr.com

Kuwonjezera ndemanga