Ansible hauv paus, yam tsis muaj koj phau ntawv ua si yuav yog ib pob ntawm cov nplaum nplaum

Kuv ua ntau qhov kev tshuaj xyuas ntawm lwm tus neeg Ansible code thiab sau ntau kuv tus kheej. Nyob rau hauv chav kawm ntawm kev txheeb xyuas qhov yuam kev (ob leeg lwm tus neeg thiab kuv tus kheej), nrog rau ntau qhov kev xam phaj, kuv pom tau hais tias qhov yuam kev tseem ceeb uas cov neeg siv Ansible ua - lawv nkag mus rau hauv cov khoom nyuaj yam tsis tau paub txog qhov pib.

Txhawm rau kho qhov kev tsis ncaj ncees thoob ntiaj teb no, kuv txiav txim siab sau ib qho kev taw qhia rau Ansible rau cov uas twb paub lawm. Kuv ceeb toom rau koj, qhov no tsis yog rov hais dua ntawm cov txiv neej, qhov no yog qhov ntev ntev nrog cov ntawv ntau thiab tsis muaj duab.

Qhov kev cia siab ntawm tus nyeem ntawv yog tias ntau txhiab kab ntawm yamla twb tau sau, ib yam dab tsi twb nyob rau hauv ntau lawm, tab sis "yuav ua li cas txhua yam yog crooked."

Npe

Qhov yuam kev tseem ceeb uas tus neeg siv Ansible ua yog tsis paub dab tsi hu ua. Yog tias koj tsis paub cov npe, koj tsis tuaj yeem nkag siab tias cov ntaub ntawv hais li cas. Ib qho piv txwv nyob: thaum lub sijhawm xam phaj, tus neeg uas zoo li hais tias nws tau sau ntau hauv Ansible tsis tuaj yeem teb cov lus nug "cov ntsiab lus dab tsi hauv phau ntawv ua si muaj?" Thiab thaum kuv tawm tswv yim tias "cov lus teb xav tau tias phau ntawv ua si muaj kev ua si," cov lus tsis txaus ntseeg "peb tsis siv qhov ntawd" ua raws. Tib neeg sau Ansible rau nyiaj thiab tsis siv ua si. Lawv yeej siv nws, tab sis tsis paub tias nws yog dab tsi.

Yog li cia peb pib nrog qee yam yooj yim: nws hu ua dab tsi? Tej zaum koj paub qhov no, lossis tej zaum koj tsis ua, vim tias koj tsis tau mloog thaum koj nyeem cov ntaub ntawv.

ansible-playbook executes lub playbook. Ib phau ntawv ua si yog cov ntaub ntawv nrog yml / yaml txuas ntxiv, sab hauv uas muaj qee yam zoo li no:

---
- hosts: group1
  roles:
    - role1

- hosts: group2,group3
  tasks:
    - debug:

Peb twb paub lawm hais tias tag nrho cov ntaub ntawv no yog ib tug playbook. Peb tuaj yeem qhia tias lub luag haujlwm nyob qhov twg thiab cov haujlwm nyob qhov twg. Tab sis qhov twg ua si? Thiab qhov txawv ntawm kev ua si thiab lub luag haujlwm lossis phau ntawv ua si yog dab tsi?

Nws tag nrho yog nyob rau hauv cov ntaub ntawv. Thiab lawv nco nws. Beginners - vim tias muaj ntau dhau thiab koj yuav tsis nco qab txhua yam ib zaug. Kev paub - vim "cov khoom tsis tseem ceeb". Yog tias koj muaj kev paub dhau los, rov nyeem cov nplooj ntawv no tsawg kawg ib zaug txhua rau lub hlis, thiab koj cov cai yuav dhau los ua cov thawj coj hauv chav kawm.

Yog li, nco ntsoov: Playbook yog ib daim ntawv teev cov kev ua si thiab import_playbook.
Nov yog ib qho kev ua si:

- hosts: group1
  roles:
    - role1

thiab qhov no kuj yog lwm qhov kev ua si:

- hosts: group2,group3
  tasks:
    - debug:

Ua si yog dab tsi? Yog vim li cas nws?

Kev ua si yog lub hauv paus tseem ceeb rau phau ntawv ua si, vim tias kev ua si thiab tsuas yog koom nrog cov npe ntawm cov luag haujlwm thiab / lossis cov haujlwm nrog cov npe ntawm cov tswv uas lawv yuav tsum tau ua. Hauv qhov tob tob ntawm cov ntaub ntawv koj tuaj yeem nrhiav tau hais txog delegate_to, local lookup plugins, network-cli-specific settings, jump hosts, thiab lwm yam. Lawv tso cai rau koj hloov me ntsis qhov chaw ua haujlwm. Tab sis, tsis nco qab txog nws. Txhua qhov kev xaiv ntse no muaj kev siv tshwj xeeb, thiab lawv tsis yog universal. Thiab peb tab tom tham txog tej yam yooj yim uas txhua tus neeg yuav tsum paub thiab siv.

Yog tias koj xav ua "ib yam dab tsi" "qhov chaw", koj sau ua si. Tsis yog lub luag haujlwm. Tsis yog lub luag haujlwm nrog modules thiab delegates. Koj coj nws thiab sau ua si. Nyob rau hauv uas, nyob rau hauv lub hosts teb koj sau qhov twg yuav ua, thiab nyob rau hauv lub luag hauj lwm / hauj lwm - dab tsi yuav tsum tau ua.

Yooj yim, txoj cai? Yuav ua li cas lwm yam?

Ib lub sijhawm zoo thaum tib neeg muaj lub siab xav ua qhov no tsis yog los ntawm kev ua si yog "lub luag haujlwm uas tsim txhua yam." Kuv xav kom muaj lub luag haujlwm uas teeb tsa ob lub servers ntawm thawj hom thiab servers ntawm hom thib ob.

Ib qho piv txwv archetypal yog saib xyuas. Kuv xav kom muaj lub luag haujlwm saib xyuas uas yuav teeb tsa kev saib xyuas. Lub luag haujlwm saib xyuas yog muab rau kev saib xyuas cov tswv (raws li kev ua si). Tab sis nws hloov tawm tias rau kev saib xyuas peb yuav tsum xa cov pob khoom rau cov tswv uas peb tau saib xyuas. Vim li cas ho tsis siv delegate? Koj kuj yuav tsum tau teeb tsa iptables. tus sawv cev? Koj kuj yuav tsum tau sau / kho qhov teeb tsa rau DBMS kom pab saib xyuas. tus sawv cev! Thiab yog tias tsis muaj tswv yim, ces koj tuaj yeem ua tus sawv cev include_role nyob rau hauv ib lub voj voog nested siv cov lim tsis zoo ntawm cov npe ntawm pawg, thiab sab hauv include_role koj tuaj yeem ua tau ntau dua delegate_to dua. Thiab tam sim no peb mus ...

Kev xav zoo - kom muaj ib lub luag haujlwm saib xyuas, uas "ua txhua yam" - coj peb mus rau hauv ntuj txiag teb tsaus uas feem ntau tsuas muaj ib txoj hauv kev tawm: rov sau txhua yam los ntawm kos.

Qhov yuam kev no tshwm sim qhov twg? Lub sijhawm koj pom tias ua haujlwm "x" ntawm tus tswv X koj yuav tsum mus rau tus tswv Y thiab ua "y" nyob rau ntawd, koj yuav tsum ua ib qho kev tawm dag zog yooj yim: mus sau ua si, uas ntawm tus tswv Y ua y. Tsis txhob ntxiv ib yam dab tsi rau "x", tab sis sau los ntawm kos. Txawm nrog hardcoded variables.

Zoo li txhua yam hauv kab lus saum toj no tau hais kom raug. Tab sis qhov no tsis yog koj li! Vim tias koj xav sau cov lej rov siv tau uas yog DRY thiab lub tsev qiv ntawv zoo li, thiab koj yuav tsum nrhiav ib txoj hauv kev yuav ua li cas.

Qhov no yog qhov uas lwm qhov yuam kev loj lurks. Ib qho kev ua yuam kev uas hloov ntau yam haujlwm los ntawm kev ua siab ntev sau (nws tuaj yeem ua tau zoo dua, tab sis txhua yam ua haujlwm thiab yooj yim ua kom tiav) mus rau qhov txaus ntshai tag nrho uas txawm tias tus sau tsis tuaj yeem xam. Nws ua haujlwm, tab sis Vajtswv txwv tsis pub koj hloov txhua yam.

Qhov yuam kev yog: lub luag haujlwm yog lub tsev qiv ntawv muaj nuj nqi. Qhov kev sib piv no tau rhuav tshem ntau qhov pib zoo uas nws tsuas yog tu siab saib. Lub luag haujlwm tsis yog lub tsev qiv ntawv muaj nuj nqi. Nws tsis tuaj yeem ua cov lej thiab nws tsis tuaj yeem txiav txim siab ua si. Nco ntsoov kuv qhov kev txiav txim siab ua si ua li cas?

Ua tsaug, koj hais yog lawm. Kev ua si ua qhov kev txiav txim siab (ntau dua, nws muaj cov ntaub ntawv) txog cov haujlwm thiab lub luag haujlwm los ua tus tswv tsev twg.

Yog tias koj tso cai rau qhov kev txiav txim siab no rau lub luag haujlwm, thiab txawm tias suav nrog, koj ua rau koj tus kheej (thiab tus uas yuav sim txheeb xyuas koj cov cai) kom muaj kev nyuaj siab. Lub luag haujlwm tsis txiav txim siab qhov twg nws ua. Qhov kev txiav txim siab no yog ua los ntawm kev ua si. Lub luag haujlwm ua qhov nws tau hais, qhov twg nws tau hais.

Vim li cas nws txaus ntshai rau qhov program hauv Ansible thiab vim li cas COBOL zoo dua Ansible peb yuav tham hauv tshooj txog kev hloov pauv thiab jinja. Txog tam sim no, cia peb hais ib yam - txhua qhov ntawm koj cov kev suav tawm tom qab ib qho kev hloov tsis tau ntawm cov kev hloov pauv hauv ntiaj teb, thiab koj tsis tuaj yeem ua dab tsi txog nws. Thaum ob "txoj kab" sib tshuam, txhua yam tau ploj mus.

Nco ntsoov rau lub squeamish: lub luag hauj lwm yeej muaj feem cuam tshuam rau kev tswj ntws. Noj delegate_to thiab nws muaj kev siv tsim nyog. Noj meta: end host/play. Tab sis! Nco ntsoov peb qhia cov hauv paus? Tsis nco qab txog delegate_to. Peb tab tom tham txog qhov yooj yim thiab zoo nkauj tshaj Ansible code. Uas yog ib qho yooj yim nyeem, sau yooj yim, yooj yim rau kev debug, yooj yim rau kev sim thiab ua kom tiav. Yog li, ib zaug ntxiv:

ua si thiab tsuas yog ua si txiav txim siab rau qhov twg hosts dab tsi raug tua.

Hauv seem no, peb tau hais txog qhov kev tawm tsam ntawm kev ua si thiab lub luag haujlwm. Tam sim no cia peb tham txog cov dej num vs luag hauj lwm kev sib raug zoo.

Cov Haujlwm thiab Lub Luag Haujlwm

Xav txog kev ua si:

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

Wb hais tias koj yuav tsum ua foo. Thiab zoo li foo: name=foobar state=present. Kuv yuav sau qhov twg? hauv pre? ncej? Tsim lub luag haujlwm?

...Thiab cov hauj lwm mus qhov twg?

Peb tab tom pib nrog qhov pib dua - cov cuab yeej ua si. Yog tias koj ntab rau ntawm qhov teeb meem no, koj tsis tuaj yeem siv kev ua si ua lub hauv paus rau txhua yam ntxiv, thiab koj qhov txiaj ntsig yuav "tshaj".

Ua si ntaus ntawv: tuav cov lus qhia, chaw rau kev ua si nws tus kheej thiab pre_tasks, cov dej num, lub luag hauj lwm, post_tasks seem. Cov kev txwv ntxiv rau kev ua si tsis tseem ceeb rau peb tam sim no.

Kev txiav txim ntawm lawv cov ntu nrog cov haujlwm thiab lub luag haujlwm: pre_tasks, roles, tasks, post_tasks. Txij li thaum semantically qhov kev txiav txim ntawm kev tua yog nyob nruab nrab tasks ΠΈ roles tsis paub meej, ces cov kev coj ua zoo tshaj plaws hais tias peb tab tom ntxiv ib ntu tasks, tsuas yog tsis yog roles... Yog muaj roles, tom qab ntawd tag nrho cov haujlwm txuas nrog tau muab tso rau hauv ntu pre_tasks/post_tasks.

Txhua yam uas tseem tshuav yog tias txhua yam yog qhov tseeb meej: ua ntej pre_tasksntawd rolesntawd post_tasks.

Tab sis peb tseem tsis tau teb cov lus nug: qhov twg yog qhov module hu? foo sau? Peb puas yuav tsum tau sau tag nrho lub luag haujlwm rau txhua qhov module? Los yog nws zoo dua kom muaj lub luag haujlwm tuab rau txhua yam? Thiab yog tias tsis yog lub luag haujlwm, ces kuv yuav tsum sau qhov twg - hauv pre lossis post?

Yog tias tsis muaj laj thawj cov lus teb rau cov lus nug no, qhov no yog lub cim ntawm qhov tsis muaj kev xav, uas yog, cov tib "shaky foundations." Cia peb xav txog nws. Ua ntej, ib lo lus nug kev ruaj ntseg: Yog ua si muaj pre_tasks ΠΈ post_tasks (thiab tsis muaj cov dej num lossis lub luag haujlwm), tom qab ntawd tuaj yeem cuam tshuam yog tias kuv ua thawj txoj haujlwm los ntawm post_tasks Kuv mam li txav mus rau qhov kawg pre_tasks?

Tau kawg, lo lus ntawm lo lus nug qhia tias nws yuav tawg. Tab sis qhov tseeb?

... Cov tuav. Kev nyeem cov hauv paus ntsiab lus nthuav tawm qhov tseeb tseem ceeb: txhua tus neeg tuav haujlwm raug tshem tawm tom qab txhua ntu. Cov. tag nrho cov hauj lwm los ntawm pre_tasks, ces tag nrho cov handlers uas tau ceeb toom. Tom qab ntawd txhua lub luag haujlwm thiab txhua tus tuav haujlwm uas tau ceeb toom hauv lub luag haujlwm raug tua. Tom qab post_tasks thiab lawv cov tswv.

Yog li, yog tias koj rub ib txoj haujlwm los ntawm post_tasks Π² pre_tasks, ces tej zaum koj yuav execute nws ua ntej tus handler raug tua. piv, if in pre_tasks lub web server raug ntsia thiab teeb tsa, thiab post_tasks ib yam dab tsi raug xa mus rau nws, ces hloov txoj haujlwm no mus rau ntu pre_tasks yuav ua rau lub fact tias thaum lub sij hawm ntawm "xa" tus neeg rau zaub mov tseem yuav tsis tau khiav thiab txhua yam yuav tawg.

Tam sim no cia peb xav dua, vim li cas peb xav tau pre_tasks ΠΈ post_tasks? Piv txwv li, txhawm rau ua kom tiav txhua yam tsim nyog (nrog rau tus tuav) ua ntej ua tiav lub luag haujlwm. A post_tasks yuav tso cai rau peb ua haujlwm nrog cov txiaj ntsig ntawm kev ua haujlwm (nrog rau cov neeg tuav haujlwm).

Tus kws tshaj lij Ansible yuav qhia peb tias nws yog dab tsi. meta: flush_handlers, tab sis vim li cas peb thiaj xav tau flush_handlers yog tias peb tuaj yeem tso siab rau qhov kev txiav txim ntawm kev ua tiav ntawm ntu hauv kev ua si? Tsis tas li ntawd, kev siv cov meta: flush_handlers tuaj yeem muab cov khoom npaj txhij txog rau peb nrog cov neeg ua haujlwm sib npaug, muab cov lus ceeb toom coj txawv txawv thaum siv. when Ρƒ block lwm. Qhov zoo dua koj paub cov ansible, qhov ntau nuances koj tuaj yeem sau npe rau "kev daws teeb meem". Thiab ib qho kev daws teeb meem yooj yim - siv lub ntuj faib ntawm ua ntej / lub luag haujlwm / ncej - tsis ua rau nuances.

Thiab, rov qab mus rau peb 'foo'. Kuv yuav muab tso rau qhov twg? Hauv pre, post lossis luag hauj lwm? Obviously, qhov no nyob ntawm seb peb xav tau cov txiaj ntsig ntawm tus tuav rau foo. Yog tias lawv tsis nyob ntawd, ces foo tsis tas yuav tsum tau muab tso rau hauv ob qho tib si ua ntej lossis tshaj tawm - cov ntu no muaj lub ntsiab lus tshwj xeeb - ua tiav cov haujlwm ua ntej thiab tom qab lub ntsiab lus ntawm cov cai.

Tam sim no cov lus teb rau lo lus nug "lub luag haujlwm lossis txoj haujlwm" los ntawm qhov uas twb muaj nyob rau hauv kev ua si - yog tias muaj cov haujlwm nyob ntawd, koj yuav tsum ntxiv lawv rau cov haujlwm. Yog tias muaj lub luag haujlwm, koj yuav tsum tsim lub luag haujlwm (txawm yog los ntawm ib txoj haujlwm). Cia kuv ceeb toom rau koj tias cov haujlwm thiab lub luag haujlwm tsis siv tib lub sijhawm.

Nkag siab txog cov hauv paus ntsiab lus ntawm Ansible muab cov lus teb tsim nyog rau cov lus nug zoo li saj.

Cov Haujlwm thiab Lub Luag Haujlwm (Pib Ob)

Tam sim no cia peb tham txog qhov xwm txheej thaum koj nyuam qhuav pib sau phau ntawv ua si. Koj yuav tsum ua foo, bar thiab baz. Puas yog peb txoj haujlwm no, ib lub luag haujlwm lossis peb lub luag haujlwm? Txhawm rau sau cov lus nug: ntawm qhov twg koj yuav tsum pib sau cov luag haujlwm? Lub luag haujlwm ntawm kev sau ntawv yog dab tsi thaum koj tuaj yeem sau cov haujlwm?... Lub luag haujlwm yog dab tsi?

Ib qho yuam kev loj tshaj plaws (Kuv twb tau tham txog qhov no) yog xav tias lub luag haujlwm zoo li lub luag haujlwm hauv lub tsev qiv ntawv program. Cov lus piav qhia dav dav ua haujlwm zoo li cas? Nws lees txais cov lus sib cav, cuam tshuam nrog kev mob tshwm sim, ua rau muaj kev phiv, thiab rov qab tus nqi.

Tam sim no, mloog. Dab tsi tuaj yeem ua tau los ntawm qhov no hauv lub luag haujlwm? Koj ib txwm txais tos hu rau cov kev mob tshwm sim, qhov no yog lub ntsiab lus ntawm tag nrho Ansible - los tsim cov kev mob tshwm sim. Puas muaj kev mob tshwm sim? Elementary. Tab sis nrog "dhau tus nqi thiab xa rov qab" - qhov uas nws tsis ua haujlwm. Ua ntej, koj tsis tuaj yeem hla tus nqi rau lub luag haujlwm. Koj tuaj yeem teeb tsa lub ntiaj teb hloov pauv nrog lub neej ntev ntawm kev ua si hauv ntu vars rau lub luag haujlwm. Koj tuaj yeem teeb tsa lub ntiaj teb hloov pauv nrog lub neej nyob hauv kev ua si hauv lub luag haujlwm. Los yog txawm nrog lub neej ntawm playbooks (set_fact/register). Tab sis koj tsis tuaj yeem muaj "cov kev hloov hauv zos". Koj tsis tuaj yeem "siv tus nqi" thiab "rov qab nws".

Qhov tseem ceeb hauv qab no: koj tsis tuaj yeem sau qee yam hauv Ansible thiab tsis ua rau muaj kev phiv. Hloov cov hloov pauv thoob ntiaj teb yog ib txwm muaj kev cuam tshuam rau kev ua haujlwm. Hauv Rust, piv txwv li, hloov lub ntiaj teb hloov pauv yog unsafe. Thiab hauv Ansible nws yog tib txoj kev los cuam tshuam cov txiaj ntsig rau lub luag haujlwm. Nco ntsoov cov lus siv: tsis yog "hloov tus nqi rau lub luag haujlwm", tab sis "hloov cov txiaj ntsig uas lub luag haujlwm siv". Tsis muaj kev sib cais ntawm lub luag haujlwm. Tsis muaj kev sib cais ntawm cov haujlwm thiab lub luag haujlwm.

Tag nrho: lub luag haujlwm tsis yog haujlwm.

Dab tsi yog qhov zoo ntawm lub luag haujlwm? Ua ntej, lub luag haujlwm muaj qhov tseem ceeb (/default/main.yaml), qhov thib ob, lub luag haujlwm muaj cov npe ntxiv rau kev khaws cov ntaub ntawv.

Dab tsi yog cov txiaj ntsig ntawm cov txiaj ntsig tsis raug? Vim hais tias nyob rau hauv Maslow lub pyramid, Ansible lub es distorted lub rooj ntawm qhov sib txawv qhov tseem ceeb, lub luag hauj lwm defaults yog qhov tseem ceeb tshaj plaws (tso tseg Ansible command kab parameters). Qhov no txhais tau hais tias yog tias koj xav tau muab cov txiaj ntsig zoo thiab tsis txhawj xeeb txog lawv overriding cov txiaj ntsig los ntawm cov khoom muag lossis pab pawg sib txawv, ces lub luag haujlwm defaults tsuas yog qhov chaw zoo rau koj. (Kuv dag me ntsis - muaj ntau dua |d(your_default_here), tab sis yog tias peb tham txog qhov chaw nyob ruaj khov, ces tsuas yog lub luag haujlwm tsis raug).

Dab tsi ntxiv yog qhov zoo ntawm cov luag haujlwm? Vim lawv muaj lawv tus kheej catalogs. Cov no yog cov ntawv qhia rau qhov sib txawv, ob qho tib si tas li (piv txwv li suav rau lub luag haujlwm) thiab dynamic (muaj xws li tus qauv lossis tus qauv tiv thaiv - include_vars ua ke nrog {{ ansible_distribution }}-{{ ansible_distribution_major_version }}.yml.). Cov no yog cov directory rau files/, templates/. Tsis tas li ntawd, nws tso cai rau koj kom muaj koj tus kheej modules thiab plugins (library/). Tab sis, nyob rau hauv kev sib piv nrog cov hauj lwm nyob rau hauv ib tug playbook (uas kuj muaj tag nrho cov no), tsuas yog cov txiaj ntsig ntawm no yog tias cov ntaub ntawv tsis tau muab pov tseg rau hauv ib pawg, tab sis ob peb pawg.

Ib qho ntxiv: koj tuaj yeem sim tsim cov luag haujlwm uas yuav muaj rau rov siv dua (ntawm galaxy). Nrog lub advent ntawm collections, lub luag hauj lwm faib yuav suav hais tias yuav luag tsis nco qab lawm.

Yog li, lub luag haujlwm muaj ob qhov tseem ceeb: lawv muaj qhov ua tsis tau (ib qho tshwj xeeb) thiab lawv tso cai rau koj los tsim koj cov cai.

Rov qab mus rau lo lus nug tseem ceeb: thaum twg ua cov haujlwm thiab thaum twg yuav tsum ua lub luag haujlwm? Cov hauj lwm hauv phau ntawv ua si feem ntau yog siv los ua "cov kua nplaum" ua ntej / tom qab lub luag haujlwm, lossis ua ib lub tsev tsim kev ywj pheej (tom qab ntawd yuav tsum tsis muaj lub luag haujlwm hauv txoj cai). Ib pawg ntawm cov dej num ib txwm sib xyaw nrog cov luag haujlwm yog qhov tsis paub meej sloppiness. Koj yuav tsum ua raws li qhov tshwj xeeb style - ib txoj haujlwm lossis lub luag haujlwm. Lub luag haujlwm muab kev sib cais ntawm cov chaw thiab qhov ua tsis tau, cov dej num tso cai rau koj nyeem cov lej sai dua. Feem ntau, ntau "nyob ruaj ruaj" (tseem ceeb thiab nyuaj) cov cai raug muab tso rau hauv lub luag haujlwm, thiab cov ntawv pabcuam raug sau ua haujlwm.

Nws muaj peev xwm ua import_role ua haujlwm, tab sis yog tias koj sau qhov no, ces npaj los piav qhia rau koj tus kheej kev zoo nkauj vim li cas koj xav ua qhov no.

Tus nyeem ntawv txawj ntse tuaj yeem hais tias lub luag haujlwm tuaj yeem nqa lub luag haujlwm, lub luag haujlwm tuaj yeem muaj kev vam khom ntawm galaxy.yml, thiab tseem muaj qhov txaus ntshai thiab txaus ntshai. include_role - Kuv ceeb toom rau koj tias peb tab tom txhim kho kev txawj ntse hauv Ansible, thiab tsis yog hauv daim duab gymnastics.

Cov neeg ua haujlwm thiab cov haujlwm

Cia peb tham txog lwm qhov pom tseeb: tus tuav. Kev paub siv lawv kom raug yog yuav luag ib qho kev kos duab. Dab tsi yog qhov txawv ntawm tus handler thiab tus cab?

Txij li thaum peb nco qab cov hauv paus, ntawm no yog ib qho piv txwv:

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

Lub luag haujlwm tus tuav haujlwm nyob hauv rolename/handlers/main.yaml. Handlers rummage ntawm txhua tus neeg koom ua si: ua ntej / post_tasks tuaj yeem rub lub luag haujlwm, thiab lub luag haujlwm tuaj yeem rub cov neeg ua haujlwm los ntawm kev ua si. Txawm li cas los xij, "cross-lub luag haujlwm" hu rau cov neeg ua haujlwm ua rau muaj ntau yam wtf dua li rov ua tus tuav tsis tseem ceeb. (Lwm yam ntawm cov kev coj ua zoo tshaj plaws yog sim tsis txhob rov ua cov npe tuav haujlwm).

Qhov sib txawv tseem ceeb yog qhov ua haujlwm ib txwm ua tiav (tsis muaj peev xwm) (ntxiv rau / rho tawm cov cim npe thiab when), thiab tus tuav - los ntawm lub xeev kev hloov pauv (kev ceeb toom hluav taws tsuas yog tias nws tau hloov lawm). Qhov no txhais li cas? Piv txwv li, qhov tseeb tias thaum koj rov pib dua, yog tias tsis muaj kev hloov pauv, ces yuav tsis muaj tus tuav. Vim li cas nws yuav yog tias peb yuav tsum ua tus tuav haujlwm thaum tsis muaj kev hloov pauv hauv kev tsim cov haujlwm? Piv txwv li, vim hais tias ib yam dab tsi tawg thiab hloov, tab sis kev tua tsis ncav cuag tus tuav. Piv txwv li, vim lub network tau poob ib ntus. Lub config tau hloov pauv, qhov kev pabcuam tsis tau rov pib dua. Lub sijhawm tom ntej koj pib nws, config tsis hloov lawm, thiab cov kev pabcuam tseem nyob nrog cov qub version ntawm config.

Qhov xwm txheej nrog lub teeb tsa tsis tuaj yeem daws tau (qhov tseeb dua, koj tuaj yeem tsim cov txheej txheem rov pib dua tshiab rau koj tus kheej nrog cov ntawv chij, thiab lwm yam, tab sis qhov no tsis yog 'qhov yooj yim ansible' hauv txhua daim ntawv). Tab sis muaj lwm zaj dab neeg: peb ntsia daim ntawv thov, kaw nws .service-file, thiab tam sim no peb xav tau daemon_reload ΠΈ state=started. Thiab qhov chaw ntuj rau qhov no zoo li yog tus tuav. Tab sis yog tias koj ua nws tsis yog tus tuav haujlwm tab sis ua haujlwm tom kawg ntawm daim ntawv teev npe lossis lub luag haujlwm, ces nws yuav raug tua tsis muaj zog txhua lub sijhawm. Txawm tias phau ntawv ua si tsoo hauv nruab nrab. Qhov no tsis daws qhov teeb meem rov pib dua txhua yam (koj tsis tuaj yeem ua haujlwm nrog tus cwj pwm rov pib dua, vim tias tsis muaj peev xwm ploj), tab sis nws yog qhov tsim nyog ua lub xeev = pib, tag nrho kev ruaj ntseg ntawm cov ntawv ua si nce, vim tias tus naj npawb ntawm kev sib txuas thiab dynamic xeev txo.

Lwm yam khoom zoo ntawm tus tuav yog tias nws tsis txhaws cov zis. Tsis muaj kev hloov pauv - tsis muaj kev hla ntxiv lossis ua rau hauv cov zis - yooj yim nyeem. Nws kuj yog ib qho khoom tsis zoo - yog tias koj pom ib qho typo nyob rau hauv ib txoj hauj lwm linearly executed ntawm thawj heev khiav, ces tus handlers yuav raug tua tsuas yog thaum hloov, piv txwv li. nyob rau hauv tej yam kev mob - tsis tshua muaj heev. Piv txwv li, thawj zaug hauv kuv lub neej tsib xyoos tom qab ntawd. Thiab, ntawm chav kawm, yuav muaj typo nyob rau hauv lub npe thiab txhua yam yuav tawg. Thiab yog tias koj tsis khiav lawv zaum ob, tsis muaj kev hloov pauv.

Cais, peb yuav tsum tham txog qhov muaj ntawm cov hloov pauv. Piv txwv li, yog tias koj ceeb toom rau ib txoj haujlwm nrog lub voj, yuav ua li cas hauv cov kev hloov pauv? Koj tuaj yeem kwv yees analytically, tab sis nws tsis yog ib txwm tsis tseem ceeb, tshwj xeeb tshaj yog tias qhov sib txawv los ntawm ntau qhov chaw.

... Yog li cov neeg tuav haujlwm tsis tshua muaj txiaj ntsig thiab muaj teeb meem ntau dua li qhov lawv zoo li. Yog tias koj tuaj yeem sau qee yam zoo nkauj (tsis muaj frills) yam tsis muaj tus tuav, nws yog qhov zoo dua los ua nws yam tsis muaj lawv. Yog tias nws tsis ua haujlwm zoo nkauj, nws zoo dua nrog lawv.

Tus nyeem corrosive rightly taw qhia tias peb tsis tau tham txog listentias tus neeg tuav ntaub ntawv tuaj yeem hu xov tooj ceeb toom rau lwm tus neeg tuav haujlwm, uas tus neeg tuav haujlwm tuaj yeem suav nrog import_tasks (uas tuaj yeem ua suav nrog_role nrog nrog_ khoom), tias tus neeg tuav haujlwm hauv Ansible yog Turing-ua tiav, cov neeg tuav haujlwm ntawm include_role cuam tshuam hauv txoj kev xav paub nrog cov neeg ua si, lwm ..d. - tag nrho qhov no tsis meej meej tsis yog "qhov tseem ceeb").

Txawm hais tias muaj ib qho tshwj xeeb WTF uas yog qhov tseeb uas koj yuav tsum nco ntsoov. Yog tias koj txoj haujlwm raug ua tiav nrog delegate_to thiab nws tau ceeb toom, ces tus coj handler raug tua yam tsis muaj delegate_to, i.e. ntawm tus tswv tsev qhov chaw ua si raug xaiv. (Txawm hais tias tus tuav, tau kawg, yuav muaj delegate_to Ib yam).

Cais, kuv xav hais ob peb lo lus hais txog lub luag hauj lwm rov siv tau. Ua ntej cov khoom sau tau tshwm sim, muaj ib lub tswv yim tias koj tuaj yeem ua lub luag haujlwm thoob ntiaj teb uas tuaj yeem ua tau ansible-galaxy install thiab tau mus. Ua haujlwm ntawm txhua OS ntawm txhua qhov sib txawv hauv txhua qhov xwm txheej. Yog li, kuv lub tswv yim: nws tsis ua haujlwm. Txhua lub luag haujlwm nrog huab hwm coj include_vars, txhawb 100500 rooj plaub, yog doomed rau abyss ntawm kaum rooj plaub kab. Lawv tuaj yeem raug them nrog kev sim loj, tab sis nrog rau txhua qhov kev sim, txawm tias koj muaj Cartesian cov khoom lag luam ntawm cov tswv yim muaj nuj nqis thiab tag nrho kev ua haujlwm, lossis koj muaj "cov xwm txheej ntawm tus kheej them." Kuv lub tswv yim yog tias nws zoo dua yog tias lub luag haujlwm yog linear (cyclomatic complexity 1).

Qhov tsawg dua ifs (qhia meej lossis tshaj tawm - hauv daim ntawv when los yog daim ntawv include_vars los ntawm cov txheej txheem sib txawv), qhov zoo dua lub luag haujlwm. Qee lub sij hawm koj yuav tsum ua cov ceg ntoo, tab sis, kuv rov hais dua, qhov tsawg dua, qhov zoo dua. Yog li nws zoo li lub luag haujlwm zoo nrog galaxy (nws ua haujlwm!) nrog ib pawg ntawm when tej zaum yuav tsawg dua li "ib tus kheej" lub luag haujlwm los ntawm tsib txoj haujlwm. Lub sijhawm thaum lub luag haujlwm nrog galaxy zoo dua yog thaum koj pib sau ib yam dab tsi. Lub sij hawm thaum nws tau mob zuj zus yog thaum ib yam dab tsi tawg thiab koj muaj kev xav tias nws yog vim "lub luag hauj lwm nrog galaxy". Koj qhib nws, thiab muaj tsib qhov suav nrog, yim daim ntawv ua haujlwm thiab ib pawg when'ov... Thiab peb yuav tsum paub qhov no. Hloov chaw ntawm 5 txoj haujlwm, ib daim ntawv teev npe uas tsis muaj dab tsi cuam tshuam.

Hauv cov hauv qab no

  • Ib me ntsis txog cov khoom muag, pab pawg sib txawv, host_group_vars plugin, hostvars. Yuav ua li cas khi Gordian knot nrog spaghetti. Scope thiab precedence variables, Ansible nco qauv. "Yog li qhov twg peb khaws cov npe siv rau cov ntaub ntawv?"
  • jinja: {{ jinja }} - nosql notype nosense soft plasticine. Nws nyob txhua qhov chaw, txawm tias qhov twg koj tsis xav txog nws. Me ntsis txog !!unsafe thiab delicious yaml.

Tau qhov twg los: www.hab.com

Ntxiv ib saib