Aasaaska macquulka ah, kuwaas oo la'aantood ay buugaagtaadu noqon doonaan buro baasto dhegdheg leh

Waxaan sameeyaa dib u eegis badan oo ku saabsan koodka macquulka ah ee dadka kale oo wax badan ayaan qoraa. Inta lagu guda jiro falanqaynta khaladaadka (labadaba kuwa kale iyo kuwa aan leeyahay), iyo sidoo kale tiro waraysiyo ah, waxaan ogaaday qaladka ugu weyn ee isticmaalayaasha macquulka ah ay sameeyaan - waxay galaan waxyaabo adag oo aan baraneynin kuwa aasaasiga ah.

Si loo saxo caddaalad-darradan caalamiga ah, waxaan go'aansaday in aan horudhac u qoro kuwa hore u yaqaanay. Waxaan kaaga digayaa, kani maaha nin nin laga sheegayo, kani waa akhrin dheer oo xaraf badan oo aan sawiro lahayn.

Heerka la filayo ee akhristuhu waa in dhowr kun oo xariiq oo yamla ah horay loo qoray, wax ayaa hore u soo saaray, laakiin "si kastaba ha ahaatee wax walba waa qalloocan."

Magacyada

Khaladka ugu weyn ee isticmaalaha macquulka ah ayaa ah inuusan garanayn waxa loo yaqaan. Haddii aadan aqoon magacyada, ma fahmi kartid waxa dukumeentigu leeyahay. Tusaale nool: inta waraysiga lagu jiro, qof aad mooddo in uu yidhi wax badan ayuu ku qoray Ansible, waxa uu ka jawaabi waayay su'aasha ah "waa maxay curiye ka kooban yahay buug-ciyaareed?" Oo markii aan soo jeediyay in "jawaabtu waxay ahayd in la filayo in buug-ciyaareedka uu ka kooban yahay ciyaarta," faallooyinka xunxun "ma isticmaalno" ayaa raacay. Dadku waxay ku qoraan Lacag macquul ah mana isticmaalaan ciyaarta. Dhab ahaantii way isticmaalaan, laakiin ma garanayaan waxa ay tahay.

Haddaba aan ku bilowno wax fudud: waxa loo yaqaan. Waxaa laga yaabaa inaad tan ogtahay, ama ma laga yaabaa inaadan ogayn, sababtoo ah ma aadan dheg jalaq u siin markaad akhrinayso dukumentiga.

Buug-ciyaareedka macquulka ah ayaa fuliya buugga ciyaarta. Buug-ciyaareedku waa fayl wata yml/yaml kordhinta, kaas oo ay ku jiraan wax sidan oo kale ah:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Waxaan mar hore ogaanay in dhammaan faylkan uu yahay buug-ciyaareed. Waxaan tusi karnaa meesha doorarka iyo meelaha ay hawshu ku jirto. Laakin aaway ciyaartu? Maxayse ku kala duwan yihiin ciyaarta iyo doorka ama buug-ciyaareedka?

Waxaas oo dhan waxay ku jiraan dukumentiyada. Wayna tabayaan. Bilawga - sababtoo ah waxaa jira wax badan mana xasuusan doontid wax walba hal mar. Khibrad u leh - sababtoo ah "waxyaabo fudud". Haddii aad waayo-arag tahay, dib u akhri boggagan ugu yaraan hal mar lixdii biloodba mar, koodkaagu waxa uu noqonayaa hogaamiye fasalka.

Haddaba, xasuusnoow: Buuga ciyaartu waa liis ka kooban ciyaar iyo import_playbook.
Tani waa hal riwaayad:

- hosts: group1
  roles:
    - role1

tanina sidoo kale waa riwaayad kale:

- hosts: group2,group3
  tasks:
    - debug:

Waa maxay ciyaartu? Maxay tahay iyada?

Ciyaartu waa qayb muhiim ah oo buug-ciyaareed ah, sababtoo ah ciyaarista iyo ciyaarista kaliya waxay la xidhiidhaa liiska doorarka iyo/ama hawlaha liiska martida loo yahay oo ay tahay in lagu fuliyo. Qoto dheer ee dukumentiyada waxaad ka heli kartaa xus delegate_to, Plugins search local, network-cli- settings , bood martida, iwm. Waxay kuu oggolaanayaan inaad wax yar ka beddesho meesha hawlaha lagu qabto. Laakin, iska ilow. Mid kasta oo ka mid ah xulashooyinkan xariifnimada leh waxay leeyihiin adeegsi gaar ah, oo hubaal maaha kuwo caalami ah. Oo waxaan ka hadlaynaa waxyaabaha aasaasiga ah ee qof kastaa ay tahay inuu ogaado oo isticmaalo.

Haddii aad rabto inaad sameyso "wax" "meel", waxaad qortaa ciyaarta. Door maaha. Ma aha door la modules iyo ergooyinka. Waad qaadanaysaa oo qor ciyaarta. Taas oo, goobta martida loo yahay aad ku taxdo meesha laga fulinayo, iyo doorarka/hawlaha - waxa la fulinayo.

Fudud, sax? Sidee si kale u ahaan kartaa?

Mid ka mid ah waqtiyada dabeecadda ah ee dadku ay rabaan inay tan ku sameeyaan maahan ciyaartu waa "doorka wax walba dejinaya." Waxaan jeclaan lahaa in aan yeesho door isku dubarida labada server ee nooca koowaad iyo server-yada nooca labaad.

Tusaalaha qadiimiga ah waa la socodka. Waxaan jeclaan lahaa in aan yeesho door la socod oo habayn doona la socodka. Doorka la socodka waxa loo xilsaaray la socodka dadka martida loo yahay (sida ku cad ciyaarta). Laakin waxa soo baxday in la socodka aanu u baahanahay in aanu gaadhsiino xidhmooyinka martigaliyayaasha aanu la socono. Waa maxay sababta aan loo isticmaalin ergada? Waxaad sidoo kale u baahan tahay inaad dejiso iptables. ergo? Waxaad sidoo kale u baahan tahay inaad qorto/saxdo habaynta DBMS si aad awood ugu yeelato la socodka. ergay! Oo haddii hal-abuurku maqan yahay, markaa waxaad samayn kartaa wafdi include_role ee loop buul leh oo isticmaalaya shaandhayn khiyaano leh oo ku jira liiska kooxaha, iyo gudaha include_role wax badan ayaad qaban kartaa delegate_to mar kale. Anaguna waanu tagno...

Rabitaanka wanaagsan - in la yeesho hal door la socodka, kaas oo "wax walba sameeya" - waxay nagu hogaamisaa cadaabta cad taas oo inta badan ay jirto hal dariiqo oo kaliya: in dib loo qoro wax kasta oo eber ah.

Halkee ayuu khaladku ka dhacay halkan? Daqiiqadii aad ogaatay in si aad hawsha "x" ugu qabato martigeliyaha X waa inaad tagtaa martigeliyaha Y oo aad ku sameyso "y" halkaas, waa inaad sameyso jimicsi fudud: tag oo qor ciyaarta, kaas oo martigeliyaha Y uu sameeyo y. Wax ha ku darin "x", laakiin meel xoq ka qor. Xataa doorsoomayaal adag.

Waxay u muuqataa in wax kasta oo ku jira cutubyada kore si sax ah loo sheegay. Laakiin tani maaha kiiskaaga! Sababtoo ah waxaad dooneysaa inaad qorto kood dib loo isticmaali karo oo ah ENGAL iyo maktabad u eg, waxaadna u baahan tahay inaad raadiso hab ku saabsan sida loo sameeyo.

Tani waa halka uu ku dhuunto khalad kale oo halis ah. Qalad ka dhigay mashruucyo badan oo si dulqaad leh loo qoray ( way fiicnaan kartaa, laakiin wax walba way shaqeeyaan oo way fududahay in la dhammeeyo) oo noqday cabsi dhammaystiran oo aan xitaa qoraagu garan karin. Way shaqaysaa, laakiin ilaahay haku xafido wax ka beddel.

Khaladku waa: doorku waa shaqada maktabadda. Isbarbardhiggani waxa uu burburiyay bilow wanaagsan oo aad u badan oo ay si fudud u tahay murugo in la daawado. Doorku maaha shaqo maktabadeed. Ma xisaabin karto, mana samayn karto go'aamo heer-ciyaareed ah. I xasuusi waxa go'aannada ciyaara ay sameeyaan?

Mahadsanid, sax baad tahay Ciyaartu waxay gaartaa go'aan (si sax ah, waxay ka kooban tahay macluumaad) ku saabsan hawlaha iyo doorarka lagu qabanayo martida loo yahay.

Haddii aad go'aankan u igmato door, oo xitaa xisaabinta, waxaad naftaada ku duminaysaa (iyo midka isku dayaya inuu kala saaro code-kaaga) jiritaan xun. Doorku ma go'aamiyo meesha lagu qabanayo. Go'aankan waxaa lagu gaaray ciyaar. Doorku wuxuu sameeyaa waxa loo sheego, halka loo sheego.

Waa maxay sababta ay khatarta u tahay in la program-gareeyo Aansible iyo sababta COBOL uga fiican yahay Maansada waxaynu cutubka kaga hadli doonaa doorsoomayaasha iyo jinka. Hadda, aan nidhaahno hal shay - mid kasta oo ka mid ah xisaabintaadu waxay ka tagtaa raad aan la tirtirin oo isbeddel ah oo ku yimaada doorsoomayaasha caalamiga ah, adiguna waxba kama qaban kartid. Isla markii ay labadii "raad" is-dhex-mareen, wax walba way baxeen.

Fiiro gaar ah u leh qulqulka: doorku wuxuu hubaal ahaan saameyn karaa socodka xakamaynta. Cun delegate_to waxayna leedahay adeegsi macquul ah. Cun meta: end host/play. Laakiin! Xusuusnow inaan barno aasaaska? Waa la ilaaway delegate_to. Waxaan ka hadleynaa koodka ugu fudud uguna quruxda badan. Kee baa fudud in la akhriyo, fududahay in la qoro, fududahay in la saxo, si sahlan loo tijaabiyo oo ay fududahay in la dhammaystiro. Haddaba, mar kale:

ciyaar iyo ciyaar kaliya ayaa go'aamisa martigeliyayaasha waxa la fulinayo.

Qaybtan, waxaynu wax kaga qabanay mucaaradnimada ciyaar iyo doorka. Hadda aan ka hadalno hawlaha iyo xiriirka doorka.

Hawlaha iyo Doorarka

Tixgeli ciyaarta:

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

Aynu nidhaahno waxaad u baahan tahay inaad sameyso foo. Waxayna u egtahay foo: name=foobar state=present. Halkee baan ku qoraa tan? ka hor? boostada? Abuur door?

...Oo xaggee hawshu aadeen?

Waxaan ku bilaabaynaa aasaaska mar kale - aaladda ciyaarta. Haddii aad ku sabbayso arrintan, ma isticmaali kartid ciyaarta saldhig u ah wax kasta oo kale, natiijadaaduna waxay noqon doontaa "gariir".

Qalabka ciyaarta: dardaaranka martida loo yahay, habaynta ciyaarta lafteeda iyo hawlihii hore, hawlaha, doorarka, qaybaha shaqada kadib. Halbeegyada soo haray ee ciyaarta muhiim nooguma aha hadda.

Siday u kala horreeyaan qaybahooda oo leh hawlo iyo doorar: pre_tasks, roles, tasks, post_tasks. Maadaama si macne ahaan loo kala horreeyo fulinta uu u dhaxeeyo tasks ΠΈ roles ma cadda, markaa hababka ugu fiican ayaa sheegaya in aanu ku darayno qayb tasks, kaliya haddii kale roles... Haddii ay jirto roles, ka dibna dhammaan hawlaha ku lifaaqan waxaa la dhigayaa qaybo pre_tasks/post_tasks.

Waxa hadhay oo dhan waa in wax waliba si macno ahaan u cad yihiin: marka hore pre_tasks, Markaa roles, Markaa post_tasks.

Laakiin wali kamaanu jawaabin su'aasha: aaway wicitaankii moduleka? foo qor? Ma waxaan u baahanahay inaan u qorno kaalin dhan module kasta? Mise waxaa dhaanta in door qaro weyn loo yeesho wax walba? Oo haddaanay door ahayn, markaa halkee baan wax ku qoraa - ka hor ama boostada?

Haddii aysan jirin jawaab macquul ah oo ku saabsan su'aalahan, markaa tani waa calaamad muujinaysa dareen la'aan, taas oo ah, isla "asaska gariiraya." Aynu ogaano. Marka hore, su'aal ammaan: Haddii ciyaartu leedahay pre_tasks ΠΈ post_tasks (oo hawl iyo door toona ma jiraan), markaas wax ma jabi karaan haddii aan hawsha ugu horreysa ka soo baxo post_tasks Waxaan u wareejin doonaa dhamaadka pre_tasks?

Dabcan, ereyada su'aasha waxay tilmaamayaan inay jabin doonaan. Laakiin maxaa dhab ah?

... Gacan-qablayaasha. Aqrinta aasaaska waxay muujineysaa xaqiiqo muhiim ah: dhammaan maamulayaasha si toos ah ayaa loo daadiyaa qayb kasta ka dib. Kuwaas. dhammaan hawlaha ka pre_tasks, ka dibna dhammaan maamulayaasha la ogeysiiyay. Kadibna dhammaan doorarka iyo dhammaan maamulayaasha lagu wargeliyay doorarka waa la fuliyay. Kadib post_tasks iyo maamulayaashooda.

Sidaa darteed, haddii aad ka soo jiidato hawl post_tasks Π² pre_tasks, ka dibna suurtogal ah inaad fuliso ka hor inta aan la dilin maamulaha. tusaale ahaan, haddii la galo pre_tasks serverka webka waa la rakibay oo la habeeyey, iyo post_tasks wax baa loo soo diraa, dabadeed hawshan u wareeji qaybta pre_tasks Waxay u horseedi doontaa xaqiiqda ah in waqtiga "diridda" server-ku uusan weli shaqeyn doonin wax walbana way jebi doonaan.

Hadda aan mar kale ka fikirno, maxaan ugu baahanahay pre_tasks ΠΈ post_tasks? Tusaale ahaan, si loo dhamaystiro wax kasta oo lagama maarmaan ah (ay ku jiraan kuwa gacanta ku haya) ka hor inta aan la buuxin doorka. A post_tasks waxay noo ogolaan doontaa inaan la shaqeyno natiijooyinka fulinta doorarka (ay ku jiraan kuwa gacanta ku haya).

Khabiir caqli badan ayaa noo sheegi doona waxa ay tahay. meta: flush_handlers, laakiin sababta aan ugu baahanahay flush_handlers haddii aan ku tiirsanaan karno nidaamka fulinta qaybaha ciyaarta? Waxaa intaa dheer, isticmaalka meta: flush_handlers waxay nagu siin karaan waxyaabo aan la filayn oo wata maamulayaal nuqul ah, oo nasiinaya digniino qariib ah marka la isticmaalo when Ρƒ block iwm. Sida ugu wanaagsan ee aad u garan karto waxa macquulka ah, ayaa nuances badan oo aad magacaabi kartaa xal "khayaano" ah. Iyo xal fudud - iyadoo la adeegsanayo qaybinta dabiiciga ah ee u dhexeeya doorarka hore / ka dib - ma keento nuances.

Oo, ku noqo 'foo'yagii. Halkee baan dhigaa? Kahor, boosaska ama doorarka? Sida iska cad, tani waxay kuxirantahay haddii aan u baahanahay natiijooyinka maamulaha foo. Haddii aysan halkaas joogin, markaa foo uma baahna in la dhigo ka hor ama ka dib - qaybahani waxay leeyihiin macne gaar ah - fulinta hawlaha ka hor iyo ka dib qaybta muhiimka ah ee code.

Hadda jawaabta su'aasha "doorka ama hawsha" waxay hoos ugu dhacdaa wixii horeba u jiray - haddii ay jiraan hawlo halkaas, waxaad u baahan tahay inaad ku darto hawlaha. Haddii ay jiraan doorar, waxaad u baahan tahay inaad door abuurto (xitaa hal hawl). Aan ku xasuusiyo in hawlaha iyo doorarka aan isku mar la isticmaalin.

Fahamka aasaasiga ah ee Aansible waxay siinaysaa jawaabo macquul ah su'aalaha dhadhanka u muuqda.

Hawlaha iyo doorarka (qaybta labaad)

Hadda aan ka wada hadalno xaaladda marka aad hadda bilaabayso inaad qorto buug-ciyaareed. Waxaad u baahan tahay inaad sameyso foo, bar iyo baz. Saddexdan hawlood ma hal door baa mise saddex door? Si aan su'aasha u soo koobo: goorma ayaad bilaabaysaa qorista doorarka? Waa maxay faa'iidada qorista doorarka marka aad qori kartid hawlo?... Waa maxay door?

Mid ka mid ah khaladaadka ugu waaweyn (waxaan horayba uga hadlay arrintan) waa in aan u malaynayo in doorku yahay sida shaqada maktabadda barnaamijka. Sidee bay u egtahay sharraxaadda shaqada guud? Waxay aqbashaa doodaha gelinta, waxay la falgashaa sababaha dhinaceeda, waxay samaysaa waxyeellooyin, waxayna soo celisaa qiime.

Hadda, fiiro gaar ah. Maxaa laga qaban karaa tan doorka? Had iyo jeer waa lagugu soo dhaweynayaa inaad wacdo dhibaatooyinka soo raaca, tani waa nuxurka guud ahaan macquulka ah - si loo abuuro waxyeelo. Ma leedahay sababo dhinaca kale ah? Dugsiga Hoose. Laakin "ku gudub qiime oo soo celi" - taasi waa meesha aysan shaqaynayn. Marka hore, door uma gudbi kartid qiimo. Waxaad dejin kartaa doorsoome caalami ah oo leh cabbirka nolosha ee ciyaarta qaybta vars ee doorka. Waxaad dejin kartaa doorsoome caalami ah oo inta aad nooshahay ku dhex ciyaari karto doorka. Ama xitaa cimriga buugaagta ciyaarta (set_fact/register). Laakiin ma yeelan kartid "doorsoomayaasha maxalliga ah". Ma qaadan kartid "qiimo" iyo "soo celin".

Waxa ugu weyni waa tan: wax kuma qori kartid Ansible adigoon keenin waxyeelo. Beddelidda doorsoomayaasha caalamiga ah had iyo jeer waa saameyn dhinaca shaqada ah. Rust, tusaale ahaan, beddelka doorsoome caalami ah waa unsafe. Iyo in Ansible waa habka kaliya ee lagu saameynayo qiyamka doorka. Ogsoonow ereyada la isticmaalay: ha u gudbin "qiimaha doorka", laakiin "beddel qiyamka doorku isticmaalo". Ma jirto go'doon u dhexeeya doorarka. Ma jiro go'doon u dhexeeya hawlaha iyo doorarka.

Wadarta: door ma aha shaqo.

Doorka maxaa ku wanaagsan? Marka hore, doorku wuxuu leeyahay qiimeyaal aan caadi ahayn (/default/main.yaml), marka labaad, doorku waxa uu leeyahay hagayaal dheeraad ah oo lagu kaydiyo faylasha.

Waa maxay faa'iidooyinka qiyamka aan caadiga ahayn? Sababtoo ah Ahraamta Maslow, Miisaska leexsan ee mudnaanaha is beddelka ah, gefafka doorku waa mudnaanta ugu hooseeya (laga jaray cabbirrada xariiqda amar ee macquulka ah). Tani waxay ka dhigan tahay in haddii aad u baahan tahay inaad bixiso qiyamka caadiga ah oo aadan ka welwelin iyaga oo ka gudbaya qiyamka alaabada ama doorsoomayaasha kooxeed, markaa door-xumada doorku waa meesha kaliya ee kugu habboon. (Wax yar baan been sheegayaa - waxaa jira qaar badan |d(your_default_here), laakiin haddii aan ka hadalno meelaha taagan, ka dibna kaliya door cilladaysan).

Maxaa kale oo ku fiican doorarka? Sababtoo ah waxay leeyihiin buug-gacmeedyo u gaar ah. Kuwani waa hagayaal doorsoomayaal, labadaba joogto ah (ie. loo xisaabiyay doorka) iyo firfircoon (waxaa jira hannaan ama qaab lid ku ah - include_vars wada jir {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.) Kuwani waa buug-tusaha loogu talagalay files/, templates/. Sidoo kale, waxay kuu ogolaaneysaa inaad haysato modules iyo plugins kuu gaar ah (library/). Laakiin, marka la barbardhigo hawlaha buug-ciyaareedka (kaas oo sidoo kale yeelan kara waxaas oo dhan), faa'iidada kaliya ee halkan ku jirta ayaa ah in faylalka aan lagu daadin hal raso, laakiin dhowr qaybood oo kala duwan.

Hal faahfaahin dheeraad ah: waxaad isku dayi kartaa inaad abuurto doorar diyaar u noqon doona dib-u-isticmaalka (iyada oo loo marayo galaxy). Marka ay timaado ururinta, qaybinta doorka waxaa loo qaadan karaa ku dhawaad ​​la ilaaway.

Sidaa darteed, doorarku waxay leeyihiin laba astaamood oo muhiim ah: waxay leeyihiin cillado (sifo gaar ah) waxayna kuu oggolaanayaan inaad qaabeyso koodkaaga.

Ku soo noqoshada su'aashii asalka ahayd: goorta la qabanayo hawlaha iyo goorta la qabanayo doorarka? Hawsha buug-ciyaareedka waxa inta badan loo isticmaalaa sidii β€œxabag” ka hor/kadib doorarka, ama sidii qayb dhisme oo madax-banaan (markaa waa in aanay jirin wax door ah oo ku jira koodka). Tusmada hawlaha caadiga ah ee lagu daray doorarka waa caajisnimo aan madmadow lahayn. Waa inaad u hoggaansantaa qaab gaar ah - ha ahaato hawl ama door. Doorarku waxay bixiyaan kala soocida hay'adaha iyo khaladaadka, hawluhu waxay kuu oggolaanayaan inaad si dhakhso leh u akhrido koodka. Caadiyan, kood badan oo β€œjoog ah” (muhiim iyo kakan) ayaa lagu dhejiyaa doorarka, qoraallada kaalmuhuna waxay u qoran yihiin qaab hawleed.

Waa suurtagal in la sameeyo import_role hawl ahaan, laakiin haddii aad tan qorto, markaa u diyaargarow inaad u sharaxdo dareenkaaga quruxda sababta aad u rabto inaad tan sameyso.

Akhristaha caqli-gal ah wuxuu odhan karaa doorarku waxay keeni karaan doorar, doorarka waxay yeelan karaan ku-tiirsanaan iyada oo loo marayo galaxy.yml, sidoo kale waxaa jira cabsi iyo cabsi badan. include_role - Waxaan ku xasuusinayaa inaan horumarinayno xirfadaha aasaasiga ah ee macquulka ah, oo aan ahayn jimicsiga sawirka.

Hagayaasha iyo hawlaha

Aynu ka wada hadalno shay kale oo cad: maamulayaasha. Ogaanshaha sida saxda ah ee loo isticmaalo waxay ku dhowdahay farshaxan. Waa maxay faraqa u dhexeeya maamule iyo jiidi?

Maadaama aan xasuusanayno aasaaska, halkan waa tusaale:

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

Hawl-wadeennada doorku waxay ku yaalliin magaca-roole/maareeyaha/main.yaml. Xakameeyayaashu waxay ku wada sheekaysanayaan dhammaan ka qaybgalayaasha ciyaarta: hore/hawlaha ka dambeeya waxay soo jiidan karaan hawl-wadeenada, doorkuna wuxuu ka soo jiidan karaa maamulayaasha ciyaarta. Si kastaba ha ahaatee, wicitaanada "dowrka-isku-tallaabta" ee loo wacay maamulayaasha waxay keenaan wtf aad uga badan marka loo eego ku celcelinta hawl-wadeenka fudud. (Wax kale oo ka mid ah hababka ugu fiican ayaa ah in la isku dayo in aan lagu celin magacyada maamulayaasha).

Farqiga ugu weyni waa in hawsha had iyo jeer loo fuliyo (dempotently) ( lagu daray / laga jaray tags iyo when), iyo maamulaha - isbeddelka gobolka (ogaysii dabka kaliya haddii la bedelay). Maxay tani ka dhigan tahay? Tusaale ahaan, xaqiiqda ah in marka aad dib u bilowdo, haddii aysan jirin wax isbeddel ah, ka dibna ma jiri doono maamule. Maxay noqon kartaa in aan u baahanahay in aan fulino maamulaha iyada oo aysan jirin wax isbeddel ah oo ku yimid hawsha abuurista? Tusaale ahaan, sababtoo ah wax jabay oo isbedelay, laakiin dilku ma gaadhin maamulaha. Tusaale ahaan, sababtoo ah shabakada ayaa si ku meel gaar ah u dhacday. Habayntu waa is bedeshay, adeega dib looma bilaabin. Marka xigta ee aad bilowdo, habayntu waxba isma beddelayso, adeegguna waxa uu ku sii jirayaa noocii hore ee habaynta.

Xaaladda qaabeynta lama xallin karo (si sax ah, waxaad adigu abuuri kartaa nidaam dib u bilow ah oo gaar ah oo wata calamada faylka, iwm., laakiin tani hadda ma ahan 'macnaha aasaasiga ah' qaab kasta). Laakiin waxaa jirta sheeko kale oo caadi ah: waxaan rakibnay codsiga, duubnay .service-faylka, oo hadda waxaan rabnaa daemon_reload ΠΈ state=started. Meesha dabiiciga ah ee tani waxay u muuqataa inay tahay maamulaha. Laakin haddii aadan ka dhigin qof gacanta ku haya balse ay tahay hawl dhamaadka liiska hawsha ama doorka, markaas waxaa lagu fulin doonaa si adag mar kasta. Xitaa haddii buug-ciyaareedku dhexda ka jabay. Tani ma xalliso dhibaatada dib loo bilaabay gabi ahaanba (ma qaban kartid hawl leh sifada dib loo bilaabay, sababtoo ah idempotency waa lumay), laakiin waxaa hubaal ah in ay mudan tahay in la sameeyo state = bilaabay, xasiloonida guud ee buugaagta ciyaarta ayaa kordheysa, sababtoo ah tirada isku xidhka iyo xaalada firfircooni way yaraataa.

Hantida kale ee wanaagsan ee maamuluhu waa in aysan xirin wax soo saarka. Ma jiraan wax isbeddello ah - ma jiraan wax dheeraad ah oo la booday ama ok gudaha wax soo saarka - fududahay in la akhriyo. Sidoo kale waa hanti taban - haddii aad ka hesho typo hawl si toos ah loo fuliyay ee orodka ugu horreeya, markaa maamulayaasha waxaa la fulin doonaa kaliya marka la beddelo, i.e. xaaladaha qaarkood - aad u dhif ah. Tusaale ahaan, markii ugu horeysay noloshayda shan sano ka dib. Iyo, dabcan, waxaa jiri doona typo magaca wax walbana way jabi doonaan. Oo haddii aadan iyaga mar labaad ordin, ma jiraan wax isbedel ah.

Si gooni ah, waxaan u baahanahay inaan ka hadalno helitaanka doorsoomayaasha. Tusaale ahaan, haddii aad ku ogeysiiso hawl wareeg ah, maxaa ku jiri doona doorsoomayaasha? Waxaad qiyaasi kartaa si falanqeyn ah, laakiin had iyo jeer maaha wax fudud, gaar ahaan haddii doorsoomayaashu ay ka yimaadaan meelo kala duwan.

... Markaa maamulayaashu aad bay uga faa'iidaystaan ​​oo aad bay uga dhib badan yihiin sida ay u muuqdaan. Haddii aad wax u qori karto si qurux badan (la'aan la'aan) la'aanteeyayaal la'aan, way fiicantahay inaad sameyso la'aantood. Haddii aysan si qurux badan u shaqeynin, way ka fiican tahay iyaga.

Akhristaha daxalaystay wuxuu si sax ah u tilmaamayaa in aynaan ka hadlin listenin maamule uu wici karo ogeysiin maamule kale, in maamule uu ku dari karo soo dejinta_tasks (kaaso ku dari kara_role leh_items), in nidaamka maamulaha ee Ansible uu yahay Turing-dhameystiran, in gacan-ku-hayeyaasha ka mid ah_role ay u kala gooshaan qaab cajiib ah oo ay gacanta ku hayaan ciyaarta, iwm .d. - waxaas oo dhan si cad maaha "aasaasaha").

In kasta oo ay jirto hal WTF gaar ah oo runtii ah muuqaal aad u baahan tahay inaad maskaxda ku hayso. Haddii hawshaada lagu fuliyo delegate_to oo ay ogeysiisay, ka dibna maamulaha u dhigma waa la fuliyay iyada oo aan lahayn delegate_to, i.e. on martida loo yahay meesha ciyaarta loo qoondeeyey. (Inkasta oo maamuluhu, dabcan, laga yaabo inuu haysto delegate_to Isku mid ah).

Si gooni ah, waxaan rabaa inaan dhowr kelmadood ka iraahdo doorarka dib loo isticmaali karo. Kahor intaan ururintu soo bixin, waxaa jirtay fikrad ah inaad samayn karto door caalami ah oo noqon kara ansible-galaxy install oo tegey. Wuxuu ku shaqeeyaa dhammaan OS dhammaan noocyada kala duwanaanshiyaha xaalad kasta. Markaa, fikradayda: ma shaqaynayso. Door kasta oo miisaan leh include_vars, taageeridda 100500 kiis, waxay qarka u saaran tahay inay god dheer ku dhacdo dhiqlaha geesaha. Waxaa lagu dabooli karaa imtixaan weyn, laakiin sida imtixaan kasta, ama waxaad haysataa wax soo saarka Kartisia ee qiyamka gelinta iyo guud ahaan shaqada, ama waxaad leedahay "xaalad shakhsiyeed oo daboolan." Fikradayda ayaa ah in ay aad uga fiican tahay haddii doorku yahay mid toosan (cyclomatic complexity 1).

Inta yar (si cad ama caddayn - qaabka when ama qaab include_vars doorsoomayaal doorsoomayaal ah), sida ay doorku u wanaagsan tahay. Mararka qaarkood waa inaad sameysaa laamo, laakiin, waxaan ku celinayaa, inta yar ee jira, ayaa ka sii fiican. Markaa waxay u muuqataa door wanaagsan oo leh galaxy (waxay shaqeysaa!) oo leh farabadan when waxaa laga yaabaa in uu ka yara door bido "qofka u gaarka ah" shan hawlood. Xilliga uu doorka galaxyadu ka fiican yahay waa marka aad bilowdo inaad wax qorto. Waqtiga ay ka sii darayso waa marka ay wax jabaan oo aad ka shakisan tahay inay sabab u tahay "doorka galaxy". Waad furaysaa, oo waxaa jira shan ka mid ah, sideed xaashi hawleed iyo xidhmo whenOo waxaan u baahanahay inaan ogaano tan. Halkii laga heli lahaa 5 hawlood, liis toosan oo aan wax jabin ah ku jirin.

Qaybaha soo socda

  • Wax yar oo ku saabsan alaabada, doorsoomayaasha kooxda, host_group_vars plugin, hostvars. Sida loo xidho guntin Gordian leh spaghetti. Baaxadda iyo doorsoomayaasha mudnaanta leh, Qaabka xusuusta macquulka ah. "Haddaba halkeen ku kaydinnaa magaca isticmaalaha kaydka?"
  • jinja: {{ jinja }} - nosql notype sanka balaastiig jilicsan. Waa meel walba, xitaa meel aadan ka fileyn. Wax yar oo ku saabsan !!unsafe iyo yaml macaan.

Source: www.habr.com

Add a comment