{"id":38747,"date":"2019-10-31T22:25:42","date_gmt":"2019-10-31T19:25:42","guid":{"rendered":"https:\/\/prohoster.info\/blog\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\/"},"modified":"2019-10-31T22:25:42","modified_gmt":"2019-10-31T19:25:42","slug":"infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","status":"publish","type":"post","link":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","title":{"rendered":"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Sveiks, Habr! Agr\u0101k es s\u016bdz\u0113jos par dz\u012bvi infrastrukt\u016bras k\u0101 koda paradigmas ietvaros un nepied\u0101v\u0101ju risin\u0101jumus eso\u0161ajai situ\u0101cijai. \u0160odien esmu atgriezies, lai past\u0101st\u012btu, k\u0101di pieejas un prakses var pal\u012bdz\u0113t izk\u013c\u016bt no izmisuma bezdibe\u0146a un novirz\u012bt situ\u0101ciju pareizaj\u0101 virzien\u0101. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/e23fbf20980e731ae1cdb4719c97eb00.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nIepriek\u0161\u0113j\u0101 rakst\u0101 <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">\u201eInfrastrukt\u016bra k\u0101 kods: pirm\u0101 iepaz\u012b\u0161an\u0101s\u201c<\/a><\/noindex> Es dal\u012bjos ar sav\u0101m p\u0101rdom\u0101m par \u0161o jomu, m\u0113\u0123in\u0101ju apspriest pa\u0161reiz\u0113jo situ\u0101ciju un pat pie\u013c\u0101vu, ka standarta, visiem izstr\u0101d\u0101t\u0101jiem zin\u0101m\u0101s prakses var pal\u012bdz\u0113t. Var\u0113ja \u0161\u0137ist, ka taj\u0101 bija daudz s\u016bdz\u012bbu par dz\u012bvi, bet nebija pied\u0101v\u0101jumu par risin\u0101jumiem sare\u017e\u0123\u012bjumiem. <\/p>\n<h2>Kas m\u0113s esam, kur m\u0113s esam un k\u0101das ir m\u016bsu probl\u0113mas<\/h2>\n<p>\nPa\u0161laik m\u0113s atrodamies SRE onboarding komand\u0101, kas sast\u0101v no se\u0161iem programm\u0113t\u0101jiem un trim infrastrukt\u016bras in\u017eenieriem. Visi m\u0113s cen\u0161amies rakst\u012bt infrastrukt\u016bru k\u0101 kodu (IaC). M\u0113s to dar\u0101m, jo princip\u0101 sp\u0113jam rakst\u012bt kodu un m\u016bsu pieredze ir vid\u0113j\u0101 l\u012bmen\u012b. <\/p>\n<ul>\n<li>Mums ir vair\u0101ki plusi: noteikta pieredze, prakses zin\u0101\u0161anas, sp\u0113jas rakst\u012bt kodu, v\u0113lme m\u0101c\u012bties jauno. <\/li>\n<li>Un ir v\u0101j\u0101 puse, kas ir m\u012bnuss: zin\u0101\u0161anu tr\u016bkums par infrastrukt\u016bras pamata liet\u0101m. <\/li>\n<\/ul>\n<p>\n<b class=\"spoiler_title\">Tehnolo\u0123iju kaudze, ko m\u0113s izmantojam m\u016bsu IaC.<\/b><\/p>\n<ul>\n<li>Terraform resursu izveidei.<\/li>\n<li>Packer att\u0113lu veido\u0161anai. Tas ir Windows, CentOS 7 att\u0113li.<\/li>\n<li>Jsonnet, lai veidotu jaud\u012bgas strukt\u016bras drone.io, k\u0101 ar\u012b packer json un m\u016bsu Terraform modu\u013cu \u0123ener\u0113\u0161anai.<\/li>\n<li>Azure.<\/li>\n<li>Ansible att\u0113lu sagatavo\u0161anai.<\/li>\n<li>Python pal\u012bgservisiem, k\u0101 ar\u012b provizion\u0113\u0161anas skriptiem.<\/li>\n<li>Un viss tas VSCode ar papla\u0161in\u0101jumiem, ko kop\u012bgi izmanto komandas dal\u012bbnieki.<\/li>\n<\/ul>\n<p>Izv\u0113rsts no manas <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/465137\/\">iepriek\u0161\u0113j\u0101s raksta<\/a><\/noindex> secin\u0101juma: es centos ieviest (vispirms sev\u012b) optimismu, grib\u0113ju teikt, ka m\u0113s izm\u0113\u0123in\u0101sim mums zin\u0101m\u0101s pieejas un prakses, lai c\u012bn\u012btos ar gr\u016bt\u012bb\u0101m un sare\u017e\u0123\u012bjumiem, kas past\u0101v \u0161aj\u0101 jom\u0101. <\/p>\n<p>Pa\u0161laik m\u0113s saskaramies ar \u0161\u0101d\u0101m IaC probl\u0113m\u0101m:<\/p>\n<ul>\n<li>R\u012bku, kodu izstr\u0101des l\u012bdzek\u013cu nepiln\u012bbas.<\/li>\n<li>L\u0113na izv\u0113r\u0161ana. Infrastrukt\u016bra ir re\u0101la pasaule, un t\u0101 var b\u016bt l\u0113na.<\/li>\n<li>Pieejas un prakses tr\u016bkums.<\/li>\n<li>M\u0113s esam jauni un daudz nezino\u0161i.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Ekstrem\u0101l\u0101 programm\u0113\u0161ana (XP) steidzas pal\u012bg\u0101.<\/h2>\n<p>\nVisi izstr\u0101d\u0101t\u0101ji labi zina ekstr\u0113mo programm\u0113\u0161anu (XP) un t\u0101s pamatprincipus. Daudzi no mums ir str\u0101d\u0101ju\u0161i p\u0113c \u0161\u0101da pieejas, un t\u0101 ir bijusi veiksm\u012bga. T\u0101tad, k\u0101p\u0113c neizmantot principus un prakses, kas tur ir iek\u013cautas, lai p\u0101rvar\u0113tu infrastrukt\u016bras gr\u016bt\u012bbas? M\u0113s nol\u0113m\u0101m piem\u0113rot \u0161o pieeju un noskaidrot, kas no t\u0101 san\u0101ks.<\/p>\n<p><b class=\"spoiler_title\">P\u0101rbaude par XP pieejas piem\u0113rot\u012bbu j\u016bsu jomai<\/b>Pied\u0101v\u0101ju aprakstu par vidi, kurai XP ir labi piem\u0113rots, un k\u0101 tas attiecas uz mums: <\/p>\n<p>1. Dinamiski main\u012bgas programmat\u016bras pras\u012bbas. Mums bija skaidrs, kas ir galam\u0113r\u0137is. Bet deta\u013c\u0101s var vari\u0113t. M\u0113s pa\u0161i nosak\u0101m, uz kurieni mums j\u0101dodas, t\u0101p\u0113c pras\u012bbas periodiski main\u0101s (pamat\u0101 tos nosak\u0101m m\u0113s pa\u0161i). Ja \u0146emam SRE komandu, kas pati veic automatiz\u0101ciju un pati nosaka pras\u012bbas un darba apjomu, tad \u0161is punkts ir piem\u0113rots. <\/p>\n<p>2. Riski, ko rada fiks\u0113t\u0101 laika projekti jaun\u0101s tehnolo\u0123ijas izmanto\u0161ana. Mums var rasties riski, izmantojot da\u017eas mums nezin\u0101mas lietas. Un tas ir 100% m\u016bsu gad\u012bjums. Visu m\u016bsu projektu veido tehnolo\u0123ijas, ar kur\u0101m m\u0113s nebij\u0101m l\u012bdz galam paz\u012bstami. Paties\u012bb\u0101 t\u0101 ir past\u0101v\u012bga probl\u0113ma, jo infrastrukt\u016bras jom\u0101 past\u0101v\u012bgi par\u0101d\u0101s daudzas jaunas tehnolo\u0123ijas. <\/p>\n<p>3,4. Mazas, kop\u0101 str\u0101d\u0101jo\u0161as pagarin\u0101t\u0101s izstr\u0101des komandas. Tehnolo\u0123ija, ko j\u016bs izmantojat, \u013cauj veikt automatiz\u0113tus vien\u012bbu un funkcion\u0101los testus. \u0160ie divi punkti mums nav piln\u012bb\u0101 piem\u0113roti. Pirmk\u0101rt, m\u0113s neesam koloc\u0113ta komanda, otrk\u0101rt, m\u016bs ir devi\u0146i, kas var tikt uzskat\u012bts par lielu komandu. Lai gan, saska\u0146\u0101 ar daudziem defin\u012bcij\u0101m \"liela\" komanda ir 14+ cilv\u0113ki. <\/p>\n<p>Apskat\u012bsim da\u017eas XP prakses un to, k\u0101 t\u0101s ietekm\u0113 atgriezenisk\u0101s saites \u0101trumu un kvalit\u0101ti.<\/p>\n<h4>Atgriezenisk\u0101s saites cikls XP<\/h4>\n<p>\nMan\u0101 izpratn\u0113 atgriezenisk\u0101 saite ir atbilde uz jaut\u0101jumu, vai es to daru pareizi, vai m\u0113s ejam pareizaj\u0101 virzien\u0101? XP \u0161aj\u0101 jaut\u0101jum\u0101 ir dievi\u0161\u0137\u0101 sh\u0113ma: atgriezenisk\u0101s saites cikls p\u0113c laika. Interesanti ir tas, ka jo dzi\u013c\u0101k m\u0113s esam, jo \u0101tr\u0101k m\u0113s varam sa\u0146emam OS, lai atbild\u0113tu uz nepiecie\u0161amajiem jaut\u0101jumiem. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/e381fb2d7937cbd1978fd6740e63e790.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0160\u012b ir diezgan interesanta t\u0113ma diskusijai, jo m\u016bsu IT industrij\u0101 iesp\u0113jams \u0101tri sa\u0146emt OS. Iedom\u0101jieties, cik s\u0101p\u012bgi ir str\u0101d\u0101t pie k\u0101da projekta pusgadu un tikai p\u0113c tam uzzin\u0101t, ka pa\u0161\u0101 s\u0101kum\u0101 tika ieviesta k\u013c\u016bda. Tas notiek gan projekt\u0113\u0161an\u0101, gan jebkur\u0101 sare\u017e\u0123\u012btu sist\u0113mu veido\u0161an\u0101. <\/p>\n<p>M\u016bsu gad\u012bjum\u0101 IaC mums pal\u012bdz atgriezenisk\u0101 saite. Nekav\u0113joties veicu nelielu kori\u0123\u0113\u0161anu iepriek\u0161\u0113j\u0101 sh\u0113m\u0101: izlaiduma pl\u0101ns nav m\u0113ne\u0161a cikls, bet notiek vair\u0101kas reizes dien\u0101. \u0160im ciklam ir pievienotas da\u017eas prakses, kuras m\u0113s apskat\u012bsim detaliz\u0113t\u0101k.<\/p>\n<blockquote><p>Svar\u012bgi: atgriezenisk\u0101 saite var k\u013c\u016bt par risin\u0101jumu vis\u0101m iepriek\u0161 min\u0113taj\u0101m probl\u0113m\u0101m. Apvienojum\u0101 ar XP praks\u0113m t\u0101 var izvilkt no izmisuma bezdibe\u0146a.<\/p><\/blockquote>\n<p><\/p>\n<h2>K\u0101 izvilkt sevi no izmisuma bezdibe\u0146a: tr\u012bs prakses<\/h2>\n<p><\/p>\n<h4>Testi <\/h4>\n<p>\nTesti tiek min\u0113ti divreiz pa\u0161\u0101 XP atgriezenisk\u0101s saites cikl\u0101. Tas nav vienk\u0101r\u0161i t\u0101. Tie ir \u0101rk\u0101rt\u012bgi svar\u012bgi visai ekstr\u0113m\u0101 programm\u0113\u0161anas tehnolo\u0123ijai. <\/p>\n<p>Pretstat\u0101 ir j\u0101b\u016bt Unit un Acceptance testiem. Viens dod tev atsauksmes p\u0101ris min\u016bt\u0113s, cits \u2013 p\u0101ris dien\u0101s, jo tie tiek rakst\u012bti ilg\u0101k un izpild\u012bti ret\u0101k. <\/p>\n<p>Ir klasisk\u0101 test\u0113\u0161anas piram\u012bda, kas par\u0101d\u012bjusi, ka k\u0101du testu vajadz\u0113tu b\u016bt vair\u0101k. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/29f3217f11b67378c9c0c3f14fab9d61.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nK\u0101 \u0161\u012b sh\u0113ma ir piem\u0113rojama m\u016bsu IaC projekt\u0101? Paties\u012bb\u0101\u2026 nek\u0101d\u0101 veid\u0101. <\/p>\n<ul>\n<li>Unit testu, lai gan to vajadz\u0113tu b\u016bt \u013coti daudz, nevar b\u016bt \u013coti daudz. Vai nu tie \u013coti netie\u0161i test\u0113 kaut ko. Faktiski var teikt, ka m\u0113s tos visp\u0101r nerakst\u0101m. Bet ir da\u017eas Unit testu lietojumprogrammas, kuras mums tom\u0113r izdev\u0101s izveidot:\n<ol>\n<li>Koda test\u0113\u0161ana uz jsonnet. Piem\u0113ram, m\u016bsu b\u016bv\u0113\u0161anas pipeline Drone, kas ir pietiekami sare\u017e\u0123\u012bts. Kods uz jsonnet labi tiek p\u0101rkl\u0101ts ar testiem. <br \/>\n M\u0113s izmantojam \u0161o <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/yugui\/jsonnetunit\">Unit testing framework for Jsonnet<\/a><\/noindex>. <\/li>\n<li> Testi uz skriptiem, kas tiek izpild\u012bti resursu palai\u0161anas laik\u0101. Skripti ir uz Python, t\u0101p\u0113c ar\u012b testus uz tiem var rakst\u012bt.<\/li>\n<\/ol>\n<\/li>\n<li>Potenci\u0101li ir iesp\u0113jama konfigur\u0101cijas p\u0101rbaude testos, bet m\u0113s to nedar\u0101m. V\u0113l ir iesp\u0113jas konfigur\u0101cijas noteikumu p\u0101rbaudes iestat\u012b\u0161anai resursiem caur <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/wata727\/tflint\">tflint<\/a><\/noindex>. Tom\u0113r, vienk\u0101r\u0161i Terraform ir p\u0101r\u0101k pamata p\u0101rbaudes, bet daudz p\u0101rbaudes scen\u0101riju ir uzrakst\u012bti AWS. M\u0113s esam Azure, t\u0101p\u0113c tas atkal nepiest\u0101v.<\/li>\n<li>Komponentu integr\u0101cijas testi: \u0161eit atkar\u012bgs no t\u0101, k\u0101 tu tos klasific\u0113 un kur tos izliek. Bet princip\u0101 tie darbojas.\n<p>T\u0101 izskat\u0101s integr\u0101cijas testi. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/b4771e9e5d329ffb2ba565ead7fdddfd.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nTas ir piem\u0113rs, k\u0101 notiek att\u0113lu veido\u0161ana Drone CI. Lai pie tiem tiktu, ir j\u0101gaida 30 min\u016btes, kam\u0113r Packer izveido att\u0113lu, p\u0113c tam v\u0113l 15 min\u016btes, kam\u0113r tie tiek izpild\u012bti. Bet tie ir! <\/p>\n<p><b class=\"spoiler_title\">Att\u0113lu p\u0101rbaudes algoritms<\/b> <\/p>\n<ol>\n<li>Vispirms Packer ir j\u0101izveido att\u0113ls piln\u012bb\u0101.<\/li>\n<li>Blakus testam ir Terraform ar lok\u0101lo st\u0101vokli, ar kuru m\u0113s \u0161o att\u0113lu izv\u0113r\u0161am. <\/li>\n<li>Izv\u0113r\u0161anas proces\u0101 tiek izmantots neliels modulis, kas atrodas blakus, lai viegl\u0101k str\u0101d\u0101tu ar att\u0113lu. <\/li>\n<li>Kad no att\u0113la ir izv\u0113rsta VM, var s\u0101kt p\u0101rbaudes. Galvenok\u0101rt p\u0101rbaudes tiek veiktas uz ma\u0161\u012bnas. Tiek p\u0101rbaud\u012bts, k\u0101 skripti darboj\u0101s start\u0113\u0161anas laik\u0101, k\u0101 darbojas d\u0113moni. Tam m\u0113s caur ssh vai winrm piek\u013c\u016bstam tie\u0161i izveidotajai ma\u0161\u012bnai un p\u0101rbaud\u0101m konfigur\u0101cijas st\u0101vokli vai vai pakalpojumi ir palai\u017eami.<\/li>\n<\/ol>\n<p>\n <\/li>\n<li>L\u012bdz\u012bga situ\u0101cija ir ar integr\u0101cijas testiem un Terraform modu\u013ciem. \u0160eit ir \u012bsa tabula, kas izskaidro \u0161\u0101du testu \u012bpatn\u012bbas.\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/e2624fb97831701e374a7e8e7fe39a16.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nAtsauksmes par pipeline ir apm\u0113ram 40 min\u016btes. Viss notiek \u013coti l\u0113ni. To var izmantot regresijas testi, bet jauniem izstr\u0101d\u0101jumiem tas ir piln\u012bgi nere\u0101li. Ja \u013coti labi sagatavosies, sagatavos running, skriptus, tad var samazin\u0101t l\u012bdz 10 min\u016bt\u0113m. Bet tas joproj\u0101m nav Unit testi, kas 5 sekun\u017eu laik\u0101 var izpild\u012bt 100 testus. <\/li>\n<\/ul>\n<p>\nUnit testu tr\u016bkums att\u0113lu vai Terraform modu\u013cu izveid\u0113 liek p\u0101rrakst\u012bt darbu uz atsevi\u0161\u0137iem pakalpojumiem, kurus vienk\u0101r\u0161i var izsist caur REST vai uz Python skriptiem.<\/p>\n<p>Piem\u0113ram, mums bija j\u0101dara t\u0101, lai, start\u0113jot virtu\u0101lo ma\u0161\u012bnu, t\u0101 re\u0123istr\u0113tu sevi pakalpojum\u0101 <noindex><a rel=\"nofollow\" href=\"https:\/\/www.scaleft.com\/\">ScaleFT<\/a><\/noindex>, bet, dz\u0113\u0161ot virtu\u0101lo ma\u0161\u012bnu, t\u0101 dz\u0113stu sevi.<\/p>\n<p>T\u0101 k\u0101 ScaleFT mums ir k\u0101 pakalpojums, m\u0113s esam spiesti str\u0101d\u0101t ar to caur API. Tur ir uzrakst\u012bta apvalka kode, ko var izsist un teikt: \"Ieej un izdz\u0113s to, to\". Tas glab\u0101 visas nepiecie\u0161am\u0101s iestat\u012bjumus un pieejas. <\/p>\n<p>Uz to m\u0113s jau varam rakst\u012bt norm\u0101lus testus, jo tas nek\u0101d\u0101 veid\u0101 neat\u0161\u0137iras no parasta programmat\u016bras: apvirs tiek m\u0113t\u0101ts, tu izsiti, un skat\u0101mies, kas notiek. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/dc17aaa64038acb080669d31fe8ecfe0.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<blockquote><p>Testu rezult\u0101ti: Unit test\u0113\u0161ana, kas sola OS sniegt rezult\u0101tu min\u016bt\u0113, to nenodro\u0161ina. Bet augst\u0101ki test\u0113\u0161anas veidi nodro\u0161ina efektu, ta\u010du risina tikai da\u013cu probl\u0113mu. <\/p><\/blockquote>\n<h4>P\u0101ra programm\u0113\u0161ana<\/h4>\n<p>\nTesti ir, protams, labi. Tos var rakst\u012bt daudz, tie var b\u016bt da\u017e\u0101du veidu. Tie darbosies savos l\u012bme\u0146os un sniegs mums atgriezenisko saiti. Bet probl\u0113ma ar sliktajiem Unit testiem, kuri dod vis\u0101tr\u0101ko OS, paliek. Tom\u0113r turpin\u0101m ilgoties p\u0113c \u0101tras OS, ar kuru ir viegli un pat\u012bkami str\u0101d\u0101t. Neaizmirstot par ieg\u016bt\u0101 risin\u0101juma kvalit\u0101ti. Pateicoties, ir tehnolo\u0123ijas, kas sniedz v\u0113l \u0101tr\u0101ku atgriezenisko saiti nek\u0101 modul\u0101rie testi. Tas ir p\u0101ru programm\u0113\u0161ana.<\/p>\n<p>Rakstot kodu, ir v\u0113lme p\u0113c iesp\u0113jas \u0101tr\u0101k sa\u0146emt atgriezenisko saiti par t\u0101 kvalit\u0101ti. J\u0101, j\u016bs varat visu rakst\u012bt feature zar\u0101 (lai nevienam neko nesaboj\u0101tu), izveidot pull request GitHub\u0101, pie\u0161\u0137irt k\u0101dam, kuru viedoklis ir svar\u012bgs, un gaid\u012bt atbildi. <\/p>\n<p>Bet gaid\u012bt var ilgi. Cilv\u0113ki visi ir aiz\u0146emti, un atbilde, pat ja t\u0101 ierodas, var neb\u016bt visaugst\u0101k\u0101 kvalit\u0101te. Pie\u0146emsim, ka atbilde pien\u0101k uzreiz, recenzents moment\u0101li saprot visu ieceri, bet atbilde tom\u0113r tiek sa\u0146emta ar aizkav\u0113\u0161anos, p\u0113c fakta. Un tom\u0113r gribas \u0101tr\u0101k. T\u0101p\u0113c p\u0101ru programm\u0113\u0161ana ir v\u0113rsta uz to \u2013 lai to dar\u012btu uzreiz, rakst\u012b\u0161anas br\u012bd\u012b.<\/p>\n<p>N\u0101kamaj\u0101 rindkop\u0101 uzskait\u012b\u0161u p\u0101ru programm\u0113\u0161anas stilus un to piem\u0113rojam\u012bbu, str\u0101d\u0101jot ar IaC: <\/p>\n<p><b>1. Klasiskais, pieredz\u0113jis + pieredz\u0113jis, mai\u0146a p\u0113c taimeru.<\/b> Divas lomas \u2013 vad\u012bt\u0101js un navigators. Divi cilv\u0113ki. Vi\u0146i str\u0101d\u0101 pie viena koda un main\u0101s lom\u0101s p\u0113c noteikta iepriek\u0161 norun\u0101ta laika perioda. <\/p>\n<p>Apskat\u012bsim m\u016bsu probl\u0113mu kombin\u0101cijas ar stilu: <\/p>\n<ul>\n<li>Probl\u0113ma: r\u012bku, l\u012bdzek\u013cu nepiln\u012bbas kodu izstr\u0101d\u0113. <br \/>\nNegat\u012bva ietekme: ilg\u0101k izstr\u0101d\u0101t, m\u0113s pal\u0113nin\u0101mies, tiek izjaukts darbs\/ritms.<br \/>\n K\u0101 c\u012bn\u0101mies: izmantojam citu r\u012bkspuises, kop\u012bgo IDE un v\u0113l m\u0101c\u0101mies \u0161ortkatus.<\/li>\n<li> Probl\u0113ma: l\u0113na izv\u0113r\u0161ana. <br \/>\nNegat\u012bva ietekme: palielina laiku, kas nepiecie\u0161ams, lai izveidotu str\u0101d\u0101jo\u0161u koda da\u013cu. Gaida, kam\u0113r gaida, rokas stiepjas nodarboties ar ko citu, kam\u0113r gaidi. <br \/>\nK\u0101 c\u012bn\u0101mies: neesam uzvar\u0113ju\u0161i.<\/li>\n<li> Probl\u0113ma: pieeju un prakses tr\u016bkums. <br \/>\nNegat\u012bva ietekme: nav zin\u0101\u0161anu, k\u0101 dar\u012bt labi, bet k\u0101 slikti. Pagarin\u0101ts atgriezenisk\u0101s saites ieg\u016b\u0161anas laiks. <br \/>\nK\u0101 c\u012bn\u0101mies: viedok\u013cu un prakses apmai\u0146a p\u0101ru darb\u0101 gandr\u012bz atrisina probl\u0113mu.<\/li>\n<\/ul>\n<p>\nGalven\u0101 probl\u0113ma \u0161\u012b stila izmanto\u0161an\u0101 IaC ir nevienm\u0113r\u012bgais darba temps. Tradicion\u0101laj\u0101 programmat\u016bras izstr\u0101d\u0113 tev ir \u013coti vienm\u0113r\u012bga kust\u012bba. Tu vari velt\u012bt piecas min\u016btes un uzrakst\u012bt N. Velt\u012bt desmit min\u016btes un uzrakst\u012bt 2N, piecpadsmit min\u016btes \u2013 3N. \u0160eit tu vari velt\u012bt piecas min\u016btes un uzrakst\u012bt N, bet p\u0113c tam v\u0113l tr\u012bsdesmit min\u016btes un uzrakst\u012bt desmito da\u013cu no N. \u0160eit tu neko nezini, ir aiz\u0137er\u0161an\u0101s, apjukums. Izpratnes ieg\u016b\u0161ana prasa laiku un novirza no tie\u0161\u0101 programm\u0113\u0161anas. <\/p>\n<blockquote><p>Secin\u0101jums: t\u012br\u0101 veid\u0101 mums neder.<\/p><\/blockquote>\n<p><b>2. Ping-pong. \u0160is pieejas pie\u0146em, ka viens dal\u012bbnieks raksta testu, bet otrs veic t\u0101 \u012bsteno\u0161anu.<\/b> \u0145emot v\u0113r\u0101, ka ar vien\u012bbas testiem viss ir sare\u017e\u0123\u012bti un j\u0101raksta ilgsto\u0161s integr\u0101cijas tests, visa ping-pong vieglums paz\u016bd. <\/p>\n<p>Varu teikt, ka m\u0113s esam izm\u0113\u0123in\u0101ju\u0161i pien\u0101kumu sadal\u012bjumu testu scen\u0101rija izstr\u0101d\u0113 un t\u0101 koda \u012bsteno\u0161an\u0101. Viens dal\u012bbnieks izdom\u0101ja scen\u0101riju, \u0161aj\u0101 darba da\u013c\u0101 vi\u0146\u0161 bija atbild\u012bgs, vi\u0146am bija p\u0113d\u0113jais v\u0101rds. Bet otrs bija atbild\u012bgs par \u012bsteno\u0161anu. Tas izdev\u0101s labi. Scen\u0101rija kvalit\u0101te \u0161\u0101d\u0101 pieej\u0101 palielin\u0101s. <\/p>\n<blockquote><p>Secin\u0101jums: diem\u017e\u0113l darba temps ne\u013cauj izmantot ping-pong k\u0101 p\u0101r\u012b programm\u0113\u0161anas praksi IaC.<\/p><\/blockquote>\n<p>\n <b>3. Sp\u0113c\u012bgais stils.<\/b> <noindex><a rel=\"nofollow\" href=\"http:\/\/llewellynfalco.blogspot.com\/2014\/06\/llewellyns-strong-style-pairing.html\">Sare\u017e\u0123\u012bta prakse<\/a><\/noindex>. Ideja ir t\u0101da, ka viens dal\u012bbnieks k\u013c\u016bst par vadl\u012bniju sniedz\u0113ju, bet otrs uz\u0146emas izpild\u012bt\u0101ja lomu. \u0160aj\u0101 gad\u012bjum\u0101 l\u0113mumu pie\u0146em\u0161ana ir tikai vadl\u012bniju sniedz\u0113ja rok\u0101s. Izpild\u012bt\u0101js tikai raksta un v\u0101rds var ietekm\u0113t notieko\u0161o. Lomas nemain\u0101s ilgu laiku. <\/p>\n<p>Labi piem\u0113rots m\u0101c\u012bb\u0101m, bet prasa sp\u0113c\u012bgas soci\u0101l\u0101s prasmes. \u0160eit m\u0113s ar\u012b apst\u0101j\u0101mies. Tehnika g\u0101ja sare\u017e\u0123\u012bti. Un \u0161eit pat neiet runa par infrastrukt\u016bru. <\/p>\n<blockquote><p>Secin\u0101jums: potenci\u0101li var tikt izmantots, m\u0113s nebeidzam centienus.<\/p><\/blockquote>\n<p>\n<b>4. Mobbing, swarming un visi zin\u0101mie, bet \u0161eit neuzskait\u012btie stili<\/b> netiek apl\u016bkoti, jo neesam tos izm\u0113\u0123in\u0101ju\u0161i un nevaram par to run\u0101t m\u016bsu darba kontekst\u0101.<\/p>\n<blockquote><p>Kop\u0113jie secin\u0101jumi par p\u0101r\u012b programm\u0113\u0161anas izmanto\u0161anu:<\/p>\n<ul>\n<li>Mums ir nevienm\u0113r\u012bgs darba temps, kas nov\u0113r\u0161 uzman\u012bbu.<\/li>\n<li>M\u0113s esam sask\u0101ru\u0161ies ar nepietiekami lab\u0101m soci\u0101laj\u0101m prasm\u0113m. Un t\u0113mas joma neveicina \u0161o m\u016bsu tr\u016bkumu p\u0101rvar\u0113\u0161anu.<\/li>\n<li>Ilgi testi, probl\u0113mas ar r\u012bkiem padara p\u0101ru izstr\u0101di l\u0113nu.<\/li>\n<\/ul>\n<\/blockquote>\n<p><b>5. Tom\u0113r bija ar\u012b pan\u0101kumi. M\u0113s izstr\u0101d\u0101j\u0101m savu metodi \u201eSakrit\u012bba \u2013 pretruna\u201d.<\/b> \u012asum\u0101 aprakst\u012b\u0161u, k\u0101 tas darbojas. <\/p>\n<p>Mums ir past\u0101v\u012bgi partneri uz da\u017e\u0101m dien\u0101m (maz\u0101k nek\u0101 ned\u0113\u013ca). M\u0113s kop\u0101 risin\u0101m vienu uzdevumu. K\u0101du laiku m\u0113s str\u0101d\u0101jam kop\u0101: viens raksta, otrs uzrauga, k\u0101 str\u0101d\u0101 atbalsta komanda. P\u0113c tam m\u0113s uz k\u0101du laiku izkl\u012bstam, katrs veic savus neatkar\u012bgos darbus, tad atkal apvienojam sp\u0113kus, \u013coti \u0101tri sinhroniz\u0113jamies, dar\u0101m kaut ko kop\u0101 un atkal izkl\u012bstam. <\/p>\n<h4>Pl\u0101no\u0161ana un komunik\u0101cija<\/h4>\n<p>\nP\u0113d\u0113jais prakses bloks, caur kuru tiek risin\u0101tas OS probl\u0113mas, ir darbu organiz\u0101cija ar pa\u0161iem uzdevumiem. \u0160eit ietilpst ar\u012b pieredzes apmai\u0146a, kas notiek \u0101rpus p\u0101ra darba. Apskat\u012bsim tr\u012bs prakses:<\/p>\n<p><b>1. Uzdevumi caur m\u0113r\u0137u koku.<\/b> Projektu kop\u012bgi organiz\u0113jam caur koku, kas bezgal\u012bgi ieiet n\u0101kotn\u0113. Tehniski tas tiek veikts Miro. Ir viens uzdevums \u2013 tas ir starpposma m\u0113r\u0137is. No t\u0101 iet gan maz\u0101ki m\u0113r\u0137i, gan uzdevumu grupas. No t\u0101m jau pa\u0161i uzdevumi. Visi uzdevumi tiek izveidoti un vad\u012bti uz \u0161\u012bs d\u0113\u013ca. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/fe601e959f0055de4f7f4c39ae713c31.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n\u0160\u012b sh\u0113ma ar\u012b sniedz atgriezenisko saiti, kas notiek vienreiz dien\u0101, kad m\u0113s sinhroniz\u0113jamies san\u0101ksm\u0113s. Visp\u0101r\u0113ja pl\u0101na kl\u0101tb\u016btne, turkl\u0101t struktur\u0113ta un piln\u012bb\u0101 atkl\u0101ta, \u013cauj ikvienam b\u016bt inform\u0113tam par notieko\u0161o un to, cik t\u0101lu m\u0113s esam progres\u0113ju\u0161i. <\/p>\n<p>Uzdevumu vizu\u0101l\u0101s redzam\u012bbas priek\u0161roc\u012bbas:<\/p>\n<ul>\n<li>C\u0113lo\u0146sakar\u012bba. Katrs uzdevums noved pie k\u0101da glob\u0101l\u0101 m\u0113r\u0137a. Uzdevumi tiek grup\u0113ti p\u0113c maz\u0101kiem m\u0113r\u0137iem. Infrastrukt\u016bras joma pati par sevi ir diezgan tehniska. Ne vienm\u0113r ir skaidrs, k\u0101 rakst\u012b\u0161ana par migr\u0101cijas rokasgr\u0101matu uz citiem nginx ietekm\u0113 biznesu. Kl\u0101t eso\u0161\u0101 m\u0113r\u0137a karte padara to saprotam\u0101ku.<br \/>\n <img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/fc4da9d277f7dc186a5710cf2be4419c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n C\u0113lo\u0146sakar\u012bba ir svar\u012bga uzdevumu \u012bpa\u0161\u012bba. T\u0101 tie\u0161i atbild uz jaut\u0101jumu: \u201eVai es daru pareizo?\u201d <\/li>\n<li>Paral\u0113lisms. Mums ir devi\u0146i cilv\u0113ki, un visiem uz viena uzdevuma uzbrukt fiziski nav iesp\u0113jams. Uzdevumu no vienas jomas ar\u012b ne vienm\u0113r var pietikt. M\u0113s spiesti paraleliz\u0113t darbu starp maz\u0101m darba grup\u0101m. \u0160aj\u0101 proces\u0101 grupas k\u0101du laiku str\u0101d\u0101 pie sava uzdevuma, t\u0101s var tikt stiprin\u0101tas ar k\u0101du citu. No \u0161\u012bs darba grupas reiz\u0113m aiziet cilv\u0113ki. K\u0101ds dodas atva\u013cin\u0101jum\u0101, k\u0101ds sagatavo zi\u0146ojumu konferencei DevOps conf, k\u0101ds raksta rakstu uz Habr. Zin\u0101t, k\u0101di m\u0113r\u0137i un uzdevumi var tikt veikti paral\u0113li, k\u013c\u016bst \u013coti svar\u012bgi. <\/li>\n<\/ul>\n<p>\n<b>2. Main\u012bgie vad\u012bt\u0101ji r\u012bta sapulc\u0113m.<\/b> Stand-up sapulc\u0113s rad\u0101s t\u0101da probl\u0113ma \u2013 cilv\u0113ki veic daudz uzdevumu paral\u0113li. Da\u017ereiz uzdevumi ir v\u0101ji saist\u012bti un nav skaidrs, kas ko dara. Un v\u0113l viena komandas dal\u012bbnieka viedoklis ir \u013coti svar\u012bgs. Tas ir papildu inform\u0101cija, kas sp\u0113j main\u012bt uzdevuma risin\u0101\u0161anas gaitu. Protams, parasti tev ir p\u0101rinieks, bet konsult\u0101cijas un padomi vienm\u0113r nav lieki. <\/p>\n<p>Lai uzlabotu \u0161o situ\u0101ciju, m\u0113s ievies\u0101m pa\u0146\u0113mi\u0146u \"Vad\u012bt\u0101ja mai\u0146a stand-up sapulc\u0113\". Tagad vi\u0146i rot\u0113 p\u0113c noteikta saraksta, un tam ir savs efekts. Kad pien\u0101k tava k\u0101rta, tev ir j\u0101iegremd\u0113jas un j\u0101izprot, kas notiek, lai labi vad\u012btu scrums sapulci. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/622973a654ecd3e27a7a366596814ffc.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\n<b>3. Iek\u0161\u0113jais demos.<\/b> Pal\u012bdz\u012bba uzdevuma risin\u0101\u0161an\u0101 no p\u0101r\u012b programm\u0113\u0161anas, vizualiz\u0101cija ar uzdevumu koku un pal\u012bdz\u012bba r\u012bta scrums sapulc\u0113s \u2013 ir labi, bet ne ide\u0101li. P\u0101r\u012b tu esi ierobe\u017eots tikai ar sav\u0101m zin\u0101\u0161an\u0101m. Uzdevumu koks pal\u012bdz glob\u0101li saprast, kas un ko dara. Bet vad\u012bt\u0101js un kol\u0113\u0123i no r\u012bta sapulc\u0113 nevar iedzi\u013cin\u0101ties tav\u0101s probl\u0113m\u0101s. Vi\u0146i, protams, var kaut ko ar\u012b nokav\u0113t. <\/p>\n<p>Risin\u0101jums tika atrasts, demonstr\u0113jot paveikto darbus cits citam un p\u0113c tam apsprie\u017eot tos. M\u0113s san\u0101kam reizi ned\u0113\u013c\u0101 uz stundu un par\u0101d\u0101m risin\u0101jumu deta\u013cas uzdevumiem, kurus esam veiku\u0161i p\u0113d\u0113j\u0101 ned\u0113\u013c\u0101. <\/p>\n<p>Demonstr\u0101cijas proces\u0101 ir j\u0101atkl\u0101j uzdevuma deta\u013cas un oblig\u0101ti j\u0101par\u0101da t\u0101s darbs. <\/p>\n<p><b class=\"spoiler_title\">Zi\u0146ojums var tikt veidots p\u0113c kontrolsaraksta.<\/b>1. Ievietojiet kontekst\u0101. No kurienes rad\u0101s uzdevums, k\u0101p\u0113c tas visp\u0101r bija nepiecie\u0161ams?<\/p>\n<p>2. K\u0101 uzdevums tika risin\u0101ts iepriek\u0161? Piem\u0113ram, bija nepiecie\u0161ama masveida peles klik\u0161\u0137in\u0101\u0161ana, vai ar\u012b visp\u0101r bija neiesp\u0113jami kaut ko izdar\u012bt.<\/p>\n<p>3. K\u0101 m\u0113s uzlabojam to. Piem\u0113ram: \"Skatieties, tagad ir skripti\u0146\u0161, l\u016bk, r\u012bc\u012bbas pl\u0101ns.\"<\/p>\n<p>4. Par\u0101diet, k\u0101 tas darbojas. V\u0113lams uzreiz izpild\u012bt k\u0101du lietot\u0101ja scen\u0101riju. Gribu X, daru Y, redzu Z. Piem\u0113ram, deployoju NGINX, skatos url, ieg\u016bstu 200 OK. Ja darb\u012bba ir ilgsto\u0161a, sagatavojiet iepriek\u0161, lai v\u0113l\u0101k par\u0101d\u012btu. V\u0113lams jau stundu pirms demo \u012bpa\u0161i nesaboj\u0101t, ja tas ir trausls.<\/p>\n<p>5. Izskaidrojiet, cik veiksm\u012bgi ir atrisin\u0101ta probl\u0113ma, k\u0101das gr\u016bt\u012bbas ir paliku\u0161as, kas nav pabeigts, k\u0101das uzlabojumu iesp\u0113jas past\u0101v n\u0101kotn\u0113. Piem\u0113ram, tagad cli, p\u0113c tam b\u016bs piln\u012bga automatiz\u0101cija CI.<\/p>\n<p>V\u0113lams katram run\u0101t\u0101jam iztikt 5-10 min\u016bt\u0113s. Ja j\u016bsu uzst\u0101\u0161an\u0101s ir b\u016btiska un aiz\u0146ems vair\u0101k laika, iepriek\u0161 saska\u0146ojiet to kan\u0101l\u0101 sre-takeover.<\/p>\n<p>P\u0113c kl\u0101tienes da\u013cas oblig\u0101ti seko diskusija thread\u0101. Tie\u0161i \u0161eit par\u0101d\u0101s nepiecie\u0161am\u0101 atgriezenisk\u0101 saite par saviem uzdevumiem. <\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/77da888d24b52c7eea7e65d2400e152c.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nNosl\u0113gum\u0101 tiek veikta anketa, lai noteiktu notikuma lietder\u012bbu. Tas jau ir atgriezenisk\u0101 saite par uzst\u0101\u0161an\u0101s b\u016bt\u012bbu un uzdevuma noz\u012bm\u012bgumu.<\/p>\n<p><img decoding=\"async\" alt=\"Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas ar XP\" src=\"\/wp-content\/uploads\/2019\/10\/7642cd87050171cc4a6bf278329dd283.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h2>Garie secin\u0101jumi un kas t\u0101l\u0101k<\/h2>\n<p>\nVar\u0113tu \u0161\u0137ist, ka raksta tonis ir nedaudz pesimistisks. T\u0101 nav. Divi pamata l\u012bme\u0146i atgriezenisk\u0101s saites ieg\u016b\u0161anai, proti, testi un p\u0101ru programm\u0113\u0161ana, str\u0101d\u0101. Ne visai ide\u0101li k\u0101 tradicion\u0101laj\u0101 izstr\u0101d\u0113, bet ir pozit\u012bvs efekts. <\/p>\n<p>Testi, pa\u0161reiz\u0113j\u0101 to form\u0101, sniedz tikai da\u013c\u0113ju koda p\u0101rkl\u0101jumu. Daudzas konfigur\u0101cijas funkcijas paliek netest\u0113tas. To ietekme uz tie\u0161o darbu rakstot kodu ir maza. Tom\u0113r integr\u0101cijas testiem ir efekts, un tie tie\u0161i \u013cauj bezbail\u012bgi veikt refaktoringus. Tas ir liels sasniegums. Ar fokusa p\u0101reju uz augsta l\u012bme\u0146a valod\u0101m (mums ir python, go) probl\u0113ma izz\u016bd. Un uz \"l\u012bmes\" ir daudz p\u0101rbaudes un nav nepiecie\u0161ams, pietiek ar visp\u0101r\u0113jo integr\u0101ciju.<\/p>\n<p>Darbs p\u0101ri vair\u0101k ir atkar\u012bgs no konkr\u0113t\u0101m person\u0101m. Ir uzdevuma faktors un m\u016bsu soft skills. Ar k\u0101du ir \u013coti labi, ar k\u0101du slikt\u0101k. \u0160im ir noteikti ieguvumi. Skaidrs, ka pat nepietiekama p\u0101ru darba noteikumu iev\u0113ro\u0161ana pats fakts, ka uzdevumi tiek veikti kop\u0101, pozit\u012bvi ietekm\u0113 rezult\u0101ta kvalit\u0101ti. Person\u012bgi man p\u0101ris darb\u0101 ir viegl\u0101k un pat\u012bkam\u0101k.<\/p>\n<p>Augst\u0101ka l\u012bme\u0146a veidi ietekmes uz OS \u2013 pl\u0101no\u0161ana un darb\u012bba ar uzdevumiem noteikti dod rezult\u0101tus: kvalitat\u012bva zin\u0101\u0161anu apmai\u0146a un izstr\u0101des kvalit\u0101tes uzlabo\u0161ana. <\/p>\n<h4>\u012asi secin\u0101jumi vien\u0101 teikum\u0101 <\/h4>\n<p><\/p>\n<ul>\n<li>XP prakse str\u0101d\u0101 IaC, bet ar maz\u0101ku efektivit\u0101ti.<\/li>\n<li>Pastipriniet to, kas str\u0101d\u0101.<\/li>\n<li>Izdom\u0101jiet savus kompens\u0101cijas meh\u0101nismus un prakses.<\/li>\n<\/ul>\n<p>Avots: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/dodopizzaio\/blog\/470620\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u044f \u0432\u0435\u0440\u043d\u0443\u043b\u0441\u044f, \u0447\u0442\u043e\u0431\u044b \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c, \u043a\u0430\u043a\u0438\u0435 \u043f\u043e\u0434\u0445\u043e\u0434\u044b \u0438 \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0438 \u043f\u043e\u043c\u043e\u0433\u0443\u0442 \u0432\u044b\u0440\u0432\u0430\u0442\u044c\u0441\u044f \u0438\u0437 \u0431\u0435\u0437\u0434\u043d\u044b \u043e\u0442\u0447\u0430\u044f\u043d\u0438\u044f \u0438 \u0432\u044b\u0440\u0443\u043b\u0438\u0442\u044c \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u044e \u0432 \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e\u0435 \u0440\u0443\u0441\u043b\u043e. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u00abInfrastructure as code: \u043f\u0435\u0440\u0432\u043e\u0435 \u0437\u043d\u0430\u043a\u043e\u043c\u0441\u0442\u0432\u043e\u00bb \u044f \u0434\u0435\u043b\u0438\u043b\u0441\u044f \u0441\u0432\u043e\u0438\u043c \u0432\u043f\u0435\u0447\u0430\u0442\u043b\u0435\u043d\u0438\u0435\u043c \u043e\u0442 \u044d\u0442\u043e\u0439 \u0441\u0444\u0435\u0440\u044b, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":29066,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-38747","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.5 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.5\" \/>\n\t\t<meta property=\"og:locale\" content=\"lv_LV\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T19:25:42+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:25:42+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Infrastructure as Code: k\u0101 risin\u0101t probl\u0113mas, izmantojot XP | ProHoster","description":"Sveiki, Habr! Agr\u0101k es s\u016bdz\u0113jos par dz\u012bvi infrastrukt\u016bras k\u0101 koda paradigmas ietvaros un neko nepied\u0101v\u0101ju eso\u0161\u0101s situ\u0101cijas risin\u0101\u0161anai.","canonical_url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"lv_LV","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47Infrastructure as Code: \u043a\u0430\u043a \u043f\u043e\u0431\u043e\u0440\u043e\u0442\u044c \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e XP | ProHoster","og:description":"\u041f\u0440\u0438\u0432\u0435\u0442, \u0425\u0430\u0431\u0440! \u0420\u0430\u043d\u044c\u0448\u0435 \u044f \u0436\u0430\u043b\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 \u0436\u0438\u0437\u043d\u044c \u0432 \u043f\u0430\u0440\u0430\u0434\u0438\u0433\u043c\u0435 Infrastructure as code \u0438 \u043d\u0438\u0447\u0435\u0433\u043e \u043d\u0435 \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u043b \u0434\u043b\u044f \u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0441\u043b\u043e\u0436\u0438\u0432\u0448\u0435\u0439\u0441\u044f \u0441\u0438\u0442\u0443\u0430\u0446\u0438\u0438.","og:url":"https:\/\/prohoster.info\/lv\/blog\/administrirovanie\/infrastructure-as-code-kak-poborot-problemy-s-pomoshhyu-xp","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T19:25:42+00:00","article:modified_time":"2019-10-31T19:25:42+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"38747","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-23 23:16:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:04:30","updated":"2026-01-23 23:16:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/38747","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/comments?post=38747"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/posts\/38747\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media\/29066"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/media?parent=38747"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/categories?post=38747"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/lv\/wp-json\/wp\/v2\/tags?post=38747"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}