{"id":90386,"date":"2020-07-31T13:42:20","date_gmt":"2020-07-31T11:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management"},"modified":"2020-07-31T13:42:20","modified_gmt":"2020-07-31T11:42:20","slug":"triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","status":"publish","type":"post","link":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","title":{"rendered":"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Bl\u00ed\u017e\u00ed se Nov\u00fd rok. D\u011bti po cel\u00e9 zemi ji\u017e poslaly dopisy D\u011bdu Mr\u00e1zovi nebo si p\u0159\u00e1ly d\u00e1rky, a hlavn\u00ed vykonavatel jejich p\u0159\u00e1n\u00ed \u2013 jeden z velk\u00fdch maloobchodn\u00edk\u016f \u2013 se p\u0159ipravoval na vrchol prodeje. V prosinci zat\u00ed\u017een\u00ed jeho datov\u00e9ho centra vzr\u016fst\u00e1 n\u011bkolikan\u00e1sobn\u011b. Proto se spole\u010dnost rozhodla modernizovat datov\u00e9 centrum a zav\u00e9st do provozu n\u011bkolik des\u00edtek nov\u00fdch server\u016f m\u00edsto vybaven\u00ed, jeho\u017e \u017eivotnost kon\u010dila. Na tomto pozad\u00ed se p\u0159\u00edb\u011bh s padaj\u00edc\u00edmi sn\u011bhov\u00fdmi vlo\u010dkami kon\u010d\u00ed a za\u010d\u00edn\u00e1 thriller. <\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/ebc2128d73e9a0e7f1e383b4b04ee492.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nVybaven\u00ed dorazilo na m\u00edsto n\u011bkolik m\u011bs\u00edc\u016f p\u0159ed vrcholem prodeje. Provozn\u00ed slu\u017eba samoz\u0159ejm\u011b v\u00ed, jak a co nastavit na serverech, aby je uvedla do produk\u010dn\u00edho prost\u0159ed\u00ed. Ale pot\u0159ebovali jsme tento proces automatizovat a vylou\u010dit lidsk\u00fd faktor. Krom\u011b toho byly servery nahrazov\u00e1ny p\u0159ed migrac\u00ed souboru syst\u00e9m\u016f SAP, kter\u00e9 byly pro spole\u010dnost kriticky d\u016fle\u017eit\u00e9. <\/p>\n<p>Zah\u00e1jen\u00ed provozu nov\u00fdch server\u016f bylo pevn\u011b spojeno s term\u00ednem. A posunout ho by znamenalo ohrozit dod\u00e1vky miliardy d\u00e1rk\u016f a migraci syst\u00e9m\u016f. Datum by ani t\u00fdm slo\u017een\u00fd z D\u011bda Mr\u00e1ze a Sisyphusa nezm\u011bnil \u2013 migraci syst\u00e9mu SAP pro \u0159\u00edzen\u00ed skladu lze prov\u00e9st pouze jednou ro\u010dn\u011b. Od 31. prosince do 1. ledna obrovsk\u00e9 sklady maloobchodn\u00edka, kter\u00e9 maj\u00ed dohromady rozlohu 20 fotbalov\u00fdch h\u0159i\u0161\u0165, zastavuj\u00ed \u010dinnost na 15 hodin. A to je jedin\u00fd \u010dasov\u00fd \u00fasek pro p\u0159est\u011bhov\u00e1n\u00ed syst\u00e9mu. Nem\u011bli jsme \u017e\u00e1dn\u00fd prostor pro chyby p\u0159i uveden\u00ed server\u016f. <\/p>\n<p>Hned uvedu na pravou m\u00edru: m\u016fj p\u0159\u00edb\u011bh odr\u00e1\u017e\u00ed n\u00e1stroje a procesy spr\u00e1vy konfigurac\u00ed, kter\u00e9 pou\u017e\u00edv\u00e1 n\u00e1\u0161 t\u00fdm.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nKomplex spr\u00e1vy konfigurac\u00ed sest\u00e1v\u00e1 z n\u011bkolika \u00farovn\u00ed. Kl\u00ed\u010dovou sou\u010d\u00e1st\u00ed je syst\u00e9m CMS. P\u0159i pr\u016fmyslov\u00e9m provozu by absence jedn\u00e9 z \u00farovn\u00ed nevyhnuteln\u011b vedla k nep\u0159\u00edjemn\u00fdm z\u00e1zrak\u016fm.<\/p>\n<h1>Spr\u00e1va instalace OS<\/h1>\n<p>\nPrvn\u00ed \u00farove\u0148 p\u0159edstavuje syst\u00e9m \u0159\u00edzen\u00ed instalace opera\u010dn\u00edch syst\u00e9m\u016f na fyzick\u00e9 a virtu\u00e1ln\u00ed servery. Vytv\u00e1\u0159\u00ed z\u00e1kladn\u00ed konfigurace OS a zbavuje n\u00e1s lidsk\u00e9ho faktoru. <\/p>\n<p>S pomoc\u00ed tohoto syst\u00e9mu jsme z\u00edsk\u00e1vali standardizovan\u00e9 a pro dal\u0161\u00ed automatizaci pou\u017eiteln\u00e9 instance server\u016f s opera\u010dn\u00edm syst\u00e9mem. P\u0159i \"roz\u0161i\u0159ov\u00e1n\u00ed\" dost\u00e1valy minim\u00e1ln\u00ed sadu m\u00edstn\u00edch u\u017eivatel\u016f a ve\u0159ejn\u00fdch kl\u00ed\u010d\u016f SSH a tak\u00e9 sjednocenou konfiguraci OS. M\u011bli jsme zaru\u010denou kontrolu server\u016f prost\u0159ednictv\u00edm CMS a byli jsme si jisti, \u017ee n\u00ed\u017ee, na \u00farovni OS, nejsou \u017e\u00e1dn\u00e1 p\u0159ekvapen\u00ed. <\/p>\n<p>\u00dakol \"maxim\u00e1ln\u011b\" pro syst\u00e9m spr\u00e1vy instalace \u2014 automaticky nastavovat servery od \u00farovn\u011b BIOS\/Firmware a\u017e po OS. Mnoh\u00e9 zde z\u00e1vis\u00ed na hardwaru a \u00fakolu nastaven\u00ed. Pro heterogenn\u00ed hardware lze zv\u00e1\u017eit <noindex><a rel=\"nofollow\" href=\"https:\/\/www.dmtf.org\/standards\/redfish\">REDFISH API<\/a><\/noindex>. Pokud ve\u0161ker\u00e9 \u201e\u017eelezo\u201c poch\u00e1z\u00ed od jednoho dodavatele, je \u010dasto pohodln\u011bj\u0161\u00ed pou\u017e\u00edt hotov\u00e9 prost\u0159edky spr\u00e1vy (nap\u0159\u00edklad HP ILO Amplifier, DELL OpenManage atd.).<\/p>\n<p>Pro instalaci OS na fyzick\u00fdch serverech jsme pou\u017e\u00edvali v\u0161em dob\u0159e zn\u00e1m\u00fd Cobbler, ve kter\u00e9m je definov\u00e1n soubor sjednocen\u00fdch profil\u016f instalace s provozn\u00ed slu\u017ebou. P\u0159i p\u0159id\u00e1v\u00e1n\u00ed nov\u00e9ho serveru do infrastruktury in\u017een\u00fdr p\u0159i\u0159adil MAC adresu serveru po\u017eadovan\u00e9mu profilu v Cobbler. P\u0159i prvn\u00edm spu\u0161t\u011bn\u00ed p\u0159es s\u00ed\u0165 server z\u00edskal do\u010dasnou adresu a nov\u00fd OS. Pot\u00e9 byl p\u0159eveden do c\u00edlov\u00e9 VLAN\/IP adresace a pr\u00e1ce pokra\u010dovala tam. Ano, zm\u011bna VLAN zabere \u010das a vy\u017eaduje schv\u00e1len\u00ed, ale poskytuje dal\u0161\u00ed ochranu proti n\u00e1hodn\u00e9 instalaci serveru ve v\u00fdrobn\u00edm prost\u0159ed\u00ed.<\/p>\n<p>Virtu\u00e1ln\u00ed servery jsme vytv\u00e1\u0159eli na z\u00e1klad\u011b \u0161ablon p\u0159ipraven\u00fdch pomoc\u00ed HashiCorp Packer. D\u016fvod byl stejn\u00fd: aby se p\u0159ede\u0161lo mo\u017en\u00fdm lidsk\u00fdm chyb\u00e1m p\u0159i instalaci OS. Na rozd\u00edl od fyzick\u00fdch server\u016f v\u0161ak Packer umo\u017e\u0148uje nevyu\u017e\u00edvat PXE, s\u00ed\u0165ov\u00e9 zav\u00e1d\u011bn\u00ed a zm\u011bnu VLAN. To usnadnilo a zjednodu\u0161ilo vytv\u00e1\u0159en\u00ed virtu\u00e1ln\u00edch server\u016f. <\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/8cde23a4ad2ba1573bc88ec174bfe6b5.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 1. \u0158\u00edzen\u00ed instalace opera\u010dn\u00edch syst\u00e9m\u016f.<\/i><\/p>\n<h1>Spr\u00e1va tajemstv\u00ed<\/h1>\n<p>\nKa\u017ed\u00fd syst\u00e9m spr\u00e1vy konfigurac\u00ed obsahuje data, kter\u00e1 by m\u011bla b\u00fdt skryta p\u0159ed b\u011b\u017en\u00fdmi u\u017eivateli, ale jsou pot\u0159ebn\u00e1 pro p\u0159\u00edpravu syst\u00e9m\u016f. Jsou to hesla m\u00edstn\u00edch u\u017eivatel\u016f a servisn\u00edch \u00fa\u010dt\u016f, kl\u00ed\u010de certifik\u00e1t\u016f, r\u016fzn\u00e9 API tokeny atd. Obvykle se jim \u0159\u00edk\u00e1 \"tajemstv\u00ed\".<\/p>\n<p>Pokud od sam\u00e9ho za\u010d\u00e1tku nevymez\u00edte, kde a jak tyto tajemstv\u00ed uchov\u00e1vat, mohou se v z\u00e1vislosti na p\u0159\u00edsnosti po\u017eadavk\u016f na informa\u010dn\u00ed bezpe\u010dnost objevit takov\u00e9 zp\u016fsoby uchov\u00e1v\u00e1n\u00ed:<\/p>\n<ul>\n<li>p\u0159\u00edmo v k\u00f3du spr\u00e1vy konfigurace nebo v souborech v repozit\u00e1\u0159i;<\/li>\n<li>ve specializovan\u00fdch n\u00e1stroj\u00edch pro spr\u00e1vu konfigurac\u00ed (nap\u0159. Ansible Vault);<\/li>\n<li>v CI\/CD syst\u00e9mech (Jenkins\/TeamCity\/GitLab\/atd.) nebo v syst\u00e9mech spr\u00e1vy konfigurac\u00ed (Ansible Tower\/Ansible AWX);<\/li>\n<li>tak\u00e9 mohou b\u00fdt tajemstv\u00ed p\u0159ed\u00e1v\u00e1na \u201eru\u010dn\u00edm zp\u016fsobem\u201c. Nap\u0159\u00edklad jsou um\u00edst\u011bna na p\u0159edem dohodnut\u00e9 m\u00edsto a pot\u00e9 jsou pou\u017e\u00edv\u00e1na syst\u00e9my spr\u00e1vy konfigurac\u00ed;<\/li>\n<li>r\u016fzn\u00e9 kombinace v\u00fd\u0161e popsan\u00e9ho.<\/li>\n<\/ul>\n<p>\nKa\u017ed\u00e1 metoda m\u00e1 sv\u00e9 nedostatky. Hlavn\u00ed z nich je absence politik p\u0159\u00edstupu k tajemstv\u00edm: nelze nebo je obt\u00ed\u017en\u00e9 ur\u010dit, kdo m\u016f\u017ee pou\u017e\u00edvat ta nebo ta tajemstv\u00ed. Dal\u0161\u00edm m\u00ednusem je absence auditu p\u0159\u00edstup\u016f a plnohodnotn\u00e9ho \u017eivotn\u00edho cyklu. Jak rychle nahradit nap\u0159\u00edklad ve\u0159ejn\u00fd kl\u00ed\u010d, kter\u00fd je zaps\u00e1n v k\u00f3du a v n\u011bkolika souvisej\u00edc\u00edch syst\u00e9mech?<\/p>\n<p>Pou\u017e\u00edvali jsme centralizovan\u00e9 \u00falo\u017ei\u0161t\u011b tajemstv\u00ed HashiCorp Vault. To n\u00e1m umo\u017enilo: <\/p>\n<ul>\n<li>bezpe\u010dn\u011b uchov\u00e1vat tajemstv\u00ed. Jsou \u0161ifrov\u00e1na, a i kdyby se n\u011bkdo dostal k datab\u00e1zi \u00falo\u017ei\u0161t\u011b Vault (nap\u0159. obnoven\u00edm z z\u00e1lohy), tak nebude schopn\u00fd p\u0159e\u010d\u00edst tam ulo\u017een\u00e1 tajemstv\u00ed; <\/li>\n<li>organizovat politiky p\u0159\u00edstupu k tajemstv\u00edm. U\u017eivatel\u016fm a aplikac\u00edm jsou p\u0159\u00edstupn\u00e1 pouze \u201ep\u0159id\u011blen\u00e1\u201c tajemstv\u00ed;<\/li>\n<li>prov\u00e1d\u011bt audit p\u0159\u00edstupu k tajemstv\u00edm. Jak\u00e9koli akce s tajemstv\u00edmi jsou zaznamen\u00e1v\u00e1ny v auditorsk\u00e9m protokolu Vault;<\/li>\n<li>organizovat plnohodnotn\u00fd \u201e\u017eivotn\u00ed cyklus\u201c pr\u00e1ce s tajemstv\u00edmi. Mohou b\u00fdt vytv\u00e1\u0159ena, odvol\u00e1v\u00e1na, nastavov\u00e1ny jejich platnosti atd.<\/li>\n<li>snadno se integrovat s jin\u00fdmi syst\u00e9my, kter\u00e9 pot\u0159ebuj\u00ed p\u0159\u00edstup k tajemstv\u00ed;<\/li>\n<li>a tak\u00e9 aplikovat end-to-end \u0161ifrov\u00e1n\u00ed, jednor\u00e1zov\u00e1 hesla pro OS a DB, certifik\u00e1ty autorizovan\u00fdch center atd. <\/li>\n<\/ul>\n<p>\nNyn\u00ed p\u0159ejdeme k centr\u00e1ln\u00edmu syst\u00e9mu autentizace a autorizace. Mohli bychom se obej\u00edt i bez n\u011bj, ale spr\u00e1va u\u017eivatel\u016f ve spoust\u011b souvisej\u00edc\u00edch syst\u00e9m\u016f je p\u0159\u00edli\u0161 slo\u017eit\u00e1. Nastavili jsme autentizaci a autorizaci prost\u0159ednictv\u00edm slu\u017eby LDAP. Jinak bychom v tom sam\u00e9m Vault museli neust\u00e1le vyd\u00e1vat a sledovat autentiza\u010dn\u00ed tokeny pro u\u017eivatele. A odstra\u0148ov\u00e1n\u00ed a p\u0159id\u00e1v\u00e1n\u00ed u\u017eivatel\u016f by se prom\u011bnilo v \u00fakol \u201eud\u011blal\/a jsem to v\u0161ude, kde jsem m\u011bl\/a vytvo\u0159it\/odstranit tuto identitu?\u201c <\/p>\n<p>P\u0159id\u00e1v\u00e1me je\u0161t\u011b jednu \u00farove\u0148 do na\u0161eho syst\u00e9mu: spr\u00e1vu tajemstv\u00ed a centr\u00e1ln\u00ed autentizaci\/autorizaci:<\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/993e863417898c39940fe0bc9ee55b1e.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 2. Spr\u00e1va tajemstv\u00ed.<\/i><\/p>\n<h1>Spr\u00e1va konfigurac\u00ed<\/h1>\n<p>\nDostali jsme se do j\u00e1dra \u2014 do syst\u00e9mu CMS. V na\u0161em p\u0159\u00edpad\u011b se jedn\u00e1 o kombinaci Ansible a Red Hat Ansible AWX. <\/p>\n<p>M\u00edsto Ansible m\u016f\u017ee b\u00fdt pou\u017eit Chef, Puppet, SaltStack. Zvolili jsme Ansible z n\u011bkolika d\u016fvod\u016f. <\/p>\n<ul>\n<li>Za prv\u00e9, jeho univerz\u00e1lnost. Sada hotov\u00fdch modul\u016f pro spr\u00e1vu <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.ansible.com\/ansible\/latest\/modules\/modules_by_category.html\">p\u016fsob\u00ed impozantn\u011b<\/a><\/noindex>. A pokud n\u011bco chyb\u00ed, lze to naj\u00edt na GitHubu a Galaxy. <\/li>\n<li>Za druh\u00e9, nen\u00ed t\u0159eba instalovat a udr\u017eovat agenty na spravovan\u00e9m za\u0159\u00edzen\u00ed, dokazovat, \u017ee neovliv\u0148uj\u00ed z\u00e1t\u011b\u017e, a potvrzovat nep\u0159\u00edtomnost \"zadn\u00edch vr\u00e1tek\". <\/li>\n<li>Za t\u0159et\u00ed, Ansible m\u00e1 n\u00edzkou bari\u00e9ru vstupu. Kvalifikovan\u00fd in\u017een\u00fdr nap\u00ed\u0161e funk\u010dn\u00ed playbook doslova prvn\u00ed den pr\u00e1ce s produktem.<\/li>\n<\/ul>\n<p>\nAle samotn\u00fd Ansible v pr\u016fmyslov\u00e9m prost\u0159ed\u00ed n\u00e1m nesta\u010dil. Jinak by vzniklo mnoho probl\u00e9m\u016f s omezen\u00edm p\u0159\u00edstupu a auditem \u010dinnost\u00ed administr\u00e1tor\u016f. Jak rozd\u011blit p\u0159\u00edstup? P\u0159eci bylo pot\u0159eba, aby ka\u017ed\u00e9 odd\u011blen\u00ed spravovalo (\u010dti \u2014 spou\u0161t\u011blo Ansible playbook) \"svou\" skupinu server\u016f. Jak povolit spu\u0161t\u011bn\u00ed konkr\u00e9tn\u00edch Ansible playbook pouze ur\u010dit\u00e9m zam\u011bstnanc\u016fm? Nebo jak sledovat, kdo spou\u0161t\u011bl playbook, ani\u017e bychom zakl\u00e1dali mno\u017estv\u00ed lok\u00e1ln\u00edch u\u017eivatelsk\u00fdch \u00fa\u010dt\u016f na serverech a za\u0159\u00edzen\u00edch spravovan\u00fdch Ansible?<\/p>\n<p>V\u011bt\u0161inu takov\u00fdch ot\u00e1zek vy\u0159e\u0161\u00ed Red Hat <noindex><a rel=\"nofollow\" href=\"https:\/\/www.ansible.com\/products\/tower\">Ansible Tower<\/a><\/noindex>, nebo jeho open-source upstream projekt <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/ansible\/awx\">Ansible AWX<\/a><\/noindex>. Proto jsme ho pro z\u00e1kazn\u00edka zvolili. <\/p>\n<p>A je\u0161t\u011b jeden prvek do obrazu na\u0161eho CMS syst\u00e9mu. Ansible playbook by m\u011bl b\u00fdt ulo\u017een v syst\u00e9mech pro spr\u00e1vu k\u00f3du. U n\u00e1s je to <noindex><a rel=\"nofollow\" href=\"https:\/\/about.gitlab.com\/install\/\">GitLab CE<\/a><\/noindex>.<\/p>\n<p>Tak\u017ee samotn\u00e9 konfigurace \u0159\u00edd\u00ed kombinace Ansible\/Ansible AWX\/GitLab (viz Obr. 3). Samoz\u0159ejm\u011b, AWX\/GitLab jsou integrov\u00e1ny do jedin\u00e9 autentifika\u010dn\u00ed s\u00edt\u011b, a Ansible playbook je propojen s HashiCorp Vault. Konfigurace se dost\u00e1vaj\u00ed do produk\u010dn\u00edho prost\u0159ed\u00ed pouze p\u0159es Ansible AWX, ve kter\u00e9m jsou stanovena v\u0161echna \"pravidla hry\": kdo a co m\u016f\u017ee konfigurovat, odkud br\u00e1t k\u00f3d pro spr\u00e1vu konfigurac\u00ed pro CMS atd.<\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/f4f5b3904a2145d7283cd52f921bca89.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 3. Spr\u00e1va konfigurac\u00ed.<\/i><\/p>\n<h1>Spr\u00e1va testov\u00e1n\u00ed<\/h1>\n<p>\nNa\u0161e konfigurace je prezentov\u00e1na formou k\u00f3du. Proto se mus\u00edme \u0159\u00eddit stejn\u00fdmi pravidly jako v\u00fdvoj\u00e1\u0159i softwaru. Bylo nezbytn\u00e9 zorganizovat procesy v\u00fdvoje, nep\u0159etr\u017eit\u00e9ho testov\u00e1n\u00ed, dod\u00e1v\u00e1n\u00ed a aplikace konfigura\u010dn\u00edho k\u00f3du na produk\u010dn\u00ed servery.<\/p>\n<p>Pokud to neud\u011bl\u00e1me hned, nastaven\u00e9 role pro konfiguraci bu\u010f p\u0159estanou b\u00fdt podporov\u00e1ny a m\u011bn\u011bny, nebo se p\u0159estanou spou\u0161t\u011bt v produkci. V l\u00e9\u010db\u011b t\u00e9to bolesti je zn\u00e1m\u00e9 \u0159e\u0161en\u00ed, kter\u00e9 se osv\u011bd\u010dilo v tomto projektu:<\/p>\n<ul>\n<li>ka\u017ed\u00e1 role je pokryta modulov\u00fdmi testy;<\/li>\n<li>testy se automaticky spou\u0161t\u00ed p\u0159i jak\u00e9koli zm\u011bn\u011b v k\u00f3du, kter\u00fd ovl\u00e1d\u00e1 konfigurace;<\/li>\n<li>zm\u011bny v k\u00f3du spravuj\u00edc\u00edm konfigurace se dostanou do produk\u010dn\u00edho prost\u0159ed\u00ed pouze po \u00fasp\u011b\u0161n\u00e9m dokon\u010den\u00ed v\u0161ech test\u016f a code review.<\/li>\n<\/ul>\n<p>\nV\u00fdvoj k\u00f3du a spr\u00e1va konfigurac\u00ed se staly klidn\u011bj\u0161\u00edmi a p\u0159edv\u00eddateln\u011bj\u0161\u00edmi. Pro organizaci nep\u0159etr\u017eit\u00e9ho testov\u00e1n\u00ed jsme pou\u017eili n\u00e1stroj GitLab CI\/CD a jako r\u00e1mec pro organizaci test\u016f jsme vzali <noindex><a rel=\"nofollow\" href=\"https:\/\/molecule.readthedocs.io\/en\/latest\/\">Ansible Molecule<\/a><\/noindex>.<\/p>\n<p>P\u0159i jak\u00e9koli zm\u011bn\u011b v k\u00f3du spravuj\u00edc\u00edm konfigurace GitLab CI\/CD vyvol\u00e1v\u00e1 Molecule: <\/p>\n<ul>\n<li>ta kontroluje syntaxi k\u00f3du, <\/li>\n<li>zved\u00e1 Docker kontejner, <\/li>\n<li>aplikuje upraven\u00fd k\u00f3d do vytvo\u0159en\u00e9ho kontejneru, <\/li>\n<li>prov\u00e1d\u00ed kontrolu role na idempotentnost a spou\u0161t\u00ed testy pro tento k\u00f3d (granularita je zde na \u00farovni ansible role, viz Obr. 4).<\/li>\n<\/ul>\n<p>\nKonfigurace do produk\u010dn\u00edho prost\u0159ed\u00ed jsme dod\u00e1vali pomoc\u00ed Ansible AWX. Odpov\u011bdn\u00ed in\u017een\u00fd\u0159i za provoz aplikovali zm\u011bny v konfiguraci prost\u0159ednictv\u00edm p\u0159edem definovan\u00fdch \u0161ablon. AWX p\u0159i ka\u017ed\u00e9m nasazen\u00ed \u201edotazoval\u201c posledn\u00ed verzi k\u00f3du z master v\u011btve GitLab. Tak jsme vylou\u010dili pou\u017eit\u00ed neov\u011b\u0159en\u00e9ho nebo zastaral\u00e9ho k\u00f3du v produk\u010dn\u00edm prost\u0159ed\u00ed. P\u0159irozen\u011b, k\u00f3d se na master v\u011btev dostal pouze po testov\u00e1n\u00ed, revizi a schv\u00e1len\u00ed.<\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/aa8f6205f05792a6a1120ad7360ab102.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 4. Automatizovan\u00e9 testov\u00e1n\u00ed rol\u00ed v GitLab CI\/CD.<\/i><\/p>\n<p>Je zde je\u0161t\u011b probl\u00e9m spojen\u00fd s provozov\u00e1n\u00edm produk\u010dn\u00edch syst\u00e9m\u016f. V re\u00e1ln\u00e9m \u017eivot\u011b je velmi obt\u00ed\u017en\u00e9 prov\u00e1d\u011bt zm\u011bny v konfiguraci pouze prost\u0159ednictv\u00edm k\u00f3du CMS. Doch\u00e1z\u00ed k mimo\u0159\u00e1dn\u00fdm situac\u00edm, kdy in\u017een\u00fdr mus\u00ed zm\u011bnit konfiguraci \u201ehned a te\u010f\u201c, ani\u017e by \u010dekal na \u00fapravu k\u00f3du, testov\u00e1n\u00ed, schv\u00e1len\u00ed atd.<\/p>\n<p>V d\u016fsledku ru\u010dn\u00edch zm\u011bn vznikaj\u00ed nesrovnalosti v konfiguraci na identick\u00e9m za\u0159\u00edzen\u00ed (nap\u0159\u00edklad u uzl\u016f HA klastru r\u016fzn\u00e1 konfigurace nastaven\u00ed sysctl). Nebo skute\u010dn\u00e1 konfigurace na za\u0159\u00edzen\u00ed se li\u0161\u00ed od t\u00e9, kter\u00e1 je definov\u00e1na v k\u00f3du CMS. <\/p>\n<p>Proto\u017ee krom\u011b nep\u0159etr\u017eit\u00e9ho testov\u00e1n\u00ed kontrolujeme produk\u010dn\u00ed prost\u0159ed\u00ed na nesoulad konfigurac\u00ed. Zvolili jsme nejjednodu\u0161\u0161\u00ed variantu: spu\u0161t\u011bn\u00ed k\u00f3du konfigurace CMS v re\u017eimu \"dry run\", tedy bez pou\u017eit\u00ed zm\u011bn, ale s upozorn\u011bn\u00edm na v\u0161echna nesoulady mezi pl\u00e1novanou a re\u00e1lnou konfigurac\u00ed. Realizovali jsme to pomoc\u00ed periodick\u00fdch spu\u0161t\u011bn\u00ed v\u0161ech Ansible playbook s mo\u017enost\u00ed \"--check\" na produk\u010dn\u00edch serverech. Za spu\u0161t\u011bn\u00ed a aktu\u00e1lnost playbook op\u011bt odpov\u00edd\u00e1 Ansible AWX (viz obr. 5):<\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/108a5a473f60ab76ee15f9334ebcbab7.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 5. Kontroly nesrovnalost\u00ed v konfigurac\u00edch v Ansible AWX.<\/i><\/p>\n<p>Po kontrol\u00e1ch AWX pos\u00edl\u00e1 zpr\u00e1vu o nesrovnalostech administr\u00e1tor\u016fm. Ti zkoumaj\u00ed problematickou konfiguraci a pot\u00e9 ji opravuj\u00ed pomoc\u00ed upraven\u00fdch playbook\u016f. T\u00edmto zp\u016fsobem udr\u017eujeme konfiguraci v produk\u010dn\u00edm prost\u0159ed\u00ed a CMS je v\u017edy v aktu\u00e1ln\u00edm a synchronizovan\u00e9m stavu. To eliminuje nep\u0159\u00edjemn\u00e1 \u201ez\u00e1zraky\u201c, kdy\u017e se k\u00f3d CMS aplikuje na \u201e\u017eiv\u00fdch\u201c serverech.<\/p>\n<p>Nyn\u00ed m\u00e1me d\u016fle\u017eitou \u00farove\u0148 testov\u00e1n\u00ed, skl\u00e1daj\u00edc\u00ed se z Ansible AWX\/GitLab\/Molecule (Obr. 6).<\/p>\n<p><img decoding=\"async\" alt=\"Thriller o konfiguraci server\u016f bez z\u00e1zrak\u016f s managementem konfigurac\u00ed\" src=\"\/wp-content\/uploads\/2020\/07\/f487f5603e90b0c753fb9decf9018b11.jpeg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<i>Obr. 6. \u0158\u00edzen\u00ed testov\u00e1n\u00edm.<\/i><\/p>\n<p>Slo\u017eit\u00e9? Nesouhlas\u00edm. Ale takov\u00fd komplex \u0159\u00edzen\u00ed konfigurac\u00ed se stal vy\u010derp\u00e1vaj\u00edc\u00ed odpov\u011bd\u00ed na \u0159adu ot\u00e1zek spojen\u00fdch s automatizac\u00ed nastaven\u00ed server\u016f. Nyn\u00ed m\u00e1 retailer na standardn\u00edch serverech v\u017edy p\u0159esn\u011b definovanou konfiguraci. CMS, na rozd\u00edl od in\u017een\u00fdra, nezapomene p\u0159idat pot\u0159ebn\u00e1 nastaven\u00ed, vytvo\u0159it u\u017eivatele a prov\u00e9st des\u00edtky nebo stovky po\u017eadovan\u00fdch konfigurac\u00ed.<\/p>\n<p>V nastaven\u00edch server\u016f a prost\u0159ed\u00ed dnes chyb\u011bj\u00ed \u201etajn\u00e9 znalosti\u201c. V\u0161echny pot\u0159ebn\u00e9 vlastnosti jsou vyj\u00e1d\u0159eny v playbooku. \u017d\u00e1dn\u00e1 dal\u0161\u00ed kreativita a v\u00e1gn\u00ed pokyny: \u201e<i>nasa\u010f jako b\u011b\u017en\u00fd Oracle, ale je pot\u0159eba p\u00e1r nastaven\u00ed sysctl napsat a p\u0159idat u\u017eivatele se spr\u00e1vn\u00fdm UID. Zeptej se kluk\u016f z provozu, ti to v\u011bd\u00ed.<\/i>\u00bb. <\/p>\n<p>Mo\u017enost odhalit nesrovnalosti v konfigurac\u00edch a p\u0159edem je opravit p\u0159in\u00e1\u0161\u00ed klid. Bez syst\u00e9mu pro \u0159\u00edzen\u00ed konfigurac\u00ed to obvykle vypad\u00e1 jinak. Probl\u00e9my se hromad\u00ed, dokud jednoho dne \u201enevybuchnou\u201c v produkci. Pot\u00e9 prob\u00edh\u00e1 anal\u00fdza a kontrola konfigurac\u00ed a opravy. A cyklus se opakuje znovu. <\/p>\n<p>A samoz\u0159ejm\u011b jsme urychlili spu\u0161t\u011bn\u00ed server\u016f do provozu z n\u011bkolika dn\u016f na hodiny.<\/p>\n<p>A na samotn\u00fd novoro\u010dn\u00ed ve\u010der, kdy\u017e d\u011bti radostn\u011b rozbalovaly d\u00e1rky a dosp\u011bl\u00ed si p\u0159\u00e1li pod \u00fadery hodin, na\u0161e in\u017een\u00fdry migrovali SAP syst\u00e9m na nov\u00e9 servery. I D\u011bda Mr\u00e1z by \u0159ekl, \u017ee nejlep\u0161\u00ed z\u00e1zraky jsou dob\u0159e p\u0159ipraven\u00e9. <\/p>\n<p>P.S. N\u00e1\u0161 t\u00fdm se \u010dasto setk\u00e1v\u00e1 s t\u00edm, \u017ee objednavatel\u00e9 cht\u011bj\u00ed co nejjednodu\u0161eji vy\u0159e\u0161it probl\u00e9m spr\u00e1vy konfigurac\u00ed. Ide\u00e1ln\u011b tak, aby to vypadalo jako m\u00e1vnut\u00edm kouzeln\u00e9ho proutku \u2014 jedn\u00edm n\u00e1strojem. Ale v \u017eivot\u011b je to slo\u017eit\u011bj\u0161\u00ed (ano, znovu nep\u0159ivezli st\u0159\u00edbrn\u00e9 kule): mus\u00edme vytvo\u0159it cel\u00fd proces pomoc\u00ed n\u00e1stroj\u016f, kter\u00e9 jsou pro t\u00fdm objednavatele pohodln\u00e9.<\/p>\n<p><i>Autor: Sergej Artemov, architekt odd\u011blen\u00ed <\/i><noindex><a rel=\"nofollow\" href=\"https:\/\/portal.jet.su\/about\/company\/structure\/?set_filter_structure=Y&amp;structure_UF_DEPARTMENT=56656\"><i>DevOps \u0159e\u0161en\u00ed<\/i><\/a><\/noindex><i> Ingosystemy Jet<\/i><br \/>\n<br \/>Zdroj: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/jetinfosystems\/blog\/513132\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436. \u0412 \u0434\u0435\u043a\u0430\u0431\u0440\u0435 \u043d\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u043d\u0430 \u0435\u0433\u043e \u0426\u041e\u0414 \u0432\u044b\u0440\u0430\u0441\u0442\u0430\u0435\u0442 \u0432 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0440\u0430\u0437. \u041f\u043e\u044d\u0442\u043e\u043c\u0443 \u043a\u043e\u043c\u043f\u0430\u043d\u0438\u044f \u0440\u0435\u0448\u0438\u043b\u0430 \u043c\u043e\u0434\u0435\u0440\u043d\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0434\u0430\u0442\u0430-\u0446\u0435\u043d\u0442\u0440 \u0438 \u0432\u0432\u0435\u0441\u0442\u0438 \u0432 \u0441\u0442\u0440\u043e\u0439 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0434\u0435\u0441\u044f\u0442\u043a\u043e\u0432 \u043d\u043e\u0432\u044b\u0445 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0432\u043c\u0435\u0441\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":90387,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-90386","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.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\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\/cs\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management\" \/>\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=\"2020-07-31T11:42:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-07-31T11:42:20+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\udd47Thriller o nastavov\u00e1n\u00ed server\u016f bez z\u00e1zrak\u016f s Configuration Management | ProHoster","description":"Bl\u00ed\u017eil se Nov\u00fd rok. D\u011bti v cel\u00e9 zemi u\u017e poslaly dopisy D\u011bdovi Mr\u00e1zovi nebo si vymyslely d\u00e1rky, a hlavn\u00ed vykonavatel \u2014 jeden z velk\u00fdch maloobchodn\u00edk\u016f \u2014 se p\u0159ipravoval na vyvrcholen\u00ed prodeje.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\udd47\u0422\u0440\u0438\u043b\u043b\u0435\u0440 \u043e \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0435 \u0441\u0435\u0440\u0432\u0435\u0440\u043e\u0432 \u0431\u0435\u0437 \u0447\u0443\u0434\u0435\u0441 \u0441 Configuration Management | ProHoster","og:description":"\u0414\u0435\u043b\u043e \u0431\u043b\u0438\u0437\u0438\u043b\u043e\u0441\u044c \u043a \u041d\u043e\u0432\u043e\u043c\u0443 \u0433\u043e\u0434\u0443. \u0414\u0435\u0442\u0438 \u0432\u0441\u0435\u0439 \u0441\u0442\u0440\u0430\u043d\u044b \u0443\u0436\u0435 \u043e\u0442\u043f\u0440\u0430\u0432\u0438\u043b\u0438 \u043f\u0438\u0441\u044c\u043c\u0430 \u0414\u0435\u0434\u0443 \u041c\u043e\u0440\u043e\u0437\u0443 \u0438\u043b\u0438 \u0437\u0430\u0433\u0430\u0434\u0430\u043b\u0438 \u0441\u0435\u0431\u0435 \u043f\u043e\u0434\u0430\u0440\u043a\u0438, \u0430 \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u0438\u0445 \u0438\u0441\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c \u2014 \u043e\u0434\u0438\u043d \u0438\u0437 \u043a\u0440\u0443\u043f\u043d\u044b\u0445 \u0440\u0438\u0442\u0435\u0439\u043b\u0435\u0440\u043e\u0432 \u2014 \u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0441\u044f \u043a \u0430\u043f\u043e\u0444\u0435\u043e\u0437\u0443 \u043f\u0440\u043e\u0434\u0430\u0436.","og:url":"https:\/\/prohoster.info\/cs\/blog\/administrirovanie\/triller-o-nastrojke-serverov-bez-chudes-s-configuration-management","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":"2020-07-31T11:42:20+00:00","article:modified_time":"2020-07-31T11:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"90386","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":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:52:34","updated":"2022-09-28 09:47:54","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/90386","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=90386"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/90386\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media\/90387"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=90386"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=90386"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=90386"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}