Lintho tsa motheo tse utloahalang, tseo ntle le tsona libuka tsa hau tsa ho bapala e tla ba hlama ea pasta e khomarelang

Ke etsa litlhahlobo tse ngata tsa Ansible code tsa batho ba bang mme ke ngola haholo le nna. Ha ke ntse ke hlahloba liphoso (tsa batho ba bang le ba ka), hammoho le lipuisano tse 'maloa, ke ile ka hlokomela phoso e kholo eo basebelisi ba Ansible ba e etsang - ba kena linthong tse rarahaneng ntle le ho tseba tsa motheo.

Ho lokisa ho hloka toka hona hohle, ke ile ka etsa qeto ea ho ngola kenyelletso ho Ansible bakeng sa ba seng ba ntse ba e tseba. Kea u lemosa, sena ha se ho pheta-pheta ha mans, ena ke nako e telele e nang le mangolo a mangata ebile ha e na litšoantšo.

Boemo bo lebelletsoeng ba 'mali ke hore mela e likete tse' maloa ea yamla e se e ngotsoe, ho na le ntho e seng e ntse e hlahisoa, empa "ka tsela e itseng ntho e 'ngoe le e 'ngoe e khopame."

Mabitso

Phoso e kholo eo mosebelisi ea Ansible a e etsang ke ho se tsebe ntho e bitsoang. Haeba u sa tsebe mabitso, u ke ke ua utloisisa hore na litokomane li re'ng. Mohlala o phelang: nakong ea lipuisano, motho ea neng a bonahala a re o ngotse haholo ho Ansible o ne a sitoa ho araba potso e reng "buka ea lipapali e na le likarolo life?" ’Me ha ke etsa tlhahiso ea hore “karabelo e ne e lebeletsoe hore buka ea ho bapala e na le papali,” ho ile ha latela tlhaloso e nyarosang e reng “ha re sebelise seo”. Batho ba ngola ba Ansible bakeng sa chelete mme ha ba sebelise papali. Ba hlile ba e sebelisa, empa ha ba tsebe hore na ke eng.

Kahoo a re qaleng ka ntho e bonolo: e bitsoa eng? Mohlomong u tseba sena, kapa mohlomong ha u tsebe, hobane ha ua ka ua ela hloko ha u bala litokomane.

ansible-playbook e etsa buka ea ho bapala. Buka ea ho bapala ke faele e nang le yml/yaml extension, eo ka hare ho eona ho nang le ntho e kang ena:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Re se re hlokometse hore faele ena kaofela ke buka ea ho bapala. Re ka bontša moo mesebetsi e leng teng le moo mesebetsi e leng teng. Empa papali e hokae? Hona phapang ke efe pakeng tsa papali le karolo kapa buka ea papali?

Tsohle li ka har'a litokomane. Mme ba e fosa. Ba qalang - hobane ho na le ho hongata haholo 'me u ke ke ua hopola ntho e' ngoe le e 'ngoe hang-hang. Boiphihlelo - hobane "lintho tse sa reng letho". Haeba u na le boiphihlelo, bala maqephe ana hape bonyane hang ka mor'a likhoeli tse ling le tse ling tse tšeletseng, 'me khoutu ea hau e tla ba moetapele oa sehlopha.

Kahoo, hopola: Playbook ke lenane le nang le papali le import_playbook.
Ena ke papali e le 'ngoe:

- hosts: group1
  roles:
    - role1

mme ena ke papali e 'ngoe hape:

- hosts: group2,group3
  tasks:
    - debug:

Papali ke eng? Ke hobane'ng ha a le teng?

Papali ke ntho ea bohlokoa bakeng sa buka ea ho bapala, hobane papali le papali e amahanya feela lethathamo la mesebetsi le/kapa mesebetsi e nang le lethathamo la baamoheli bao ba tlamehang ho etsoa ho bona. Botebong bo tebileng ba litokomane u ka fumana ho buuoa ka tsona delegate_to, li-plugins tsa sebaka sa heno, litlhophiso tse khethehileng tsa marang-rang, li-host host, joalo-joalo. Li u lumella ho fetola hanyane sebaka seo mesebetsi e etsoang ho sona. Empa, lebala ka eona. E 'ngoe le e' ngoe ea likhetho tsena tse bohlale e na le ts'ebeliso e ikhethang, 'me ha e ea fumaneha hohle. Mme re bua ka dintho tsa motheo tseo bohle ba lokelang ho di tseba le ho di sebedisa.

Haeba u batla ho etsa "ntho" "kae-kae", u ngola papali. Eseng karolo. Ha se karolo ea li-module le baemeli. U e nke 'me u ngole papali. Ho eona, tšimong ea mabotho u thathamisang moo u lokelang ho e etsa, le mesebetsing / mesebetsi - seo u lokelang ho se etsa.

E bonolo, ho joalo? Ho ka ba joalo joang?

E 'ngoe ea linako tseo batho ba nang le takatso ea ho etsa sena eseng ka papali ke "karolo e hlophisang ntho e ngoe le e ngoe." Ke kopa ho ba le karolo e lokisang li-server tsa mofuta oa pele le li-server tsa mofuta oa bobeli.

Mohlala oa archetypal ke oa ho beha leihlo. Ke kopa ho ba le karolo ea ho beha leihlo e tla lokisa ho beha leihlo. Karolo ea ho beha leihlo e abetsoe ho beha leihlo baamoheli (ho ea ka papali). Empa ho ile ha fumaneha hore bakeng sa ho beha leihlo re hloka ho isa liphutheloana ho ba amohelang baeti bao re ba shebileng. Ke hobane'ng ha u sa sebelise moemeli? U boetse u hloka ho lokisa iptables. moemeli? U boetse u hloka ho ngola / ho lokisa config bakeng sa DBMS ho nolofalletsa ho beha leihlo. moemeli! 'Me haeba boqapi bo haella, joale u ka etsa moifo include_role ka sehlaha lupu sebelisa sefa bolotsana lethathamong la lihlopha, le ka hare include_role o ka etsa ho feta delegate_to hape. Mme rea tloha...

Takatso e ntle - ho ba le karolo e le 'ngoe ea ho beha leihlo, e "etsang tsohle" - e re isa liheleng tse felletseng tseo hangata ho nang le tsela e le 'ngoe feela ea ho tsoa: ho ngola tsohle bocha ho tloha qalong.

Phoso e etsahetse kae moo? Hang ha o fumana hore ho etsa "x" ho moamoheli X o tlameha ho ea ho moamoheli Y le ho etsa "y" moo, o ne o tlameha ho etsa boikoetliso bo bonolo: ea ho ngola papali, eo ho moamoheli Y a etsang y. Se ke oa eketsa ho hong ho "x", empa e ngole ho tloha qalong. Esita le ka mefuta e fapaneng ea hardcode.

Ho bonahala eka ntho e 'ngoe le e 'ngoe e lirapeng tse ka holimo e boletsoe ka nepo. Empa sena ha se taba ea hau! Hobane o batla ho ngola khoutu e ka sebelisoang hape e DRY le laeborari, mme o hloka ho batla mokhoa oa ho e etsa.

Ke hona moo phoso e 'ngoe e tebileng e lallang teng. Phoso e ileng ea fetola merero e mengata hore e se ke ea ngoloa ka mokhoa o mamelloang (e ka ba betere, empa ntho e 'ngoe le e' ngoe e sebetsa ebile e bonolo ho e qeta) e be tšabo e feletseng eo esita le mongoli a ke keng a e utloisisa. E ea sebetsa, empa Molimo ha a u lumelle ho fetola letho.

Phoso ke: karolo ke mosebetsi oa laebrari. Papiso ena e sentse qaleho e ngata e ntle hoo ho utloisang bohloko ho e shebella. Karolo ha se mosebetsi oa laeborari. Ha a khone ho etsa lipalo ebile ha a khone ho etsa liqeto tsa boemo ba papali. Nkhopotse hore na papali e etsa liqeto life?

Kea leboha, u nepile. Papali e etsa qeto (ka nepo, e na le tlhaiso-leseling) mabapi le mesebetsi le likarolo tse lokelang ho etsoa ho baamoheli ba fe.

Haeba u abela qeto ena ho karolo, esita le ka lipalo, u ipeha kotsing (le ea tla leka ho hlalosa khoutu ea hau) bophelong bo soabisang. Karolo ha e etse qeto ea hore na e etsoa hokae. Qeto ena e etsoa ka papali. Karolo e etsa seo e se bolelloang, moo e boleloang teng.

Ke hobane'ng ha ho le kotsi ho etsa lenaneo ho Ansible le hore na ke hobane'ng ha COBOL e le molemo ho feta Ansible re tla bua khaolong e buang ka mefuta-futa le jinja. Hajoale, ha re bue ntho e le 'ngoe - palo e' ngoe le e 'ngoe ea hau e siea mohlala o sa hlakoheng oa liphetoho tse fapaneng tsa lefats'e, 'me u ke ke ua etsa letho ka eona. Hang ha "mesaletsa" e 'meli e kopana, ntho e' ngoe le e 'ngoe e ne e felile.

Tlhokomeliso bakeng sa squeamish: ka sebele karolo e ka susumetsa phallo ea taolo. Ja delegate_to 'me e na le lisebelisoa tse lekaneng. Ja meta: end host/play. Empa! Hopola hore re ruta lintho tsa motheo? Lebala ka delegate_to. Re bua ka khoutu e bonolo le e ntle ka ho fetisisa ea Ansible. E leng bonolo ho e bala, ho ngola habonolo, ho e lokisa habonolo, ho lekoa habonolo ebile ho bonolo ho e phetha. Kahoo, hang hape:

papali le papali feela e etsang qeto ea hore na ho etsoa eng.

Karolong ena, re sebetsana le khanyetso pakeng tsa papali le karolo. Joale ha re bue ka mesebetsi vs kamano ea karolo.

Mesebetsi le Mesebetsi

Nahana ka papali:

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

Ha re re u hloka ho etsa foo. 'Me ho bonahala eka foo: name=foobar state=present. Ke lokela ho ngola see hokae? pele? poso? Etsa karolo?

...Mme mesebetsi e ile kae?

Re qala hape ka lintho tsa motheo - sesebelisoa sa ho bapala. Haeba u phaphamala ka taba ena, u ke ke ua sebelisa papali e le motheo oa ntho e 'ngoe le e' ngoe, 'me sephetho sa hau se tla ba "shaky".

Sesebelisoa sa ho bapala: litaelo tsa mabotho, litlhophiso tsa papali ka boeona le pre_tasks, mesebetsi, likarolo, likarolo tsa post_tasks. Mekhahlelo e setseng ea papali ha e bohlokoa ho rona hona joale.

Tatelano ea likarolo tsa bona ka mesebetsi le mesebetsi: pre_tasks, roles, tasks, post_tasks. Kaha semantically taelo ea ho bolaoa e pakeng tsa tasks и roles ha e hlake, joale mekhoa e metle e re re eketsa karolo tasks, ha feela ho se joalo roles... Haeba le teng roles, ebe mesebetsi eohle e khomaretsoeng e behoa ka likarolo pre_tasks/post_tasks.

Ho setseng ke hore ntho e 'ngoe le e' ngoe e hlakile ka mokhoa o hlakileng: pele pre_tasks, joale roles, joale post_tasks.

Empa ha re so arabe potso: mohala oa mojule o hokae? foo ngola? Na re hloka ho ngola karolo e felletseng bakeng sa mojule ka mong? Kapa na ho molemo ho ba le karolo e teteaneng bakeng sa ntho e 'ngoe le e' ngoe? 'Me haeba e se karolo, joale ke lokela ho ngola hokae - pele kapa poso?

Haeba ho se na karabo e utloahalang lipotsong tsena, joale sena ke sesupo sa ho haella ha intuition, ke hore, "metheo e sisinyehang" e tšoanang. Ha re e utloisise. Taba ea pele, potso ea ts'ireletso: Haeba papali e na le pre_tasks и post_tasks ('me ha ho na mesebetsi kapa mesebetsi), joale ntho e ka robeha haeba ke etsa mosebetsi oa pele ho tloha post_tasks Ke tla e tsamaisa ho fihlela qetellong pre_tasks?

Ehlile, mantsoe a potso a fana ka maikutlo a hore e tla robeha. Empa hantle-ntle ke eng?

... Batshwari. Ho bala lintlha tsa motheo ho senola 'nete ea bohlokoa: lisebelisoa tsohle li hlatsuoa ka mokhoa o itekanetseng ka mor'a karolo ka' ngoe. Tseo. mesebetsi eohle ho tloha pre_tasks, joale bohle ba sebetsanang le bona ba ileng ba tsebisoa. Ebe likarolo tsohle le batšoantšisi bohle ba ileng ba tsebisoa mesebetsing ba a phethisoa. Kamora post_tasks le batshwari ba bona.

Kahoo, haeba u hula mosebetsi ho tloha post_tasks в pre_tasks, joale mohlomong u tla e phetha pele sebatli se etsoa. mohlala, haeba ho pre_tasks seva sa webo se kentsoe le ho hlophisoa, le post_tasks ntho e romeloa ho eona, ebe u fetisetsa mosebetsi ona karolong pre_tasks e tla lebisa tabeng ea hore nakong ea "ho romela" seva e tla be e e-s'o sebetse 'me ntho e' ngoe le e 'ngoe e tla robeha.

Jwale ha re nahaneng hape, hobaneng re hloka pre_tasks и post_tasks? Ka mohlala, e le hore u phethe ntho e 'ngoe le e' ngoe e hlokahalang (ho kenyeletsoa le ba sebetsang) pele u phetha karolo. A post_tasks e tla re lumella ho sebetsa ka litholoana tsa ho phetha mesebetsi (ho kenyeletsoa le bahlokomeli).

Setsebi se masene se Ansible se tla re bolella hore na ke eng. meta: flush_handlers, empa ke hobane'ng ha re hloka li-flush_handlers haeba re ka itšetleha ka taelo ea ho phethahatsa likarolo tse bapalang? Ho feta moo, ts'ebeliso ea meta: flush_handlers e ka re fa lintho tse sa lebelloang ka li-handlers tse peli, tse re fang litemoso tse makatsang ha li sebelisoa. when у block etc. Ha u ntse u tseba ho utloahala, ho na le mefuta e mengata eo u ka e bitsang bakeng sa tharollo e "qhekellang". 'Me tharollo e bonolo - ho sebelisa karohano ea tlhaho pakeng tsa pele / mesebetsi / poso - ha e bake li-nuances.

'Me, khutlela ho 'foo' ea rona. Ke lokela ho e beha hokae? Pele, poso kapa likarolo? Ho hlakile hore sena se ipapisitse le hore na re hloka liphetho tsa motho ea sebetsang bakeng sa foo. Haeba li le sieo, foo ha ho hlokahale hore li behoe pele kapa poso - likarolo tsena li na le moelelo o khethehileng - ho etsa mesebetsi pele le ka morao ho sehlopha se seholo sa khoutu.

Hona joale karabo ea potso ea "karolo kapa mosebetsi" e theohela ho se seng se ntse se bapala - haeba ho na le mesebetsi moo, u lokela ho e eketsa mesebetsing. Haeba ho na le mesebetsi, o hloka ho theha karolo (esita le ho tsoa mosebetsing o le mong). E re ke u hopotse hore mesebetsi le likarolo ha li sebelisoe ka nako e le 'ngoe.

Ho utloisisa lintho tsa motheo tsa Ansible ho fana ka likarabo tse utloahalang lipotsong tse bonahalang eka ke tsa tatso.

Mesebetsi le mesebetsi (karolo ea bobeli)

Joale ha re buisaneng ka boemo ha u sa tsoa qala ho ngola buka ea ho bapala. U hloka ho etsa foo, bar le baz. Na ke mesebetsi e meraro ee, karolo e le 'ngoe kapa likarolo tse tharo? Ho akaretsa potso: u lokela ho qala ho ngola likarolo ka nako efe? Molemo oa ho ngola mesebetsi ke ofe ha o khona ho ngola mesebetsi?... Karolo ke efe?

E 'ngoe ea liphoso tse kholo (ke se ke buile ka sena) ke ho nahana hore karolo e tšoana le mosebetsi laebraring ea lenaneo. Tlhaloso ea tšebetso e akaretsang e shebahala joang? E amohela likhang, e sebelisana le lisosa, e fana ka litla-morao, 'me e khutlisetsa boleng.

Jwale, hloko. Ho ka etsoa eng ho tsoa ho see karolong eo? U lula u amohelehile ho bitsa litla-morao, sena ke moelelo oa Ansible eohle - ho theha litla-morao. E na le lisosa tsa lehlakore? Ea mantlha. Empa ka "feta boleng 'me u bo khutlisetse" - ke moo e sa sebetseng. Taba ea pele, u ke ke ua fetisetsa boleng ho karolo. O ka seta phetoho ea lefats'e ka boholo ba papali ea bophelo bohle karolong ea vars bakeng sa karolo eo. U ka seta phetoho ea lefats'e ka nako ea bophelo bohle ka har'a karolo eo. Kapa esita le ka nako ea bophelo ea libuka tsa ho bapala (set_fact/register). Empa u ka se khone ho ba le "liphetoho tsa lehae". U ke ke ua "nka boleng" le "ho bo khutlisetsa".

Ntho e ka sehloohong e latela ho tloha ho sena: u ke ke ua ngola ntho e itseng ho Ansible ntle le ho baka litla-morao. Ho fetola mefuta-futa ea lefats'e kamehla ke phello e lehlakoreng bakeng sa mosebetsi. Ho Rust, mohlala, ho fetola phetoho ea lefats'e ke unsafe. Mme ho Ansible ke eona feela mokhoa oa ho susumetsa boleng ba karolo. Hlokomela mantsoe a sebelisitsoeng: eseng "feta boleng ba karolo", empa "fetola boleng boo karolo e e sebelisang". Ha ho khethollo lipakeng tsa mesebetsi. Ha ho na karohano lipakeng tsa mesebetsi le mesebetsi.

Kakaretso: karolo ha se mosebetsi.

Ke eng e ntle ka karolo eo? Taba ea pele, karolo e na le litekanyetso tsa kamehla (/default/main.yaml), ea bobeli, karolo e na le li-directory tse eketsehileng bakeng sa ho boloka lifaele.

Melemo ea boleng ba kamehla ke efe? Hobane piramite ea Maslow, tafole e sothehileng ea Ansible ea lintho tse tlang pele tse sa tšoaneng, karolo e sa lekanyetsoang ke eona e tlang pele ka ho fetisisa (ho tlosa li-parameter tsa taelo ea Ansible). Sena se bolela hore haeba o hloka ho fana ka boleng ba kamehla mme o sa ts'oenyehe ka bona ho feta boleng ho tsoa lethathamong kapa mefuta e fapaneng ea sehlopha, mefokolo ea karolo ke eona feela sebaka se u loketseng. (Ke bua leshano hanyenyane - ho na le tse ling |d(your_default_here), empa haeba re bua ka libaka tse emeng, ke mefokolo feela).

Ke eng hape e ntle ka likarolo? Hobane ba na le li-catalogs tsa bona. Tsena ke li-directory bakeng sa mefuta e fapaneng, ka bobeli e sa fetoheng (ke hore, e baloang bakeng sa karolo) le matla (ho na le paterone kapa anti-pattern - include_vars mmoho le {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Tsena ke li-directory tsa files/, templates/. Hape, e u lumella ho ba le li-module le li-plugins tsa hau (library/). Empa, ha ho bapisoa le mesebetsi e bukeng ea ho bapala (eo hape e ka bang le sena sohle), molemo o le mong mona ke hore lifaele ha li lahleloe ka har'a qubu e le 'ngoe, empa ke liqubu tse' maloa tse arohaneng.

Lintlha tse ling hape: o ka leka ho theha likarolo tse tla fumaneha bakeng sa ho sebelisoa hape (ka sehlopha sa linaleli). Ka ho fihla ha likoleke, kabo ea karolo e ka nkoa e batla e lebetsoe.

Kahoo, likarolo li na le likarolo tse peli tsa bohlokoa: li na le li-default (tšobotsi e ikhethang) 'me li u lumella ho theha khoutu ea hau.

Ho khutlela potsong ea pele: nako ea ho etsa mesebetsi le nako ea ho etsa mesebetsi? Mesebetsi ka har'a buka ea ho bapala hangata e sebelisoa e le "khomaretsi" pele / ka mor'a mesebetsi, kapa e le karolo ea mohaho o ikemetseng (joale ha hoa lokela ho ba le likarolo tsa khoutu). Qubu ea mesebetsi e tloaelehileng e tsoakiloeng le likarolo ke bohlasoa bo hlakileng. U lokela ho khomarela mokhoa o itseng - ebang ke mosebetsi kapa karolo. Likarolo li fana ka karohano ea mekhatlo le li-default, mesebetsi e u lumella ho bala khoutu kapele. Hangata, khoutu e "emeng" (ea bohlokoa le e rarahaneng) e kenngoa likarolong, 'me mangolo a thusang a ngoloa ka mokhoa oa mosebetsi.

Hoa khoneha ho etsa import_role e le mosebetsi, empa haeba u ngola sena, joale u itokisetse ho hlalosa maikutlo a hau a botle hore na ke hobane'ng ha u batla ho etsa sena.

'Mali ea masene a ka re likarolo li ka ama likarolo, likarolo li ka ba le litšepe ka galaxy.yml, hape ho na le ntho e mpe le e mpe. include_role - Ke u hopotsa hore re ntse re ntlafatsa tsebo ea motheo ea Ansible, eseng ka li-gymnastics tsa setšoantšo.

Basebelisi le mesebetsi

Ha re buisaneng ka ntho e 'ngoe e totobetseng: batšoasi. Ho tseba ho li sebelisa ka nepo ke hoo e batlang e le bonono. Phapang ke efe pakeng tsa setšoari le se hula?

Kaha re hopola lintho tsa motheo, mohlala ke ona:

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

Batsamaisi ba karolo ba fumaneha ho rolename/handler/main.yaml. Libapali li phehisana khang lipakeng tsa barupeluoa bohle: mesebetsi ea pele/kamoso e ka hula batšoantšisi, 'me karolo e ka hula batšoantšisi papaling. Leha ho le joalo, mehala ea "cross-role" ho batho ba sebetsanang le eona e baka wtf e ngata ho feta ho pheta ts'ebetso e sa reng letho. (Ntho e 'ngoe ea mekhoa e metle ke ho leka ho se phete mabitso a batho ba sebetsang).

Phapang e kholo ke hore mosebetsi o lula o etsoa (ka mokhoa o sa tsotelleng) (plus/minus tags le when), le motshwari - ka phetoho ea mmuso (tsebisa mollo feela haeba o fetotsoe). See se bolelang? Ka mohlala, taba ea hore ha u qala hape, haeba ho ne ho se na phetoho, joale ho ke ke ha e-ba le mohlokomeli. Ke hobane’ng ha ho ka ’na ha hlokahala hore re phethe sebatli ha ho se na phetoho mosebetsing oa ho hlahisa? Ka mohlala, hobane ntho e ile ea robeha 'me ea fetoha, empa ho bolaoa ha hoa ka ha fihla ho mohlokomeli. Ka mohlala, hobane marang-rang a ne a theohile ka nakoana. Setlhophiso se fetohile, ts'ebeletso ha e so qaloe bocha. Nakong e tlang ha u e qala, tlhophiso ha e sa fetoha, 'me tšebeletso e sala le mofuta oa khale oa config.

Boemo bo nang le config bo ke ke ba rarolloa (ka ho toba, u ka iketsetsa protocol e khethehileng ea ho qala bocha ka lifolakha tsa faele, joalo-joalo, empa sena ha se sa 'nete ka mokhoa ofe kapa ofe'). Empa ho na le pale e 'ngoe e tloaelehileng: re kentse kopo, ra e rekota .service-file, 'me joale rea e batla daemon_reload и state=started. 'Me sebaka sa tlhaho sa sena se bonahala e le mohlokomeli. Empa haeba u sa e etse mohlokomeli empa e le mosebetsi qetellong ea lenane la mesebetsi kapa karolo, e tla etsoa ka mokhoa o sa tsotelleng nako le nako. Leha buka ea ho bapala e robehile bohareng. Sena ha se rarolle bothata bo qalileng ho hang (ha o khone ho etsa mosebetsi ka tšobotsi e qalileng hape, hobane ho hloka matla ho lahlehile), empa ho hlile hoa hlokahala ho etsa boemo = ho qala, botsitso ka kakaretso ba libuka tsa ho bapala boa eketseha, hobane palo ea likhokahano le boemo bo matla bo fokotseha.

Ntho e 'ngoe e ntle ea mohlokomeli ke hore ha e koale tlhahiso. Ha ho na liphetoho - ha ho na ho tloloa ho eketsehileng kapa ho lokile ho sephetho - ho bonolo ho bala. Hape ke thepa e mpe - haeba u fumana typo mosebetsing o entsoeng ka mokhoa o ts'oanang qalong, joale bahlokomeli ba tla bolaoa feela ha ba fetoloa, ke hore. tlasa maemo a mang - ka seoelo haholo. Ka mohlala, ka lekhetlo la pele bophelong ba ka lilemo tse hlano hamorao. 'Me, ha e le hantle, ho tla ba le typo ka lebitso mme ntho e' ngoe le e 'ngoe e tla robeha. 'Me haeba u sa li mathe khetlo la bobeli, ha ho na phetoho.

Ka thoko, re hloka ho bua ka boteng ba mefuta-futa. Ka mohlala, haeba u tsebisa mosebetsi ka loop, ho tla ba le eng ho mefuta-futa? U ka hakanya ka tlhahlobo, empa ha se kamehla e leng ntho e nyenyane, haholo-holo haeba mefuta e fapaneng e tsoa libakeng tse fapaneng.

... Kahoo bahlokomeli ha ba na thuso ebile ba na le mathata ho feta kamoo ba shebahalang kateng. Haeba u ka ngola ntho e ntle (ntle le li-frills) ntle le bahlokomeli, ho molemo ho e etsa ntle le bona. Haeba e sa sebetse hantle, ho molemo le bona.

'Mali ea senyang o bontša ka nepo seo re sa kang ra buisana ka sona listenhore motshwari a ka letsetsa tsebiso bakeng sa motshwari e mong, hore motshwari a ka kenyelletsa import_tasks (e ka etsang include_role with with_items), hore the handler system in Ansible is Turing-complete, hore handlers from include_role intersect ka tsela e bohelehele le handlers from play, joalo-joalo .d. - sena sohle ka ho hlaka ha se "lintho tsa motheo").

Leha ho na le WTF e le 'ngoe eo e hlileng e leng tšobotsi eo u hlokang ho e hopola. Haeba mosebetsi oa hau o phethiloe ka delegate_to mme e tsebisitse, ebe motshwari o tsamaellanang o phethwa ntle le delegate_to, ke. ho moamoheli moo papali e abeloang teng. (Le hoja moetsi, ehlile, a ka ba le delegate_to E tshoanang).

Ka thoko, ke batla ho bua mantsoe a seng makae mabapi le likarolo tse ka sebelisoang hape. Pele likoleke li hlaha, ho ne ho e-na le maikutlo a hore u ka etsa mesebetsi ea bokahohle e ka bang teng ansible-galaxy install mme a tsamaya. E sebetsa ho li-OS tsohle tsa mefuta eohle maemong ohle. Kahoo, maikutlo a ka: ha e sebetse. Karolo efe kapa efe e nang le boima include_vars, e ts'ehetsang linyeoe tse 100500, e reretsoe ho ba mohohlong oa litšitšili tsa sekhutlo. Li ka koaheloa ka liteko tse kholo, empa joalo ka tlhahlobo efe kapa efe, ekaba u na le sehlahisoa sa Cartesian sa boleng ba ho kenya le ts'ebetso e felletseng, kapa u na le "maemo a mang a koahetsoeng." Maikutlo a ka ke hore ho molemo haholo haeba karolo e lekana (cyclomatic complexity 1).

Li-ifs tse fokolang (tse hlakileng kapa tse hlalosang - ka mokhoa when kapa sebopeho include_vars ka sete ea mefuta-futa), karolo e betere. Ka linako tse ling u tlameha ho etsa makala, empa, kea pheta, tse fokolang tse teng, li molemo. Kahoo ho bonahala eka ke karolo e ntle le galaxy (e sebetsa!) E nang le sehlopha sa when e ka ba ea bohlokoa ho feta karolo ea "motho" mesebetsing e mehlano. Nako eo karolo ea sehlopha sa linaleli e leng betere ke ha u qala ho ngola ntho e itseng. Nako eo e ntseng e mpefala ke ha ntho e robeha 'me u e-na le lipelaelo tsa hore ke ka lebaka la "karolo le sehlopha sa linaleli". Ua e bula, 'me ho na le li-inclusions tse hlano, maqephe a robeli a mosebetsi le stack when'Ov ... 'Me re hloka ho utloisisa sena. Sebakeng sa mesebetsi e 5, lethathamo la mela eo ho seng letho le ka senyang.

Likarolong tse latelang

  • Hanyane ka inventory, mefuta e fapaneng ea lihlopha, host_group_vars plugin, hostvars. Mokhoa oa ho tlama lefito la Gordian le spaghetti. Mefuta e fapaneng ea scope le precedence, Ansible memory model. "Joale re boloka lebitso la mosebelisi bakeng sa database?"
  • jinja: {{ jinja }} - nosql nosense nosense soft plasticine. E hohle, le moo o sa e lebellang. Hanyenyane ka !!unsafe le yaml e monate.

Source: www.habr.com

Eketsa ka tlhaloso