{"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\/sv\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev","title":{"rendered":"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/c12bef0589cc29a2a63840ecf5572357.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Detta \u00e4r en transkription av presentationen p\u00e5 <noindex><a rel=\"nofollow\" href=\"https:\/\/devopsconf.io\/moscow\/2019\/meetups#2331050\">DevopsConf 2019-10-01<\/a><\/noindex> och <noindex><a rel=\"nofollow\" href=\"http:\/\/spblug.org\/\">SPbLUG 2019-09-25<\/a><\/noindex>.<\/p>\n<p><\/p>\n<p>Detta \u00e4r historien om projektet d\u00e4r en skr\u00e4ddarsydd konfigurationshanteringssystem anv\u00e4ndes och varf\u00f6r flytten till Ansible drog ut p\u00e5 tiden i 18 m\u00e5nader.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"den---hhh-before-the-beginning\">Dag \u2116 -XXX: Innan starten<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/22ebc514d85df93237e7f7d262a393a4.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>I b\u00f6rjan bestod infrastrukturen av m\u00e5nga frist\u00e5ende v\u00e4rdar som styrdes av Hyper-V. Att skapa en virtuell maskin kr\u00e4vde m\u00e5nga steg: placera diskarna p\u00e5 r\u00e4tt plats, ange DNS, reservera DHCP, och l\u00e4gga konfigurationen av VM i git-repositoriet. Denna process var delvis mekaniserad, men exempelvis f\u00f6rdelades VM manuellt mellan v\u00e4rdarna. Men exempelvis kunde utvecklarna, efter att ha justerat VM-konfigurationen i git, till\u00e4mpa den genom att starta om VM.<\/p>\n<p><\/p>\n<h3 id=\"custom-configuration-management-solution\">Anpassad konfigurationshanteringsl\u00f6sning<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/166b61b7f70c49ba06e622cd3592826f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Den ursprungliga id\u00e9n, misst\u00e4nker jag, var t\u00e4nkt som IaC: m\u00e5nga stateless VMs som \u00e5terst\u00e4llde sitt tillst\u00e5nd vid omstart. Hur s\u00e5g konfigurationshanteringen av VMs ut? Schematisk ser det enkelt ut:<\/p>\n<p><\/p>\n<ol>\n<li>F\u00f6r VM tilldelades en statisk MAC-adress.<\/li>\n<li>ISO med CoreOS kopplades till VM och en startdisk.<\/li>\n<li>CoreOS k\u00f6r ett anpassningsskript genom att h\u00e4mta det fr\u00e5n webbservern baserat p\u00e5 sin IP.<\/li>\n<li>Skriptet h\u00e4mtar genom SCP konfigurationen av VM baserat p\u00e5 IP-adressen.<\/li>\n<li>En m\u00e4ngd systemd-enhetsfiler och bash-script k\u00f6rs.<\/li>\n<\/ol>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/6baa343ddc2b8df8812f2ed282e5bc3a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Denna l\u00f6sning hade m\u00e5nga uppenbara problem:<\/p>\n<p><\/p>\n<ol>\n<li>ISO i CoreOS var f\u00f6r\u00e5ldrad.<\/li>\n<li>M\u00e5nga komplicerade automatiserade \u00e5tg\u00e4rder och magi vid migrering\/skapande av VM.<\/li>\n<li>Sv\u00e5righeter med uppdatering av programvara som m\u00e5ste ha en viss version. Det var \u00e4nnu mer problematiskt med k\u00e4rnmoduler.<\/li>\n<li>VM var inte helt utan data, dvs. det fanns VM som hade en monterad disk med anv\u00e4ndardata dessutom.<\/li>\n<li>N\u00e5gon gjorde st\u00e4ndigt misstag med beroenden f\u00f6r systemd-enheter och CoreOS h\u00e4ngde vid omstart. Det var problematiskt att f\u00e5nga detta med de befintliga verktygen i CoreOS.<\/li>\n<li>Hantering av hemligheter.<\/li>\n<li>CM fanns knappt. Det var bash och YML-konfigurationer f\u00f6r CoreOS.<\/li>\n<\/ol>\n<p><\/p>\n<p>F\u00f6r att till\u00e4mpa konfigurationen av VM m\u00e5ste den startas om, men den kanske inte startade om. En r\u00e4tt uppenbar problematik, men det finns inga persistenta diskar \u2013 det finns ingenstans att spara loggar. Okej, l\u00e5t oss f\u00f6rs\u00f6ka l\u00e4gga till alternativ i k\u00e4rnstarten s\u00e5 att loggar skickas. Men nej, allt \u00e4r s\u00e5 komplicerat.<\/p>\n<p><\/p>\n<h2 id=\"den-0-priznanie-problemy\">Dag \u21160: Erk\u00e4nnande av problemet<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/d80b98b91624085d5d11fc54647a55bc.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Det var en vanlig utvecklingsinfrastruktur: jenkins, testmilj\u00f6er, \u00f6vervakning, registry. CoreOS var avsett f\u00f6r hosting av k8s kluster, dvs problemet l\u00e5g i hur CoreOS anv\u00e4ndes. Det f\u00f6rsta steget var att v\u00e4lja stack. Vi beslutade att anv\u00e4nda:<\/p>\n<p><\/p>\n<ol>\n<li><strong>CentOS<\/strong> som basdistribuering, eftersom det \u00e4r den som ligger n\u00e4rmast produktionsmilj\u00f6er.<\/li>\n<li><strong>Ansible<\/strong> f\u00f6r att hantera konfigurationer, eftersom det fanns omfattande expertis om det.<\/li>\n<li><strong>Jenkins<\/strong> som ett ramverk f\u00f6r att automatisera befintliga processer, eftersom det redan anv\u00e4ndes aktivt f\u00f6r utvecklingsprocesser.<\/li>\n<li><strong>Hyper-V<\/strong> som en virtualiseringsplattform. Det finns flera sk\u00e4l som g\u00e5r utanf\u00f6r ber\u00e4ttelsen, men kort sagt - vi kan inte anv\u00e4nda moln, vi m\u00e5ste anv\u00e4nda v\u00e5r egen h\u00e5rdvara.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-30-fiksiruem-suschestvuyuschie-dogovorennosti---agreements-as-code\">Dag nr 30: Dokumentera befintliga avtal - Agreements as Code<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/47a8cc980940b5080e195267d686df25.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4r stacken var klar b\u00f6rjade f\u00f6rberedelserna f\u00f6r flytten. Dokumentationen av befintliga avtal i form av kod (<strong>Agreements as Code<\/strong>!). \u00d6verg\u00e5ngen <em>manuellt arbete<\/em> -&gt; <em>mekanisering<\/em> -&gt; <em>som m\u00f6jligg\u00f6r snabbare testning, distribution och leverans av ny funktionalitet till anv\u00e4ndarna. Till exempel skapas det i alla v\u00e5ra projekt automatiskt en CI-pipeline vid varje commit. I den byggs en avbild, testas, distribueras till olika Kubernetes-milj\u00f6er f\u00f6r fels\u00f6kning och vidare kontroller, och om allt g\u00e5r bra - n\u00e5r f\u00f6r\u00e4ndringarna slutligen anv\u00e4ndaren. Detta \u00e4r inte l\u00e4ngre raketvetenskap, utan en vanlig f\u00f6reteelse f\u00f6r m\u00e5nga - f\u00f6rmodligen \u00e4ven f\u00f6r dig, eftersom du l\u00e4ser denna artikel.<\/em>.<\/p>\n<p><\/p>\n<h4 id=\"1-configure-vms\">1. Konfigurera VM:ar<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/90b3c4ec5d4234fc218295bd9a34d676.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ansible hanterar denna uppgift utm\u00e4rkt. Med minimal anstr\u00e4ngning kan man ta \u00f6ver hanteringen av VM-konfigurationer:<\/p>\n<p><\/p>\n<ol>\n<li>Skapa ett git-repo.<\/li>\n<li>L\u00e4gg in listan p\u00e5 VM:ar i inventariet, konfigurationerna i playbooks och roller.<\/li>\n<li>St\u00e4ll in en speciell jenkins-slave som kan k\u00f6ra ansible.<\/li>\n<li>Skapa jobb, konfigurera Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>Den f\u00f6rsta processen \u00e4r klar. Avtalen \u00e4r dokumenterade.<\/p>\n<p><\/p>\n<h4 id=\"2-create-new-vm\">2. Skapa ny VM<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/3f6a02b170e28fd34e8f5fa65d1606c2.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>H\u00e4r var det inte s\u00e4rskilt bekv\u00e4mt. Att skapa VM:ar p\u00e5 Hyper-V fr\u00e5n Linux var inte s\u00e5 smidigt. Ett av f\u00f6rs\u00f6ken att automatisera denna process var:<\/p>\n<p><\/p>\n<ol>\n<li>Ansible ansluter via WinRM till Windows-v\u00e4rden.<\/li>\n<li>Ansible k\u00f6r ett powershell-skript.<\/li>\n<li>Powershell-skriptet skapar en ny VM.<\/li>\n<li>Med hj\u00e4lp av Hyper-V\/ScVMM konfigureras hostname n\u00e4r VM:ar skapas i g\u00e4st OS.<\/li>\n<li>VM:en skickar sitt hostname vid uppdatering av DHCP-lease.<\/li>\n<li>Den inbyggda integrationen av ddns &amp; dhcp p\u00e5 Domains Controller konfigurerar DNS-poster.<\/li>\n<li>Man kan l\u00e4gga till VM:ar i inventariet och konfigurera dem med Ansible.<\/li>\n<\/ol>\n<p><\/p>\n<h4 id=\"3-create-vm-template\">3. Skapa VM-mall<\/h4>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/f10929c1bd5b350c16bb691dce61653a.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>H\u00e4r uppfann vi ingenting - vi anv\u00e4nde packer.<\/p>\n<p><\/p>\n<ol>\n<li>I git-repo laddar vi upp packer-konfigurationen, kickstart.<\/li>\n<li>St\u00e4ll in en speciell jenkins-slave med hyper-v och Packer.<\/li>\n<li>Skapa jobb, konfigurera Jenkins.<\/li>\n<\/ol>\n<p><\/p>\n<p>S\u00e5 h\u00e4r fungerar denna koppling:<\/p>\n<p><\/p>\n<ol>\n<li>Packer skapar en tom VM, kopplar ISO.<\/li>\n<li>VM:en startar, Packer ger bootloader-kommandot att anv\u00e4nda v\u00e5r kickstart-fil fr\u00e5n floppy eller http.<\/li>\n<li>Anaconda startas med v\u00e5r konfiguration, den f\u00f6rsta inst\u00e4llningen av OS g\u00f6rs.<\/li>\n<li>Packer v\u00e4ntar p\u00e5 att VM:en ska bli tillg\u00e4nglig.<\/li>\n<li>Packer k\u00f6r ansible i lokal l\u00e4ge inuti VM:en.<\/li>\n<li>Ansible anv\u00e4nder exakt samma roller som i steg \u21161.<\/li>\n<li>Packer exporterar VM-mallen.<\/li>\n<\/ol>\n<p><\/p>\n<h3 id=\"den-75-refaktorim-dogovorennosti-ne-lomaya--test-ansible--testkitchen\">Dag \u211675: Refaktorerar \u00f6verenskommelser utan att bryta = Testa ansible + Testkitchen<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/1b90074f3b17a77a732a259efdda518c.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Att fastst\u00e4lla \u00f6verenskommelser i koden kan vara otillr\u00e4ckligt. Om du vill \u00e4ndra n\u00e5got i grunden kan du riskera att bryta n\u00e5got. D\u00e4rf\u00f6r beh\u00f6vs testning av infrastrukturen. F\u00f6r att synka kunskapen inom teamet b\u00f6rjade vi testa Ansible-roller. Jag ska inte g\u00e5 djupare in p\u00e5 det, d\u00e5 det finns en artikel som beskriver h\u00e4ndelserna vid den tidpunkten. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Testa mig om du kan, eller dr\u00f6mmer YML-programmerare om testning av ansible?<\/a><\/noindex>(spoiler, detta var inte den slutgiltiga versionen och senare blev allt mer komplicerat) <noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/ansible-testing-ru.html\">Hur man b\u00f6rjar testa Ansible, refaktorerar projektet p\u00e5 ett \u00e5r och inte tappar f\u00f6rst\u00e5ndet.<\/a><\/noindex>).<\/p>\n<p><\/p>\n<h3 id=\"den-130-a-mozhet-centosansible-ne-nuzhen-mozhet-openshift\">Dag \u2116130: Beh\u00f6ver vi verkligen CentOS+ansible? Kanske Openshift?<\/h3>\n<p><\/p>\n<p>Det \u00e4r viktigt att f\u00f6rst\u00e5 att processen att implementera infrastrukturer inte var den enda, och det fanns sidoprojekt. Till exempel kom en f\u00f6rfr\u00e5gan om att k\u00f6ra v\u00e5r applikation i Openshift vilket ledde till flera veckors forskning. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">Vi startar applikationen i Openshift och j\u00e4mf\u00f6r med befintliga verktyg.<\/a><\/noindex> Vad som bromsade flyttprocessen. Slutsatsen blev att Openshift inte t\u00e4cker alla behov, vi beh\u00f6ver riktig h\u00e5rdvara, eller \u00e5tminstone m\u00f6jlighet att experimentera med k\u00e4rnan.<\/p>\n<p><\/p>\n<h3 id=\"den-170-openshift-ne-podhodit-risknem-s-windows-azure-pack\">Dag \u2116170: Openshift fungerar inte, ska vi satsa p\u00e5 Windows Azure Pack?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/73cbf7fd7e0330676c4d937df68289f5.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hyper-V \u00e4r inte s\u00e4rskilt anv\u00e4ndarv\u00e4nligt, SCVMM g\u00f6r det inte mycket b\u00e4ttre. Men det finns en produkt som heter Windows Azure Pack, som \u00e4r ett till\u00e4gg till SCVMM och imiterar Azure. Men i verkligheten ser produkten \u00f6vergiven ut: dokumentationen har trasiga l\u00e4nkar och \u00e4r ganska sparsam. Men inom ramen f\u00f6r att utforska alternativ f\u00f6r att f\u00f6renkla v\u00e5rt moln tittade vi \u00e4ven p\u00e5 detta.<\/p>\n<p><\/p>\n<h3 id=\"den-250-windows-azure-pack-ne-ochen-ostaemsya-na-scvmm\">Dag \u2116250: Windows Azure Pack \u00e4r inte s\u00e5 bra. Vi stannar kvar p\u00e5 SCVMM.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/8753b3da72adfb035d1a2f23ad28809b.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Windows Azure Pack verkade lovande, men det beslutades att inte inf\u00f6ra WAP med dess komplikationer f\u00f6r att f\u00e5 on\u00f6diga funktioner, och vi stannade p\u00e5 SCVMM.<\/p>\n<p><\/p>\n<h3 id=\"den-360-edim-slona-po-chastyam\">Dag \u2116360: \u00c4ter elefanten bit f\u00f6r bit.<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/84e003906234c46b57b7769abd7b7993.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>F\u00f6rst efter ett \u00e5r var plattformen redo f\u00f6r flytt och processen b\u00f6rjade. En S.M.A.R.T. uppgift st\u00e4lldes. Vi listade alla VM och b\u00f6rjade g\u00e5 igenom konfigurationen en i taget, beskriva den p\u00e5 Ansible och t\u00e4cka med tester.<\/p>\n<p><\/p>\n<h3 id=\"den-450-kakaya-sistema-poluchilas\">Dag \u2116450: Vilket system fick vi?<\/h3>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/1d0c64e6a229a0b4e0e49f7b832147ba.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Sj\u00e4lva processen \u00e4r inte intressant. Den \u00e4r rutinm\u00e4ssig, och det kan noteras att de flesta konfigurationerna var relativt enkla eller isomorfa, och enligt Pareto-principen kr\u00e4vde 80 % av konfigurationerna 20 % av tiden. P\u00e5 samma s\u00e4tt gick 80 % av tiden \u00e5t till att f\u00f6rbereda flytten och endast 20 % till sj\u00e4lva flytten. <\/p>\n<p><\/p>\n<h2 id=\"den-540-final\">Dag nr 540: Avslutning<\/h2>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Ansible: Migrering av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS under 18 m\u00e5nader\" src=\"\/wp-content\/uploads\/2020\/05\/7e3d1936dca58506d3b8efcf4ee3c115.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vad har h\u00e4nt under de senaste 18 m\u00e5naderna?<\/p>\n<p><\/p>\n<ol>\n<li>\u00d6verenskommelserna blev kod.<\/li>\n<li><em>Manuell arbetskraft<\/em> -&gt; <em>Mekanisering<\/em> -&gt; <em>Automatisering<\/em>.<\/li>\n<\/ol>\n<p><\/p>\n<h2 id=\"links\">L\u00e4nkar<\/h2>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500350\/\">Engelsk version<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.goncharov.xyz\/it\/coreos2centos-ru.html\">Korspost fr\u00e5n personlig blogg<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/cloud.mail.ru\/public\/UDCZ\/WM4Y9Qv3j\">bilder<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/500058\/\">Hur man b\u00f6rjar testa Ansible, refaktorerar projektet p\u00e5 ett \u00e5r och inte tappar f\u00f6rst\u00e5ndet.<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/467171\/\">L\u00e4rdomar fr\u00e5n att testa \u00f6ver 200 000 rader av Infrastrukturkod<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/441928\/\">L\u00e5t oss distribuera till Openshift<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/342216\/\">Hur man testar din egen OS-distribution<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/en\/post\/437004\/\">Testa mig om du kan. Dr\u00f6mmer YML-utvecklare om att testa Ansible?<\/a><\/noindex><\/li>\n<\/ul>\n<p>K\u00e4lla: <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.4 - 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\/sv\/blog\/administrirovanie\/ansible-migracziya-konfiguraczii-120-vm-c-coreos-na-centos-za-18-mesyaczev\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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\/sv\/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: Migration av konfigurationen av 120 VM fr\u00e5n CoreOS till CentOS p\u00e5 18 m\u00e5nader | ProHoster","description":"Detta.","canonical_url":"https:\/\/prohoster.info\/sv\/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":"sv_SE","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\/sv\/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\/sv\/wp-json\/wp\/v2\/posts\/80289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=80289"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/80289\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/80290"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=80289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=80289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=80289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}