{"id":80289,"date":"2020-05-05T01:42:36","date_gmt":"2020-05-04T23:42:36","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev"},"modified":"2020-05-05T01:42:36","modified_gmt":"2020-05-04T23:42:36","slug":"ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","title":{"rendered":"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aceasta este transcrierea prezent\u0103rii de la <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/meetups#2331050\">DevopsConf 2019-10-01<\/a><\/noindex> \u0219i <noindex><a rel=\"nofollow\" href=\"http:\/\/spblug.org\/\">SPbLUG 2019-09-25<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Aceasta este povestea proiectului care a folosit un sistem de gestionare a configura\u021biilor personalizat \u0219i de ce migrarea pe Ansible a durat 18 luni.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"den---hhh-before-the-beginning\">Ziua \u2116 -XXX: \u00cenainte de \u00eenceput<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/22ebc514d85df93237e7f7d262a393a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ini\u021bial, infrastructura consta dintr-o mul\u021bime de servere independente gestionate de Hyper-V. Crearea unei ma\u0219ini virtuale necesita numeroase ac\u021biuni: a plasa discurile \u00een locul corect, a configura DNS-ul, a rezerva DHCP-ul, a plasa configura\u021bia VM \u00eentr-un repository Git. Acest proces era par\u021bial mecanizat, dar de exemplu, VM-urile erau distribuite manual \u00eentre servere. De exemplu, dezvoltatorii puteau modifica configura\u021bia VM \u00een Git \u0219i s\u0103 o aplice repornind VM-ul.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Solu\u021bie personalizat\u0103 de gestionare a configura\u021biei<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ideea ini\u021bial\u0103, suspectez eu, a fost g\u00e2ndit\u0103 ca IaC: o mul\u021bime de VM-uri stateless, care \u00ee\u0219i resetau starea la repornire. Cum se desf\u0103\u0219ura gestionarea configura\u021biei VM-urilor? Schema p\u0103rea simpl\u0103:<\/p>\n<p><\/p>\n<ol>\n<li>Pentru VM-uri erau configurate MAC-uri statice.<\/li>\n<li>Se conecta un ISO la VM cu CoreOS \u0219i un disc de boot.<\/li>\n<li>CoreOS ruleaz\u0103 un script de personalizare desc\u0103rc\u00e2ndu-l de pe serverul WEB pe baza adresei sale IP.<\/li>\n<li>Scriptul descarc\u0103 prin SCP configura\u021bia VM-ului baz\u00e2ndu-se pe adresa IP.<\/li>\n<li>Se lanseaz\u0103 o serie de fi\u0219iere unitate systemd \u0219i o serie de scripturi bash.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/6baa343ddc2b8df8812f2ed282e5bc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aceast\u0103 solu\u021bie avea multe probleme evidente:<\/p>\n<p><\/p>\n<ol>\n<li>ISO \u00een CoreOS fusese depreciat.<\/li>\n<li>Numeroase ac\u021biuni dificil de automatizat \u0219i magie \u00een timpul migra\u021biei\/cre\u0103rii VM-urilor.<\/li>\n<li>Dificult\u0103\u021bi cu actualizarea \u0219i c\u00e2nd era necesar un software de o anumit\u0103 versiune. Era \u0219i mai complicat cu modulele kernel.<\/li>\n<li>VM-urile nu erau tocmai f\u0103r\u0103 date, adic\u0103 au ap\u0103rut VM-uri cu un disc montat cu date utilizator.<\/li>\n<li>Continuau s\u0103 existe probleme cu dependen\u021bele unit\u0103\u021bilor systemd \u0219i CoreOS se bloca la repornire. Era problem\u0103 s\u0103 depistezi asta cu instrumentele existente \u00een CoreOS.<\/li>\n<li>Gestionarea secretelor.<\/li>\n<li>CM nu exista, practic. Era bash \u0219i fi\u0219iere de configurare YML pentru CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>Pentru a aplica configura\u021bia VM-ului, era nevoie de o repornire, dar aceasta putea s\u0103 nu se reporneasc\u0103. O problem\u0103 aparent evident\u0103, dar nu exist\u0103 discuri persistente - nu aveai unde s\u0103 salvezi jurnalele. Bine, s\u0103 \u00eencerc\u0103m s\u0103 ad\u0103ug\u0103m op\u021biuni de boot pentru a trimite jurnalele. Dar nu, c\u00e2t de complicat e totul.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">Ziua \u21160: Recunoa\u0219terea problemei<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aceasta era o infrastructur\u0103 de dezvoltare obi\u0219nuit\u0103: jenkins, medii de testare, monitorizare, registry. CoreOS a fost conceput pentru g\u0103zduirea clusterelor k8s, adic\u0103 problema a fost modul \u00een care era utilizat CoreOS. Primul pas a fost alegerea stivei. Ne-am oprit la:<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> ca distribu\u021bie de baz\u0103, deoarece este cea mai apropiat\u0103 distribu\u021bie de medii de produc\u021bie.<\/li>\n<li><strong>Ansible<\/strong> pentru gestionarea configura\u021biilor, deoarece exista o expertiz\u0103 extins\u0103 pe acest subiect.<\/li>\n<li><strong>Jenkins<\/strong> ca un cadru de automatizare a proceselor existente, deoarece deja era folosit activ pentru procesele de dezvoltare<\/li>\n<li><strong>Hyper-V<\/strong> ca platform\u0103 de virtualizare. Exist\u0103 o serie de motive dincolo de cele povestite, dar pe scurt \u2014 nu putem utiliza solu\u021bii cloud, trebuie s\u0103 folosim hardware-ul nostru.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-30-fiksiruem-suschestvuyuschie-dogovorennosti---agreements-as-code\">Ziua #30: Document\u0103m acordurile existente \u2014 Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/47a8cc980940b5080e195267d686df25.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Odat\u0103 ce stiva a fost clar\u0103, a \u00eenceput preg\u0103tirea pentru migrare. Documentarea acordurilor existente sub form\u0103 de cod (<strong>Agreements as Code<\/strong>!). Trecerea <em>munc\u0103 manual\u0103<\/em> -&gt; <em>mecanizare<\/em> -&gt; <em>automatizarea<\/em>.<\/p>\n<p><\/p>\n<h4 id=\"1-configure-vms\">1. Configureaz\u0103 VM-uri<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible se descurc\u0103 excelent cu aceast\u0103 sarcin\u0103. Cu un minim de efort, putem gestiona configura\u021biile VM-urilor:<\/p>\n<p><\/p>\n<ol>\n<li>Cre\u0103m un repository git.<\/li>\n<li>Adun\u0103m lista VM-urilor \u00een inventory, configura\u021biile \u00een playbook-uri \u0219i roluri.<\/li>\n<li>Configur\u0103m un slave Jenkins special de pe care putem rula ansible.<\/li>\n<li>Cre\u0103m un job, configur\u0103m Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Primul proces este gata. Acordurile au fost documentate.<\/p>\n<p><\/p>\n<h4 id=\"2-create-new-vm\">2. Creeaz\u0103 un nou VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/3f6a02b170e28fd34e8f5fa65d1606c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aici nu era foarte confortabil. Din Linux nu era foarte u\u0219or s\u0103 cre\u0103m VM-uri pe Hyper-V. Una dintre \u00eencerc\u0103rile de a mecaniza acest proces a fost:<\/p>\n<p><\/p>\n<ol>\n<li>Ansible se conecteaz\u0103 prin WinRM la gazda Windows.<\/li>\n<li>Ansible ruleaz\u0103 un script PowerShell.<\/li>\n<li>Scriptul PowerShell creeaz\u0103 un nou VM.<\/li>\n<li>Prin intermediul Hyper-V\/ScVMM, la crearea VM-ului pe OS-ul gazd\u0103 se configureaz\u0103 hostname-ul.<\/li>\n<li>VM-ul, la actualizarea lease-ului DHCP, trimite hostname-ul s\u0103u.<\/li>\n<li>Integrarea standard ddns &amp; dhcp pe partea Domain Controller configureaz\u0103 \u00eenregistrarea DNS.<\/li>\n<li>Se pot ad\u0103uga VM-uri \u00een inventory \u0219i se poate configura Ansible pentru acestea.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"3-create-vm-template\">3. Creeaz\u0103 un template de VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Aici nu am inventat nimic \u2014 am folosit packer.<\/p>\n<p><\/p>\n<ol>\n<li>\u00cen repository-ul git, ad\u0103ug\u0103m configura\u021bia packer, kickstart.<\/li>\n<li>Configur\u0103m un slave Jenkins special cu hyper-v \u0219i Packer.<\/li>\n<li>Cre\u0103m un job, configur\u0103m Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Cum func\u021bioneaz\u0103 aceast\u0103 combina\u021bie:<\/p>\n<p><\/p>\n<ol>\n<li>Packer creeaz\u0103 un VM gol, ata\u0219eaz\u0103 ISO.<\/li>\n<li>VM-ul se \u00eencarc\u0103, Packer introduce \u00een bootloader comanda de a folosi fi\u0219ierul nostru kickstart de pe dischet\u0103 sau http.<\/li>\n<li>Se lanseaz\u0103 anaconda cu configura\u021bia noastr\u0103, se face configurarea ini\u021bial\u0103 a OS-ului.<\/li>\n<li>Packer a\u0219teapt\u0103 disponibilitatea VM-ului.<\/li>\n<li>Packer ruleaz\u0103 ansible \u00een modul local \u00een interiorul VM-ului.<\/li>\n<li>Ansible folose\u0219te exact acelea\u0219i roluri ca \u00een pasul nr. 1.<\/li>\n<li>Packer export\u0103 un \u0219ablon de VM.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-75-refaktorim-dogovorennosti-ne-lomaya--test-ansible--testkitchen\">Ziua nr. 75: Refactoriz\u0103m conven\u021biile f\u0103r\u0103 a strica = Test\u0103 ansible + Testkitchen<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A fixa conven\u021biile \u00een cod poate s\u0103 nu fie suficient. De fapt, dac\u0103 \u00een procesul intern vrei s\u0103 schimbi ceva, s-ar putea s\u0103 strici ceva. De aceea, \u00een cazul infrastructurii, apare nevoia de a testa aceast\u0103 infrastructur\u0103. Pentru a sincroniza cuno\u0219tin\u021bele \u00een cadrul echipei, am \u00eenceput s\u0103 test\u0103m rolurile Ansible. Nu vreau s\u0103 aprofundez, deoarece exist\u0103 un articol care descrie evenimentele din acel moment. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Testeaz\u0103-m\u0103 dac\u0103 po\u021bi sau viseaz\u0103 programatorii YML la testarea ansible?<\/a><\/noindex>(spoiler, aceasta nu a fost versiunea final\u0103 \u0219i mai t\u00e2rziu totul a devenit mai complicat) <noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/ansible-testing-ru.html\">Cum s\u0103 \u00eencepi s\u0103 testezi Ansible, s\u0103 refactorizezi un proiect \u00eentr-un an f\u0103r\u0103 a pierde controlul.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">Ziua nr. 130: Poate c\u0103 CentOS + ansible nu este necesar? Poate openshift?<\/h3>\n<p><\/p>\n<p>Trebuie s\u0103 \u00een\u021belegem c\u0103 procesul de \u00eencorporare a infrastructurii nu a fost singurul \u0219i au fost subproiecte secundare. De exemplu, a ap\u0103rut o solicitare pentru a rula aplica\u021bia noastr\u0103 pe openshift \u0219i aceasta s-a transformat \u00eentr-o cercetare de mai multe s\u0103pt\u0103m\u00e2ni. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Rul\u0103m aplica\u021bia \u00een Openshift \u0219i compar\u0103m instrumentele existente.<\/a><\/noindex> ce a \u00eencetinit procesul de mutare. Concluzia a fost c\u0103 openshift nu satisface toate nevoile, este nevoie de hardware real sau cel pu\u021bin de posibilitatea de a experimenta cu nucleul.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">Ziua nr. 170: Openshift nu se potrive\u0219te, risc\u0103 s\u0103 \u00eencerc\u0103m cu Windows Azure Pack?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V nu este foarte prietenos, SCVMM nu \u00eel \u00eembun\u0103t\u0103\u021be\u0219te prea mult. Dar exist\u0103 un lucru numit Windows Azure Pack, care este un addon pentru SCVMM \u0219i imit\u0103 Azure. Dar, \u00een realitate, produsul pare abandonat: documenta\u021bia con\u021bine linkuri rupte \u0219i este destul de s\u0103r\u0103c\u0103cioas\u0103. Dar \u00een cadrul cercet\u0103rii solu\u021biilor pentru a simplifica via\u021ba norului nostru, l-am analizat \u0219i pe acesta.<\/p>\n<p><\/p>\n<h3 id=\"den-250-windows-azure-pack-ne-ochen-ostaemsya-na-scvmm\">Ziua nr. 250: Windows Azure Pack nu este prea bun. R\u0103m\u00e2nem pe SCVMM.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/8753b3da72adfb035d1a2f23ad28809b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Windows Azure Pack p\u0103rea promi\u021b\u0103tor, dar s-a decis s\u0103 nu introducem WAP cu dificult\u0103\u021bile sale \u00een sistem pentru caracteristici inutile, a\u0219a c\u0103 am r\u0103mas pe SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">Ziua nr. 360: M\u00e2nc\u0103m elefantul pe buc\u0103\u021bi.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Numai dup\u0103 un an a fost preg\u0103tit\u0103 platforma unde s\u0103 ne mut\u0103m \u0219i a \u00eenceput procesul de mutare. Pentru aceasta, a fost stabilit\u0103 o sarcin\u0103 S.M.A.R.T. Am listat toate VM-urile \u0219i am \u00eenceput s\u0103 ne ocup\u0103m de configurarea lor, s\u0103 o descriem \u00een Ansible \u0219i s\u0103 o acoperim cu teste.<\/p>\n<p><\/p>\n<h3 id=\"den-450-kakaya-sistema-poluchilas\">Ziua nr. 450: Ce sistem a rezultat?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Procesul \u00een sine nu este interesant. Este rutinier, se poate observa c\u0103 majoritatea configura\u021biilor au fost relativ simple sau izomorfe \u0219i, conform principiului Pareto, 80% din configura\u021bii au necesitat 20% din timp. \u00cen acela\u0219i fel, 80% din timp a fost alocat preg\u0103tirii mut\u0103rii \u0219i doar 20% pentru mutare \u00een sine. <\/p>\n<p><\/p>\n<h2 id=\"den-540-final\">Ziua nr. 540: Finalul<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ce s-a \u00eent\u00e2mplat \u00een 18 luni?<\/p>\n<p><\/p>\n<ol>\n<li>Acordurile au devenit cod.<\/li>\n<li><em>Munc\u0103 manual\u0103<\/em> -&gt; <em>Mecanizarea<\/em> -&gt; <em>Automatizarea<\/em>.<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"links\">Linkuri<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500350\/\">Versiunea \u00een englez\u0103<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/coreos2centos-ru.html\">Postare \u00eencruci\u0219at\u0103 din blogul personal<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.mail.ru\/public\/UDCZ\/WM4Y9Qv3j\">prezent\u0103ri<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500058\/\">Cum s\u0103 \u00eencepi s\u0103 testezi Ansible, s\u0103 refactorizezi un proiect \u00eentr-un an f\u0103r\u0103 a pierde controlul.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">Lec\u021bii \u00eenv\u0103\u021bate din testarea a peste 200.000 de linii de cod de infrastructur\u0103<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">S\u0103 desf\u0103\u0219ur\u0103m pe OpenShift<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">Cum s\u0103 testezi propria distribu\u021bie de sistem de operare<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Testeaz\u0103-m\u0103 dac\u0103 po\u021bi. Viseaz\u0103 dezvoltatorii YML la testarea Ansible?<\/a><\/noindex><\/li>\n<\/ul>\n<p>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/500040\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u042d\u0442\u043e \u0440\u0430\u0441\u0448\u0438\u0444\u0440\u043e\u0432\u043a\u0430 \u0432\u044b\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u044f \u043d\u0430 DevopsConf 2019-10-01 \u0438 SPbLUG 2019-09-25. \u042d\u0442\u043e \u0438\u0441\u0442\u043e\u0440\u0438\u044f \u043f\u0440\u043e\u0435\u043a\u0442\u0430, \u043d\u0430 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0441\u0430\u043c\u043e\u043f\u0438\u0441\u043d\u0430\u044f \u0441\u0438\u0441\u0442\u0435\u043c\u0430 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u044f\u043c\u0438 \u0438 \u043f\u043e\u0447\u0435\u043c\u0443 \u043f\u0435\u0440\u0435\u0435\u0437\u0434 \u043d\u0430 Ansible \u0437\u0430\u0442\u044f\u043d\u0443\u043b\u0441\u044f \u043d\u0430 18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432. \u0414\u0435\u043d\u044c \u2116 -\u0425\u0425\u0425: Before the beginning \u0418\u0437\u043d\u0430\u0447\u0430\u043b\u044c\u043d\u043e \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0430 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u043b\u0430 \u0441\u043e\u0431\u043e\u0439 \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u043e\u0442\u0434\u0435\u043b\u044c\u043d\u043e \u0441\u0442\u043e\u044f\u0449\u0438\u0445 \u0445\u043e\u0441\u0442\u043e\u0432 \u043f\u043e\u0434 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435\u043c Hyper-V. \u0421\u043e\u0437\u0434\u0430\u043d\u0438\u0435 \u0432\u0438\u0440\u0442\u0443\u0430\u043b\u044c\u043d\u043e\u0439 \u043c\u0430\u0448\u0438\u043d\u044b \u0442\u0440\u0435\u0431\u043e\u0432\u0430\u043b\u043e \u043c\u043d\u043e\u0436\u0435\u0441\u0442\u0432\u043e \u0434\u0435\u0439\u0441\u0442\u0432\u0438\u0439: \u043f\u043e\u043b\u043e\u0436\u0438\u0442\u044c \u0434\u0438\u0441\u043a\u0438 \u0432 \u043d\u0443\u0436\u043d\u043e\u0435 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":80290,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-80289","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.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u042d\u0442\u043e.\" \/>\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\/ro\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\udd47Ansible: \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 120 VM c CoreOS \u043d\u0430 CentOS \u0437\u0430 18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u042d\u0442\u043e.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev\" \/>\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-05-04T23:42:36+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-05-04T23:42:36+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\udd47Ansible: Migrarea configura\u021biei a 120 VM de la CoreOS la CentOS \u00een 18 luni | ProHoster","description":"Acesta.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\udd47Ansible: \u041c\u0438\u0433\u0440\u0430\u0446\u0438\u044f \u043a\u043e\u043d\u0444\u0438\u0433\u0443\u0440\u0430\u0446\u0438\u0438 120 VM c CoreOS \u043d\u0430 CentOS \u0437\u0430 18 \u043c\u0435\u0441\u044f\u0446\u0435\u0432 | ProHoster","og:description":"\u042d\u0442\u043e.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","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-05-04T23:42:36+00:00","article:modified_time":"2020-05-04T23:42:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"80289","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 16:21:22","updated":"2022-09-30 18:16:02","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/80289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=80289"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/80289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media\/80290"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=80289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=80289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=80289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}