Jinsi ya kuchukua udhibiti wa miundombinu ya mtandao wako. Sura ya Nne. Otomatiki. Violezo

Makala hii ni ya sita katika mfululizo wa “Jinsi ya Kudhibiti Miundombinu ya Mtandao Wako.” Yaliyomo katika nakala zote kwenye safu na viungo vinaweza kupatikana hapa.

Baada ya kuacha mada kadhaa nyuma, niliamua kuanza sura mpya.

Nitarudi kwa usalama baadaye kidogo. Hapa nataka kujadili mbinu moja rahisi lakini yenye ufanisi, ambayo nina hakika, kwa namna moja au nyingine, inaweza kuwa na manufaa kwa wengi. Hii ni zaidi ya hadithi fupi kuhusu jinsi otomatiki inavyoweza kubadilisha maisha ya mhandisi. Tutazungumza juu ya kutumia templates. Mwishoni kuna orodha ya miradi yangu ambapo unaweza kuona jinsi kila kitu kilichoelezwa hapa kinavyofanya kazi.

DevOps kwa mtandao

Kuunda usanidi kwa hati, kwa kutumia GIT kudhibiti mabadiliko kwenye miundombinu ya TEHAMA, "kupakia" kwa mbali - mawazo haya huja kwanza unapofikiria kuhusu utekelezaji wa kiufundi wa mbinu ya DevOps. Faida ni dhahiri. Lakini, kwa bahati mbaya, pia kuna hasara.

Wakati zaidi ya miaka 5 iliyopita, watengenezaji wetu walikuja kwetu, wanamtandao, na mapendekezo haya, hatukufurahiya.

Lazima niseme kwamba tulirithi mtandao wa motley, unaojumuisha vifaa kutoka kwa wachuuzi wapatao 10 tofauti. Ilikuwa rahisi kusanidi baadhi ya vitu kupitia cli yetu tuipendayo, lakini kwa zingine tulipendelea kutumia GUI. Kwa kuongeza, kazi ya muda mrefu kwenye vifaa vya "kuishi" imetufundisha kudhibiti wakati halisi. Kwa mfano, wakati wa kufanya mabadiliko, ninahisi vizuri zaidi kufanya kazi moja kwa moja kupitia cli. Kwa njia hii ninaweza kuona kwa haraka kuwa hitilafu fulani imetokea na kurudisha nyuma mabadiliko. Haya yote yalikuwa katika ukinzani fulani na mawazo yao.

Maswali mengine pia hutokea, kwa mfano, interface inaweza kubadilika kidogo kutoka toleo hadi toleo la programu. Mwishowe hii itasababisha hati yako kuunda "usanidi" mbaya. Nisingependa kutumia uzalishaji kwa "kukimbia ndani".

Au, jinsi ya kuelewa kuwa amri za usanidi zilitumika kwa usahihi na nini cha kufanya ikiwa kuna kosa?

Sitaki kusema kwamba masuala haya yote hayawezi kutatuliwa. Kusema tu "A" kunaweza kuwa na maana kusema "B" pia, na ikiwa unataka kutumia michakato sawa ya udhibiti wa mabadiliko kama ilivyo katika ukuzaji, basi unahitaji kuwa na mazingira ya uboreshaji na uwekaji pamoja na uzalishaji. Kisha mbinu hii inaonekana kamili. Lakini itagharimu kiasi gani?

Lakini kuna hali moja wakati hasara zinatolewa kivitendo, na faida tu zinabaki. Ninazungumza juu ya kazi ya kubuni.

Mradi

Kwa miaka miwili iliyopita nimekuwa nikishiriki katika mradi wa kujenga kituo cha data kwa mtoaji mkubwa. Ninawajibika kwa F5 na Palo Alto katika mradi huu. Kwa mtazamo wa Cisco, hii ni "vifaa vya mtu wa tatu".

Kwangu mimi binafsi, kuna hatua mbili tofauti katika mradi huu.

Hatua ya kwanza

Mwaka wa kwanza nilikuwa na shughuli nyingi sana, nilifanya kazi usiku na wikendi. Sikuweza kuinua kichwa changu. Shinikizo kutoka kwa usimamizi na mteja lilikuwa kali na endelevu. Kwa utaratibu wa mara kwa mara, sikuweza hata kujaribu kuboresha mchakato. Haikuwa tu na sio sana usanidi wa vifaa kama utayarishaji wa nyaraka za muundo.

Majaribio ya kwanza yameanza, na ningestaajabishwa na makosa mengi madogo na yasiyo sahihi yalifanywa. Bila shaka, kila kitu kilifanya kazi, lakini kulikuwa na barua iliyopotea kwa jina, kulikuwa na mstari uliopotea katika amri ... Vipimo viliendelea na kuendelea, na nilikuwa tayari katika mapambano ya mara kwa mara, ya kila siku na makosa, vipimo na nyaraka. .

Hii iliendelea kwa mwaka. Mradi huo, kwa kadiri ninavyoelewa, haukuwa rahisi kwa kila mtu, lakini hatua kwa hatua mteja aliridhika zaidi na zaidi, na hii ilifanya iwezekane kuajiri wahandisi wa ziada ambao waliweza kuchukua sehemu ya utaratibu wenyewe.

Sasa tunaweza kutazama pande zote kidogo.
Na huu ulikuwa mwanzo wa hatua ya pili.

Hatua ya pili

Niliamua kugeuza mchakato kiotomatiki.

Nilichoelewa kutoka kwa mawasiliano yangu na watengenezaji wakati huo (na lazima tulipe ushuru, tulikuwa na timu yenye nguvu) ni kwamba muundo wa maandishi, ingawa kwa mtazamo wa kwanza unaonekana kama kitu kutoka kwa ulimwengu wa mfumo wa uendeshaji wa DOS, una nambari. ya mali ya thamani.
Kwa hiyo, kwa mfano, muundo wa maandishi utakuwa muhimu ikiwa unataka kutumia kikamilifu GIT na derivatives yake yote. Na nilitaka.

Kweli, inaweza kuonekana kuwa unaweza kuhifadhi tu usanidi au orodha ya amri, lakini kufanya mabadiliko sio rahisi sana. Kwa kuongeza, kuna kazi nyingine muhimu wakati wa kubuni. Unapaswa kuwa na nyaraka zinazoelezea muundo wako kwa ujumla (Muundo wa Kiwango cha Chini) na utekelezaji mahususi (Mpango wa Utekelezaji wa Mtandao). Na katika kesi hii, matumizi ya templeti inaonekana kama chaguo linalofaa sana.

Kwa hivyo, unapotumia YAML na Jinja2, faili ya YAML yenye vigezo vya usanidi kama vile anwani za IP, nambari za BGP AS, ... inatimiza kikamilifu jukumu la NIP, huku violezo vya Jinja2 vinajumuisha sintaksia inayolingana na muundo, yaani, kimsingi tafakari ya LLD.

Ilichukua siku mbili kujifunza YAML na Jinja2. Mifano michache nzuri inatosha kuelewa jinsi hii inavyofanya kazi. Kisha ilichukua kama wiki mbili kuunda violezo vyote vilivyolingana na muundo wetu: wiki kwa Palo Alto na wiki nyingine kwa F5. Yote hii ilitumwa kwenye githab ya ushirika.

Sasa mchakato wa mabadiliko ulionekana kama hii:

  • ilibadilisha faili ya YAML
  • iliunda faili ya usanidi kwa kutumia kiolezo (Jinja2)
  • imehifadhiwa kwenye hifadhi ya mbali
  • imepakia usanidi ulioundwa kwenye vifaa
  • Niliona hitilafu
  • ilibadilisha faili ya YAML au kiolezo cha Jinja2
  • iliunda faili ya usanidi kwa kutumia kiolezo (Jinja2)
  • ...

Ni wazi kwamba mwanzoni muda mwingi ulitumika kwenye uhariri, lakini baada ya wiki moja au mbili hii ikawa adimu.

Jaribio nzuri na fursa ya kutatua kila kitu ilikuwa nia ya mteja kubadilisha mkataba wa majina. Wale waliofanya kazi na F5 wanaelewa piquancy ya hali hiyo. Lakini kwangu yote yalikuwa rahisi sana. Nilibadilisha majina katika faili ya YAML, nikafuta usanidi mzima kutoka kwa kifaa, nikatoa mpya na kuipakia. Kila kitu, ikiwa ni pamoja na kurekebisha hitilafu, ilichukua siku 4: siku mbili kwa kila teknolojia. Baada ya hapo, nilikuwa tayari kwa hatua inayofuata, ambayo ni kuundwa kwa vituo vya data vya DEV na Staging.

Dev na Staging

Hatua kwa kweli huiga kabisa uzalishaji. Dev ni nakala iliyoondolewa kabisa iliyojengwa hasa kwenye maunzi pepe. Hali bora kwa mbinu mpya. Ikiwa nitatenga muda niliotumia kutoka kwa mchakato mzima, basi nadhani kazi haikuchukua zaidi ya wiki 2. Wakati kuu ni kusubiri kwa upande mwingine na kutafuta matatizo pamoja. Utekelezaji wa chama cha tatu ulikaribia bila kutambuliwa na wengine. Kulikuwa na wakati wa kujifunza kitu na kuandika nakala kadhaa juu ya Habré :)

Hebu tufafanue

Kwa hivyo, nina nini katika mstari wa chini?

  • Ninachohitaji kufanya ili kubadilisha usanidi ni kubadilisha faili rahisi, iliyopangwa wazi ya YAML na vigezo vya usanidi. Sijawahi kubadilisha hati ya python na mara chache sana (tu ikiwa kuna makosa) mimi hubadilisha joto la Jinja2
  • Kutoka kwa mtazamo wa hati, hii ni hali karibu bora. Unabadilisha hati (faili za YAML hutumika kama NIP) na kupakia usanidi huu kwenye kifaa. Kwa njia hii hati zako huwa zimesasishwa kila wakati

Yote hii ilisababisha ukweli kwamba

  • kiwango cha makosa kimepungua hadi karibu 0
  • Asilimia 90 ya utaratibu umepita
  • kasi ya utekelezaji imeongezeka kwa kiasi kikubwa

PAY, F5Y, ACY

Nilisema kwamba mifano michache inatosha kuelewa jinsi inavyofanya kazi.
Hapa kuna toleo fupi (na bila shaka lililorekebishwa) la kile kilichoundwa wakati wa kazi yangu.

KULIPA = kupelekwa Palo Al kutoka Yaml = Palo Alto kutoka Yaml
F5Y = kupelekwa F5 kutoka Yaml = F5 kutoka Yaml (inakuja hivi karibuni)
ACY = kupelekwa ACmimi kutoka Yaml = F5 kutoka Yaml

Nitaongeza maneno machache kuhusu ACY (sio kuchanganyikiwa na ACI).

Wale ambao wamefanya kazi na ACI wanajua kuwa muujiza huu (na kwa njia nzuri pia) haukuundwa na wanamtandao :). Sahau kila kitu ulichojua kuhusu mtandao - hautakuwa na manufaa kwako!
Imezidishwa kidogo, lakini inaonyesha takriban hisia ambayo nimekuwa nikipata kila wakati, kwa miaka 3 iliyopita, nikifanya kazi na ACI.

Na katika kesi hii, ACY sio tu fursa ya kuunda mchakato wa udhibiti wa mabadiliko (ambayo ni muhimu sana katika kesi ya ACI, kwa sababu inapaswa kuwa sehemu kuu na muhimu zaidi ya kituo chako cha data), lakini pia inakupa. kiolesura cha kirafiki cha kuunda usanidi.

Wahandisi kwenye mradi huu hutumia Excel kusanidi ACI badala ya YAML kwa madhumuni sawa kabisa. Kwa kweli, kuna faida za kutumia Excel:

  • NIP yako katika faili moja
  • ishara nzuri ambazo ni za kupendeza kwa mteja kutazama
  • unaweza kutumia baadhi ya zana bora

Lakini kuna minus moja, na kwa maoni yangu inazidi faida. Kudhibiti mabadiliko na kuratibu kazi ya timu inakuwa ngumu zaidi.

ACY kwa kweli ni matumizi ya njia zile zile ambazo nilitumia kwa mtu wa tatu kusanidi ACI.

Chanzo: mapenzi.com

Kuongeza maoni