{"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\/it\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","title":{"rendered":"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questa \u00e8 la trascrizione dell'intervento su <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/meetups#2331050\">DevopsConf 2019-10-01<\/a><\/noindex> e <noindex><a rel=\"nofollow\" href=\"http:\/\/spblug.org\/\">SPbLUG 2019-09-25<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Questa \u00e8 la storia di un progetto in cui \u00e8 stata utilizzata un sistema di gestione delle configurazioni personalizzato e perch\u00e9 il trasferimento ad Ansible \u00e8 durato 18 mesi.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"den---hhh-before-the-beginning\">Giorno \u2116 -XXX: Prima dell'inizio<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/22ebc514d85df93237e7f7d262a393a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Inizialmente, l'infrastruttura era composta da numerosi host separati gestiti da Hyper-V. Creare una macchina virtuale richiedeva molte operazioni: posizionare i dischi nel giusto posto, configurare DNS, riservare DHCP e inserire la configurazione della VM nel repository git. Questo processo era parzialmente meccanizzato, ma ad esempio le VM venivano distribuite tra gli host manualmente. Tuttavia, gli sviluppatori potevano modificare la configurazione della VM nel git e applicarla riavviando la VM.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Soluzione di gestione delle configurazioni personalizzata<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>L'idea iniziale, sospetto, era concepita come IaC: numerose VM stateless che annullavano il loro stato al riavvio. Com'era gestita la configurazione delle VM? Schemamaticamente, sembra semplice:<\/p>\n<p><\/p>\n<ol>\n<li>Per le VM veniva fissato un MAC statico.<\/li>\n<li>Alla VM veniva collegato un ISO di CoreOS e un disco di avvio.<\/li>\n<li>CoreOS esegue uno script di personalizzazione scaricandolo da un server WEB in base al proprio IP.<\/li>\n<li>Lo script recupera tramite SCP la configurazione della VM basandosi sull'indirizzo IP.<\/li>\n<li>Viene avviato un insieme di file di unit\u00e0 systemd e un insieme di script bash.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/6baa343ddc2b8df8812f2ed282e5bc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Questa soluzione presentava numerosi problemi evidenti:<\/p>\n<p><\/p>\n<ol>\n<li>L'ISO in CoreOS era deprecato.<\/li>\n<li>Molte azioni complesse da automatizzare e magie durante la migrazione\/creazione delle VM.<\/li>\n<li>Difficolt\u00e0 con gli aggiornamenti e quando \u00e8 necessario un software di una certa versione. Ancora pi\u00f9 complicato con i moduli del kernel.<\/li>\n<li>Le VM non erano cos\u00ec vuote di dati; ci sono VM che avevano montato un disco con dati utente aggiuntivi.<\/li>\n<li>Qualcuno commetteva continuamente errori con le dipendenze delle unit\u00e0 systemd e CoreOS si bloccava al riavvio. Era problematico catturarlo con i mezzi disponibili in CoreOS.<\/li>\n<li>Gestione dei segreti.<\/li>\n<li>Non c'era una vera gestione della configurazione. C'erano script bash e configurazioni YML per CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>Per applicare la configurazione della VM \u00e8 necessario riavviarla, ma potrebbe non riavviarsi. Sembra un problema ovvio, ma non ci sono dischi persistenti \u2014 non c'\u00e8 posto dove salvare i log. Ok, proviamo ad aggiungere opzioni di avvio del kernel per inviare i log. Ma no, \u00e8 tutto cos\u00ec complicato.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">Giorno n. 0: Riconoscimento del problema<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Si trattava di un'infrastruttura di sviluppo standard: jenkins, ambienti di test, monitoraggio, registry. CoreOS \u00e8 stata progettata per l'hosting di cluster k8s, quindi il problema riguardava l'uso di CoreOS. Il primo passo \u00e8 stata la scelta dello stack. Ci siamo orientati su:<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> come distribuzione di base, poich\u00e9 \u00e8 la distribuzione pi\u00f9 vicina agli ambienti di produzione.<\/li>\n<li><strong>Ansible<\/strong> per la gestione delle configurazioni, vista l'ampia esperienza disponibile.<\/li>\n<li><strong>Jenkins<\/strong> come framework di automazione dei processi esistenti, poich\u00e9 era gi\u00e0 attivamente utilizzato nei processi di sviluppo.<\/li>\n<li><strong>Hyper-V<\/strong> come piattaforma di virtualizzazione. Ci sono diverse ragioni che esulano dall'argomento, ma in breve \u2014 non possiamo usare il cloud, dobbiamo utilizzare il nostro hardware.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-30-fiksiruem-suschestvuyuschie-dogovorennosti---agreements-as-code\">Giorno n. 30: Fissiamo gli accordi esistenti \u2014 Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/47a8cc980940b5080e195267d686df25.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Una volta compreso lo stack, \u00e8 iniziata la preparazione al trasferimento. La formalizzazione degli accordi esistenti sotto forma di codice (<strong>Agreements as Code<\/strong>!). Il passaggio <em>lavoro manuale<\/em> -&gt; <em>meccanizzazione<\/em> -&gt; <em>automazione<\/em>.<\/p>\n<p><\/p>\n<h4 id=\"1-configure-vms\">1. Configurare le VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible si occupa perfettamente di questo compito. Con il minimo sforzo, \u00e8 possibile gestire le configurazioni delle VM:<\/p>\n<p><\/p>\n<ol>\n<li>Creiamo un repository git.<\/li>\n<li>Colleghiamo l'elenco delle VM all'inventario, le configurazioni ai playbook e ai ruoli.<\/li>\n<li>Impostiamo uno slave Jenkins speciale da cui sar\u00e0 possibile avviare Ansible.<\/li>\n<li>Creiamo un job e configuriamo Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Il primo processo \u00e8 pronto. Gli accordi sono stati confermati.<\/p>\n<p><\/p>\n<h4 id=\"2-create-new-vm\">2. Crea una nuova VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/3f6a02b170e28fd34e8f5fa65d1606c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Qui non era molto comodo. Creare VM su Hyper-V da Linux era poco pratico. Una delle tentativi di meccanizzare questo processo \u00e8 stata:<\/p>\n<p><\/p>\n<ol>\n<li>Ansible si connette al host Windows tramite WinRM.<\/li>\n<li>Ansible avvia uno script PowerShell.<\/li>\n<li>Lo script PowerShell crea una nuova VM.<\/li>\n<li>Utilizzando Hyper-V\/ScVMM, quando crei una VM, puoi configurare il hostname nel sistema operativo guest.<\/li>\n<li>La VM invia il proprio hostname quando aggiorna il lease DHCP.<\/li>\n<li>L'integrazione standard di DDNS &amp; DHCP sul Domain Controller configura il record DNS.<\/li>\n<li>Puoi aggiungere VM all'inventario e configurarle con Ansible.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"3-create-vm-template\">3. Crea un template VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Qui non abbiamo inventato nulla \u2014 abbiamo usato Packer.<\/p>\n<p><\/p>\n<ol>\n<li>Nel repository Git mettiamo la configurazione di Packer e kickstart.<\/li>\n<li>Configuriamo uno slave Jenkins speciale con Hyper-V e Packer.<\/li>\n<li>Creiamo un job e configuriamo Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Come funziona questa combinazione:<\/p>\n<p><\/p>\n<ol>\n<li>Packer crea una VM vuota e collega un file ISO.<\/li>\n<li>La VM si avvia, Packer inserisce nel bootloader il comando per usare il nostro file kickstart da dischetto o http.<\/li>\n<li>Anaconda si avvia con la nostra configurazione e esegue la configurazione iniziale del sistema operativo.<\/li>\n<li>Packer attende la disponibilit\u00e0 della VM.<\/li>\n<li>Il Packer all'interno della VM esegue ansible in modalit\u00e0 locale.<\/li>\n<li>Ansible utilizza esattamente gli stessi ruoli del passo n. 1.<\/li>\n<li>Il Packer esporta il modello VM.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-75-refaktorim-dogovorennosti-ne-lomaya--test-ansible--testkitchen\">Giorno n. 75: Ristrutturiamo gli accordi senza rompere = Test ansible + Testkitchen.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Fissare gli accordi nel codice potrebbe non essere sufficiente. Infatti, se durante il processo sottostante desideri cambiare qualcosa, potresti rompere qualcosa. Pertanto, nel caso dell'infrastruttura, \u00e8 necessario testare tale infrastruttura. Per sincronizzare le conoscenze all'interno del team, abbiamo iniziato a testare i ruoli di Ansible. Non approfondir\u00f2 poich\u00e9 c'\u00e8 un articolo che descrive gli eventi in quel momento. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Prova a testarmi se puoi, o i programmatori YML sognano di testare ansible?<\/a><\/noindex>(spoiler: questa non era la versione finale e in seguito \u00e8 diventato tutto pi\u00f9 complicato. <noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/ansible-testing-ru.html\">Come iniziare a testare Ansible, rifattorizzare un progetto in un anno e non perdere la bussola.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">Giorno n. 130: E se CentOS + ansible non fosse necessario? Magari openshift?<\/h3>\n<p><\/p>\n<p>\u00c8 importante capire che il processo di introduzione dell'infrastruttura non \u00e8 stato l'unico e ci sono stati sottoprogetti collaterali. Ad esempio, abbiamo ricevuto una richiesta per eseguire la nostra applicazione in openshift e questo si \u00e8 trasformato in ricerche che sono durate pi\u00f9 di una settimana. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Avviamo l'applicazione in Openshift e confrontiamo gli strumenti esistenti<\/a><\/noindex> ci\u00f2 che ha rallentato il processo di migrazione. Alla fine, si \u00e8 scoperto che openshift non soddisfa tutte le esigenze; \u00e8 necessario un hardware reale, o almeno la possibilit\u00e0 di giocare con il kernel.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">Giorno n. 170: Openshift non \u00e8 adatto, proviamo con Windows Azure Pack?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V non \u00e8 molto amichevole, SCVMM non lo migliora molto. Tuttavia, esiste Windows Azure Pack, che \u00e8 un'estensione di SCVMM e si mimetizza come Azure. Ma in realt\u00e0, il prodotto sembra trascurato: la documentazione contiene link rotti ed \u00e8 piuttosto scarsa. Tuttavia, nell'ambito della ricerca di opzioni per semplificare la vita al nostro cloud, lo abbiamo preso in considerazione.<\/p>\n<p><\/p>\n<h3 id=\"den-250-windows-azure-pack-ne-ochen-ostaemsya-na-scvmm\">Giorno n. 250: Windows Azure Pack non \u00e8 molto. Rimaniamo su SCVMM<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/8753b3da72adfb035d1a2f23ad28809b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Windows Azure Pack sembrava promettente, ma si \u00e8 deciso di non portare WAP con le sue complessit\u00e0 nel sistema per funzionalit\u00e0 non necessarie, quindi siamo rimasti su SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">Giorno n. 360: Mangiamo l'elefante a pezzi<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Solo dopo un anno \u00e8 stata pronta la piattaforma su cui migrare e ha avuto inizio il processo di migrazione. Per questo \u00e8 stato impostato un compito S.M.A.R.T. Abbiamo elencato tutte le VM e abbiamo iniziato a esaminare una ad una la configurazione, documentandola in Ansible e coprendola con test.<\/p>\n<p><\/p>\n<h3 id=\"den-450-kakaya-sistema-poluchilas\">Giorno n. 450: Quale sistema \u00e8 stato realizzato?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Il processo in s\u00e9 non \u00e8 interessante. \u00c8 routinario; si pu\u00f2 notare che la maggior parte delle configurazioni era relativamente semplice o isomorfa, e secondo il principio di Pareto, l'80% delle configurazioni ha richiesto il 20% del tempo. Allo stesso modo, l'80% del tempo \u00e8 stato speso per la preparazione del trasferimento e solo il 20% per il trasferimento stesso. <\/p>\n<p><\/p>\n<h2 id=\"den-540-final\">Giorno n. 540: Finale<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Cosa \u00e8 successo in 18 mesi?<\/p>\n<p><\/p>\n<ol>\n<li>Gli accordi sono diventati codice.<\/li>\n<li><em>Lavoro manuale<\/em> -&gt; <em>Meccanizzazione<\/em> -&gt; <em>Automazione<\/em>.<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"links\">Links<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500350\/\">Versione inglese<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/coreos2centos-ru.html\">Cross post dal blog personale<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.mail.ru\/public\/UDCZ\/WM4Y9Qv3j\">slides<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500058\/\">Come iniziare a testare Ansible, rifattorizzare un progetto in un anno e non perdere la bussola.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">Lezioni apprese dal testare oltre 200.000 righe di codice infrastrutturale<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Procediamo con il deployment su OpenShift<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">Come testare la propria distribuzione del sistema operativo<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Testami se puoi. Sognano i developer YML di testare Ansible?<\/a><\/noindex><\/li>\n<\/ul>\n<p>Fonte: <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 4.9.10 - aioseo.com -->\n\t<meta name=\"description\" content=\"\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\" \/>\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\/it\/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) 4.9.10\" \/>\n\t\t<meta property=\"og:locale\" content=\"it_IT\" \/>\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 \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\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/it\/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: Migrazione della configurazione di 120 VM da CoreOS a CentOS in 18 mesi | ProHoster","description":"Questa \u00e8 la trascrizione dell'intervento a DevopsConf del 01-10-2019 e SPbLUG del 25-09-2019. \u00c8 la storia di un progetto che ha utilizzato un sistema di gestione delle configurazioni scritto in casa e il motivo per cui il trasferimento su Ansible ha impiegato 18 mesi. Giorno n. -XXX: Prima dell'inizio. Inizialmente, l'infrastruttura consistava in molti host standalone gestiti da Hyper-V. Creare una macchina virtuale richiedeva molte azioni: posizionare i dischi nel modo","canonical_url":"https:\/\/prohoster.info\/it\/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":"it_IT","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 \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","og:url":"https:\/\/prohoster.info\/it\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/80289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/comments?post=80289"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/posts\/80289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media\/80290"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/media?parent=80289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/categories?post=80289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/it\/wp-json\/wp\/v2\/tags?post=80289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}