Zvinogoneka zvekutanga, pasina izvo mabhuku ako ekutamba achange ari bundu repasta inonamira

Ini ndinoita wongororo yakawanda yeAnsible kodhi yevamwe vanhu uye ndinonyora zvakawanda ini. Mukati mekuongorora zvikanganiso (zvevamwe vanhu nedzangu), pamwe nenhamba yebvunzurudzo, ndakaona chikanganiso chikuru chinoitwa nevashandisi veAnsible - vanopinda muzvinhu zvakaoma pasina kugona izvo zvakakosha.

Kuti ndigadzirise kusarongeka kwepasi rose uku, ndakasarudza kunyora sumo kuAnsible kune avo vanotozviziva. Ndinokuyambirai, uku hakusi kudzokorodza kwemans, iyi inguva yakareba ine mavara mazhinji uye isina mifananidzo.

Chiyero chinotarisirwa chemuverengi ndechekuti zviuru zvinoverengeka mitsara yeyamla yakatonyorwa, chimwe chinhu chatove mukugadzirwa, asi "neimwe nzira zvese zvakamonyaniswa."

Mazita

Chikanganiso chikuru chinoitwa nemushandisi weAnsible kusaziva chinonzi chimwe chinhu. Kana iwe usingazive mazita, haugone kunzwisisa izvo zvinyorwa zvinoti. Muenzaniso mupenyu: panguva yekubvunzurudzwa, munhu aiita seaiti akanyora zvakawanda muAnsible aisakwanisa kupindura mubvunzo wekuti "bhuku rekutamba rine zvinhu zvipi?" Uye pandakataura kuti "mhinduro yaitarisirwa kuti bhuku rekutamba rine mutambo," tsinhiro yekutuka "hatizvishandise" yakateverwa. Vanhu vanonyora Ansible for money and don't use play. Ivo vanoishandisa chaizvo, asi havazive kuti chii.

Saka ngatitange nechinhu chiri nyore: chinonzi chii? Zvichida iwe unoziva izvi, kana pamwe hauzvizive, nekuti iwe hauna kuterera paunoverenga zvinyorwa.

ansible-playbook inoita bhuku rekutamba. Bhuku rekutamba ifaira rine yml/yaml yekuwedzera, mukati mayo mune chimwe chinhu chakadai:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Takatoona kuti faira rese iri ibhuku rekutamba. Tinogona kuratidza kuti mabasa ari papi uye kuti mabasa acho ari papi. Asi kutamba kupi? Uye ndeupi mutsauko pakati pekutamba uye basa kana bhuku rekutamba?

Zvose zviri mugwaro. Uye vanochipotsa. Vanotanga - nekuti pane zvakawanda uye hauzoyeuki zvese kamwechete. Une ruzivo - nokuti "zvinhu zvisingakoshi". Kana iwe uine ruzivo, verengazve aya mapeji kamwechete pamwedzi mitanhatu yega yega, uye kodhi yako inove inotungamira mukirasi.

Saka, rangarira: Playbook rondedzero ine yekutamba uye import_playbook.
Uyu mutambo mumwe chete:

- hosts: group1
  roles:
    - role1

uye uyu zvakare mumwe mutambo:

- hosts: group2,group3
  tasks:
    - debug:

Chii chinonzi kutamba? Sei ari kudaro?

Kutamba chinhu chakakosha chebhuku rekutamba, nekuti kutamba uye kutamba chete kunosanganisa rondedzero yemabasa uye/kana mabasa ane runyorwa rwevatambi avanofanira kuuraiwa. Mukudzika kwakadzika kwezvinyorwa iwe unogona kuwana kutaurwa nezvayo delegate_to, emunharaunda yekutarisa plugins, network-cli-chaiyo marongero, jump hosts, nezvimwe. Vanokubvumira kuti uchinje zvishoma nzvimbo iyo mabasa anoitwa. Asi, kanganwa nezvazvo. Imwe neimwe yeidzi sarudzo dzakangwara dzine mashandisiro chaiwo, uye hadzisi dzepasirese. Uye isu tiri kutaura pamusoro pezvinhu zvakakosha izvo munhu wese anofanira kuziva uye kushandisa.

Kana iwe uchida kuita "chimwe chinhu" "pane imwe nzvimbo", iwe unonyora kutamba. Kwete basa. Kwete basa nemamodule uye vamiriri. Iwe chitora wonyora kutamba. Imo, mundima yevaenzi iwe unonyora kwaunofanira kuita, uye mumatanho / mabasa - zvekuitisa.

Nyore, handiti? Zvingadaro sei?

Imwe yenguva yehunhu apo vanhu vane chishuwo chekuita izvi kwete kuburikidza nekutamba i "basa rinomisa zvese." Ndinoda kuita basa rinogadzirisa ese ari maviri emhando yekutanga uye maseva emhando yechipiri.

Muenzaniso we archetypal ndeyekutarisa. Ndinoda kuva nebasa rekutarisa rinozogadzirisa kutarisa. Basa rekutarisa rinopihwa kutarisisa mauto (maererano nekutamba). Asi zvinozoitika kuti zvekutarisa isu tinofanirwa kuendesa mapakeji kune vanogamuchira isu tiri kutarisa. Wadii kushandisa delegate? Iwe unofanirwawo kugadzirisa iptables. nhume? Iwe zvakare unofanirwa kunyora / kururamisa gadziriso yeDBMS kuti igone kutarisa. delegate! Uye kana hunyanzvi huripo, saka unogona kuita nhume include_role mune nested loop uchishandisa inonyengera sefa pane rondedzero yemapoka, uye mukati include_role unogona kuita zvakawanda delegate_to zvakare. Uye toenda ...

Chishuvo chakanaka - kuve nechikamu chimwe chekutarisa, icho "chinoita zvese" - chinotitungamira mugehena rakazara umo kazhinji pane nzira imwe chete yekubuda nayo: kunyora zvese kubva pakutanga.

Kukanganisa kwakaitika papi apa? Iyo nguva yawakaona kuti kuita basa "x" pane muenzi X waifanira kuenda kunotambira Y uye woita "y" ipapo, waifanira kuita kurovedza muviri kwakapusa: enda unonyora mutambo, uyo pamugamuchiri Y anoita y. Usawedzera chimwe chinhu kuna "x", asi chinyore kubva pakutanga. Kunyangwe ne hardcoded variables.

Zvinoita sekuti zvese zviri mundima dziri pamusoro zvakataurwa nemazvo. Asi iyi haisi nyaya yako! Nekuti iwe unoda kunyora reusable kodhi iyo DRY uye raibhurari-yakafanana, uye iwe unofanirwa kutsvaga nzira yekuti ungazviita sei.

Apa ndipo panovanda imwe mhosho huru. Chikanganiso chakashandura mapurojekiti mazhinji kubva kunyorwa zvinoshivirira (zvingave zvirinani, asi zvese zvinoshanda uye zviri nyore kupedzisa) kuita kutyisa kuzere uko kunyangwe munyori asingakwanisi kufunga. Zvinoshanda, asi Mwari vakurambidzai kuchinja chero chinhu.

Chikanganiso ndechekuti: basa ibasa reraibhurari. Enzaniso iyi yakaparadza matangiro akanaka akawanda zvekuti zvinongosuwisa kuona. Basa racho harisi basa reraibhurari. Haagone kuita masvomhu uye haakwanise kuita sarudzo dzedanho rekutamba. Ndiyeuchidze kuti ndedzipi sarudzo dzinoitwa nemutambo?

Thanks, uri right. Tamba inoita sarudzo (chaizvoizvo, ine ruzivo) pamusoro pemabasa uye mabasa ekuita pane avo vanotambira.

Kana iwe ukagovera iyi sarudzo kune rimwe basa, uye kunyangwe nekuverenga, unozviparadza iwe (uye uyo achaedza kupatsanura kodhi yako) kune hupenyu hunosiririsa. Basa racho harisarudze kwarinoitwa. Iyi sarudzo inoitwa nekutamba. Basa rinoita zvarinoudzwa, parinotaurirwa.

Sei zvine ngozi kuronga muAnsible uye nei COBOL iri nani pane Ansible tichataura muchitsauko nezve zvinoshanduka uye jinja. Parizvino, ngatitaurei chinhu chimwe - imwe neimwe yekuverenga kwako inosiya kuseri kusingadzimikike cheki chekuchinja mune zvepasi rose, uye hapana chaungaite nezvazvo. Pakangopindirana β€œmaronda” maviri aya, zvese zvakabva zvaenda.

Cherechedza kune squeamish: basa rinogona kupesvedzera kuyerera kwekutonga. Eat delegate_to uye ine mashandisiro ane musoro. Eat meta: end host/play. Asi! Rangarira isu tinodzidzisa zvakakosha? Kukanganwa nezvazvo delegate_to. Tiri kutaura nezve yakapfava uye yakanakisa Ansible kodhi. Izvo zviri nyore kuverenga, zviri nyore kunyora, zviri nyore kugadzirisa, zviri nyore kuyedza uye zviri nyore kupedza. Saka, zvakare:

tamba uye kutamba chete ndiko kunosarudza kuti ndeupi muridzi wezvinoitwa.

Muchikamu chino, takabata nekupikisa pakati pemutambo nechinzvimbo. Zvino ngatitaure nezve mabasa vs role relationship.

Mabasa Nemabasa

Funga nezvemutambo:

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

Ngatiti iwe unofanirwa kuita foo. Uye zvinoita sokuti foo: name=foobar state=present. Ndonyora kupi izvi? in pre? post? Ita basa?

... Uye mabasa akaendepi?

Tiri kutanga nekutanga zvakare - mudziyo wekutamba. Kana iwe ukayangarara pane iyi nyaya, haugone kushandisa kutamba sehwaro hwezvimwe zvese, uye mhedzisiro yako ichave "yakazununguka".

Tamba mudziyo: dhairekitori remauto, zvigadziriso zvekutamba pachayo uye pre_tasks, mabasa, mabasa, post_tasks zvikamu. Iwo asara maparamita ekutamba haana kukosha kwatiri ikozvino.

Kurongeka kwezvikamu zvavo zvine mabasa nemabasa: pre_tasks, roles, tasks, post_tasks. Sezvo semantically kurongeka kwekuuraya kuri pakati tasks ΠΈ roles haina kujeka, saka maitiro akanaka anoti isu tiri kuwedzera chikamu tasks, chete kana kwete roles... Kana aripo roles, ipapo mabasa ose akabatanidzwa anoiswa muzvikamu pre_tasks/post_tasks.

Chinosara ndechekuti zvese zvakajeka semantically: kutanga pre_tasksipapo rolesipapo post_tasks.

Asi isu hatisati tapindura mubvunzo: iripi module yekufona? foo kunyora? Isu tinoda kunyora basa rese remodule yega yega? Kana kuti zviri nani kuve nebasa rakakura kune zvese? Uye kana isiri basa, saka pandinofanira kunyora - mune pre kana post?

Kana pasina mhinduro inonzwisisika kumibvunzo iyi, saka ichi chiratidzo chekushaya intuition, kureva, "nheyo dzinozununguka" dzakafanana. Ngatizvionei. Kutanga, mubvunzo wekuchengetedza: Kana kutamba kune pre_tasks ΠΈ post_tasks (uye hapana mabasa kana mabasa), saka chimwe chinhu chinogona kuputsika kana ndikaita basa rekutanga kubva post_tasks Ndichazvifambisa kusvika kumagumo pre_tasks?

Ehe, mazwi emubvunzo anoratidza kuti ichatsemuka. Asi chii chaizvo?

... Vabati. Kuverenga izvo zvekutanga zvinoburitsa chokwadi chakakosha: vese vanobata vanotakurwa otomatiki mushure mechikamu chimwe nechimwe. Avo. mabasa ose kubva pre_tasks, ipapo vese vanobata vakaziviswa. Ipapo mabasa ese uye vese vanobata vakaziviswa mumabasa vanoitwa. Mushure post_tasks nevabatsiri vavo.

Saka, kana iwe ukadhonza basa kubva post_tasks Π² pre_tasks, saka pamwe unozozviita mubatisi asati aitwa. semuenzaniso, kana in pre_tasks iyo webhu server yakaiswa uye yakagadziriswa, uye post_tasks chimwe chinhu chinotumirwa kwairi, wozoendesa basa iri kuchikamu pre_tasks zvinotungamira kune chokwadi chekuti panguva ye "kutumira" sevha haisati yave ichimhanya uye zvese zvinoputsika.

Zvino ngatifungei zvakare, nei tichida pre_tasks ΠΈ post_tasks? Semuenzaniso, kuti upedze zvese zvinodiwa (kusanganisira vanobata) usati waita basa. A post_tasks zvichatibvumira kushanda nemhedzisiro yekuita mabasa (kusanganisira vanobata).

Nyanzvi ine njere Ansible ichatiudza kuti chii. meta: flush_handlers, asi nei tichida flush_handlers kana tichigona kuvimba nehurongwa hwekuitwa kwezvikamu mukutamba? Uyezve, kushandiswa kwemeta: flush_handlers inogona kutipa zvinhu zvisingatarisirwi nevatambi vanodzokorora, vachitipa yambiro isinganzwisisike kana yashandiswa. when Ρƒ block etc. Izvo zvirinani iwe kuziva zvinonzwisisika, iyo yakawanda nuances iwe yaunogona kutumidza kune "inonyengera" mhinduro. Uye mhinduro iri nyore - kushandisa kupatsanurwa kwechisikigo pakati pekutanga / mabasa / post - haikonzere nuances.

Uye, kudzokera kune yedu 'foo'. Ndochiisa kupi? In pre, post kana mabasa? Zviripachena, izvi zvinoenderana nekuti isu tinoda mhedzisiro yemubati wefoo. Kana vasipo, saka foo haidi kuiswa mune pre kana post - izvi zvikamu zvine chirevo chakakosha - kuita mabasa pamberi uye mushure meboka guru rekodhi.

Iye zvino mhinduro kumubvunzo we "basa kana basa" rinouya kune izvo zvatova kutamba - kana pane mabasa ipapo, unofanira kuwedzera kune mabasa. Kana paine mabasa, iwe unofanirwa kugadzira chikamu (kunyangwe kubva kune rimwe basa). Rega ndikuyeuchidze kuti mabasa uye mabasa haashandiswe panguva imwe chete.

Kunzwisisa izvo zvekutanga zveAnsible zvinopa mhinduro dzine musoro kumibvunzo inoita seyekuravira.

Mabasa nemabasa (chikamu chechipiri)

Zvino ngatikurukurei mamiriro ezvinhu kana uchangotanga kunyora bhuku rekutamba. Iwe unofanirwa kugadzira foo, bar uye baz. Aya mabasa matatu, basa rimwe kana matatu? Kupfupisa mubvunzo: panguva ipi yaunofanira kutanga kunyora mabasa? Chii chine basa rekunyora mabasa iwe uchigona kunyora mabasa?... Basa chii?

Imwe yemhosho huru (ndakatotaura pamusoro peizvi) kufunga kuti basa rakafanana nebasa muraibhurari yechirongwa. Tsananguro yebasa regeneric inotaridzika sei? Inogamuchira nharo dzekupinza, inodyidzana nezvikonzero zvinokonzeresa, inoita mhedzisiro, uye inodzosera kukosha.

Zvino, cherechedza. Chii chingaitwa kubva pane izvi mubasa? Iwe unogamuchirwa nguva dzose kudaidza mhedzisiro, ichi ndicho musimboti weAnsible yese - kugadzira mhedzisiro. Vane zvikonzero? Elementary. Asi ne "pfuudza kukosha uye udzorere" - ndiko kwaisingashande. Kutanga, haugone kupfuudza kukosha kune basa. Iwe unogona kuseta shanduko yepasirese nehukuru hwehupenyu hwekutamba muchikamu chevars chebasa racho. Iwe unogona kuseta shanduko yepasirese nehupenyu hwese mukutamba mukati mechikamu. Kana kunyangwe nehupenyu hwemabhuku ekutamba (set_fact/register) Asi iwe haugone kuve ne "nzvimbo dzakasiyana". Iwe haugone "kutora kukosha" uye "kuidzosera".

Chinhu chikuru chinotevera kubva pane izvi: haugone kunyora chimwe chinhu muAnsible pasina kukonzera mhedzisiro. Kusandura zvimiro zvepasi rose kunogara kuri mhedzisiro yebasa. MuRust, semuenzaniso, kushandura shanduko yepasi rose ndeye unsafe. Uye muAnsible ndiyo chete nzira yekupesvedzera kukosha kwechikamu. Cherechedza mazwi anoshandiswa: kwete "kupfuudza kukosha kune basa", asi "shandura hunhu hunoshandiswa nebasa". Hapana kuparadzaniswa pakati pemabasa. Hapana kuparadzaniswa pakati pemabasa nemabasa.

Zvose: basa harisi basa.

Chii chakanaka pamusoro pebasa? Chekutanga, iro basa rine default values ​​(/default/main.yaml), chechipiri, basa racho rine mamwe madhairekitori ekuchengetedza mafaera.

Ndedzipi mabhenefiti ezvakagadzika kukosha? Nekuti mupiramidhi yaMaslow, Ansible's tafura yakashatiswa yezvakasiyana-siyana zvinonyanya kukosha, kusarudzika kwemaitiro ndiko kwakanyanya kuderera-inonyanya kukosha (minus Ansible command line paramita). Izvi zvinoreva kuti kana iwe uchida kupa default hunhu uye usingazvinetse pamusoro pazvo pamusoro pehukoshi kubva kune hesitori kana mapoka akasiyana, saka kusarudzika kwekuita ndiyo chete nzvimbo yakakukodzera. (Ndiri kunyepa zvishoma - kune zvimwe |d(your_default_here), asi kana tikataura nezve nzvimbo dzakamira, ipapo chete basa defaults).

Chii chimwe chakakosha pamabasa? Nokuti vane mabhuku avo ega. Aya madhairekitori ezvakasiyana, zvese zvinogara (kureva zvakaverengerwa basa) uye zvine simba (kune kana patani kana anti-pattern - include_vars pamwe chete {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Aya ndiwo madhairekitori e files/, templates/. Zvakare, zvinokutendera iwe kuti uve neyako mamodule uye plugins (library/) Asi, mukuenzanisa nemabasa ari mubhuku rekutamba (rinogonawo kuva nezvose izvi), chinongobatsira chete apa ndechekuti mafaera haana kukandwa mumurwi mumwe, asi akati wandei akaparadzana.

Imwezve ruzivo: unogona kuyedza kugadzira mabasa anozove aripo kuti ashandiswezve (kuburikidza negirazi). Nekuuya kwekuunganidza, kugovera basa kunogona kutariswa sekunge kwakanganikwa.

Nekudaro, mabasa ane maviri akakosha maficha: ane defaults (yakasarudzika chimiro) uye anobvumidza iwe kuronga kodhi yako.

Kudzokera kumubvunzo wekutanga: nguva yekuita mabasa uye nguva yekuita mabasa? Mabasa mubhuku rekutamba anonyanya kushandiswa se "glue" pamberi / mushure mekuita, kana sechinhu chakazvimirira chekuvaka (saka hapafanirwe kuve nemabasa mukodhi). Murwi wemabasa enguva dzose akasanganiswa nemabasa unyope husina kujeka. Iwe unofanirwa kuomerera kune yakatarwa maitiro - ingave basa kana basa. Mabasa anopa kupatsanurwa kwemasangano uye zvisizvo, mabasa anotendera iwe kuti uverenge kodhi nekukurumidza. Kazhinji, yakawanda "yakamira" (yakakosha uye yakaoma) kodhi inoiswa mumabasa, uye zvinyorwa zvebetsero zvinonyorwa muchimiro chebasa.

Zvinogoneka kuita import_role sebasa, asi kana ukanyora izvi, saka gadzirira kutsanangura kune yako pfungwa yekunaka nei uchida kuita izvi.

Muverengi akangwara anogona kutaura kuti mabasa anogona kupinza mabasa, mabasa anogona kuve neanovimba kuburikidza negalaxy.yml, uye kune zvakare yakashata uye inotyisa. include_role - Ndinokuyeuchidza kuti tiri kuvandudza hunyanzvi muBasic Ansible, uye kwete muchimiro gymnastics.

Vabati uye mabasa

Ngatikurukurei chimwe chinhu chiri pachena: vanobata. Kuziva mashandisirwo ayakaitwa hunenge hunyanzvi. Ndeupi musiyano uripo pakati pemubati nekukweva?

Sezvo isu tiri kurangarira zvekutanga, heino muenzaniso:

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

Vabati vebasa vari murolename/handler/main.yaml. Vabati vanopopotedzana pakati pevatambi vemutambo: pre/post_tasks inogona kudhonza vanobata basa, uye basa rinogona kudhonza vanobata kubva mumutambo. Zvisineyi, "cross-role" kufona kune vanobata kunokonzeresa wtf yakawanda pane kudzokorora mubatiri asina basa. (Chimwe chinhu cheakanakisa maitiro kuedza kusadzokorora mazita emubati).

Musiyano mukuru ndewekuti basa rinogara richiitwa (zvisingaite) (plus/minus tags uye when), uye muchengeti - nekuchinja kwenyika (kuzivisa moto chete kana yakashandurwa). Izvi zvinorevei? Semuenzaniso, chokwadi chekuti paunotangazve, kana pakanga pasina kuchinjwa, ipapo hapazovi nemubati. Nei zvingave kuti isu tinofanirwa kuuraya mubati kana pakanga pasina shanduko mubasa rekugadzira? Somuenzaniso, nokuti chimwe chinhu chakaputsika uye chakachinja, asi kuurayiwa hakuna kusvika kune muiti. Semuenzaniso, nekuti network yaive yakadzikira kwenguva pfupi. Iyo config yachinja, sevhisi haina kutangwa patsva. Nguva inotevera paunoitanga, iyo config haichashanduki, uye sevhisi inoramba iine yekare vhezheni ye config.

Mamiriro ezvinhu ane config haagone kugadziriswa (kunyanya, iwe unogona kuzvigadzirira yakakosha restart protocol yako nemafaira emafaira, nezvimwewo, asi izvi hazvisisiri 'zvakakosha zvinobatika' mune chero chimiro). Asi pane imwe nyaya yakajairika: isu takaisa application, takainyora .service-faira, uye ikozvino tinoida daemon_reload ΠΈ state=started. Uye nzvimbo yakasikwa yeiyi inoratidzika kuva mugadziri. Asi kana ukaiita kuti rive risiri mubati asi basa pakupera kwerimwe basa kana basa, rinozoitwa zvisina musoro nguva dzese. Kunyangwe bhuku rekutamba rakaputsika nepakati. Izvi hazvigadzirise dambudziko rakatangazve zvachose (iwe haugone kuita basa nehunhu hwatangwazve, nekuti idempotency yakarasika), asi zvakakodzera kuita state = kutanga, kugadzikana kwese kwemabhuku ekutamba kunowedzera, nekuti. nhamba yekubatanidza uye dynamic state inoderera.

Chimwe chinhu chakanaka chemubati ndechekuti haivharidzi kubuda. Pakanga pasina shanduko - hapana yekuwedzera yakasvetuka kana ok mune zvakabuda - zviri nyore kuverenga. Ichowo chinhu chisina kunaka - kana iwe ukawana typo mumutsara wakaitwa basa pakutanga chaiko kumhanya, ipapo vanobata vanozourayiwa chete kana vashandurwa, i.e. mune mamwe mamiriro - kashoma. Somuenzaniso, kekutanga muupenyu hwangu makore mashanu gare gare. Uye, zvechokwadi, pachava ne typo muzita uye zvose zvichaputsika. Uye kana ukasavamhanyisa kechipiri, hapana shanduko.

Takaparadzana, tinofanira kutaura pamusoro pekuwanikwa kwezvinhu zvakasiyana-siyana. Semuenzaniso, kana iwe ukazivisa basa ne loop, chii chichave chiri mumhando dzakasiyana? Iwe unogona kufungidzira nekuongorora, asi hazvisi nguva dzose zviduku, kunyanya kana zvakasiyana-siyana zvichibva kunzvimbo dzakasiyana.

... Saka vanobata havanyanyi kubatsira uye zvakanyanya kunetsa kupfuura zvavanoita. Kana iwe ukakwanisa kunyora chimwe chinhu chakanaka (pasina frills) pasina vabati, zviri nani kuzviita pasina ivo. Kana ikasashanda zvakanaka, zviri nani navo.

Muverengi anoodza anonongedza zvakanaka zvatisina kukurukura listenkuti mubati anogona kufonera ziviso kune mumwe mubato, kuti mubati anogona kusanganisira import_tasks (inogona kusanganisira_role with_items), iyo inobata system in Ansible is Turing-complete, that handlers from include_role intersect in a curious way with handlers from play, nezvimwewo .d. - zvose izvi zvakajeka hazvisi "zvakakosha").

Kunyangwe paine imwe yakananga WTF inova chinhu chaunofanirwa kuchengeta mupfungwa. Kana basa rako richiitwa ne delegate_to uye yazivisa, ipapo mugadziri anoenderana anourayiwa pasina delegate_to, i.e. pamubati panopihwa mutambo. (Kunyangwe mubati, hongu, angave aine delegate_to Same).

Takaparadzana, ndinoda kutaura mazwi mashoma nezve reusable mabasa. Kuunganidzwa kusati kwaoneka, pakanga paine pfungwa yekuti iwe unogona kuita mabasa epasirese anogona kuve ansible-galaxy install ndokuenda. Inoshanda pane ese OS yeese akasiyana mune ese mamiriro. Saka, maonero angu: hazvishande. Chero basa nemisa include_vars, inotsigira 100500 makesi, yakatongerwa kugomba rekona mabugs. Ivo vanogona kufukidzwa nekuyedzwa kukuru, asi sekunge chero kuyedzwa, ungave uine Cartesian chigadzirwa chezvekupinza kukosha uye basa rakazara, kana iwe une "munhu ega mamiriro akafukidzwa." Maonero angu ndeekuti zviri nani kana basa racho riri mutsara (cyclomatic kuoma 1).

Iwo mashoma kana ari (akajeka kana kuzivisa - muchimiro when kana fomu include_vars neseti yezvinosiyana), zvinoita nani basa racho. Dzimwe nguva unofanirwa kuita matavi, asi, ndinodzokorora, mashoma aripo, zviri nani. Saka rinoratidzika sebasa rakanaka negalaxy (rinoshanda!) Neboka re when inogona kuve isingakodzeri pane "yake" basa kubva pamabasa mashanu. Iyo nguva iyo iyo basa negalaxy iri nani ndipo paunotanga kunyora chimwe chinhu. Iyo nguva yainowedzera kuipa ndeye apo chimwe chinhu chinoputika uye iwe une fungidziro yekuti imhaka ye "basa rine galaxy". Iwe unoivhura, uye kune mashanu inclusions, masere ebasa mapepa uye stack when'ov... Uye isu tinofanirwa kufunga izvi. Panzvimbo pe5 mabasa, mutsara runyorwa umo pasina chekutyora.

Muzvikamu zvinotevera

  • Zvishoma nezve inventory, mapoka akasiyana, host_group_vars plugin, hostvars. Nzira yekusunga sei gordian knot ne spaghetti. Kukura uye kutangira zvinosiyana, Ansible memory modhi. "Saka tinochengeta kupi zita rekushandisa re database?"
  • jinja: {{ jinja }} - nosql nosense mhino yakapfava plasticine. Iri kwese kwese, kunyangwe kwausina kuzvitarisira. Zvishoma nezve !!unsafe uye inonaka yaml.

Source: www.habr.com

Voeg