Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Questa hè una trascrizione di u discorsu DevopsConf 2019-10-01 и SPbLUG 2019-09-25.

Questa hè a storia di un prughjettu chì hà utilizatu un sistema di gestione di cunfigurazione auto-scrittu è perchè u muvimentu in Ansible hà pigliatu 18 mesi.

Day No. -ХХХ: Prima di u principiu

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Inizialmente, l'infrastruttura era custituita da parechji ospiti separati chì eseguivanu Hyper-V. A creazione di una macchina virtuale hà bisognu di parechji passi: mette i dischi in u locu ghjustu, registrà DNS, riservà DHCP, mette a cunfigurazione VM in u repository git. Stu prucessu era parzialmente meccanizatu, ma per esempiu, i VM sò stati distribuiti trà l'ospiti à manu. Ma, per esempiu, i sviluppatori puderanu correggerà a cunfigurazione di VM in git è l'applicà riavviendu a VM.

Soluzione di gestione di cunfigurazione persunalizata

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

L'idea originale, sospettate, hè stata cuncipita cum'è IaC: parechje VM senza statu chì resettanu u so statu à zero quandu riavviate. Chì era a gestione di cunfigurazione VM? Schematically pare simplice:

  1. Un MAC staticu hè statu chjapputu per a VM.
  2. Un ISO cù CoreOS è un discu di boot sò stati cunnessi à a VM.
  3. CoreOS lancia u script di persunalizazione scarichendulu da u servitore WEB basatu annantu à a so IP.
  4. U script scarica a cunfigurazione VM via SCP basatu annantu à l'indirizzu IP.
  5. U footcloth di i schedari di unità systemd è u footcloth di scripts bash sò lanciati.

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Sta suluzione hà assai prublemi evidenti:

  1. CoreOS ISO hè stata obsoleta.
  2. Un saccu di azzioni automatizati cumplessi è magia quandu migrate / creanu VM.
  3. Difficultà cù l'aghjurnamentu è quandu una certa versione di u software hè necessariu. Ancu più divertente cù i moduli di kernel.
  4. I VM ùn sò micca stati cusì ottenuti senza dati, i.e. I VM apparsu cun un discu cù dati d'utilizatori supplementari muntati.
  5. Qualchissia sguassava constantemente e dipendenze di unità di sistema è CoreOS si congelava quandu si riavviava. Hè statu difficiule di catturà questu utilizendu l'arnesi dispunibili in CoreOS.
  6. Gestione di i secreti.
  7. Ùn ci era micca CM. Ci era bash è config YML per CoreOS.

Per applicà a cunfigurazione VM, avete bisognu di reboot, ma ùn pò micca riavvia. Sembra un prublema evidenti, ma ùn ci sò micca dischi persistenti - ùn ci hè nudda parte per salvà logs. Ebbè, ok, pruvemu à aghjunghje l'opzione di carica di u kernel per chì i logs seranu mandati. Ma no, quantu complicatu hè tuttu.

Day #0: Ricunniscite u prublema

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Era l'infrastruttura di sviluppu di solitu: jenkins, ambienti di teste, monitoraghju, registru. CoreOS hè statu cuncepitu per ospitu clusters k8s, i.e. u prublema era cumu CoreOS hè stata utilizata. U primu passu era di sceglie una pila. Avemu stabilitu nantu à:

  1. CentOS cum'è una distribuzione di basa, perchè Questa hè a distribuzione più vicinu à l'ambienti di produzzione.
  2. Ansible per a gestione di cunfigurazione, perchè ci hè statu assai esaminatu nantu à questu.
  3. Jenkins cum'è un quadru per l'automatizazione di i prucessi esistenti, perchè hè digià stata attivamente utilizata per i prucessi di sviluppu
  4. Hyper-V cum'è una piattaforma di virtualizazione. Ci hè una quantità di ragiuni chì vanu fora di u scopu di a storia, ma in corta - ùn pudemu micca aduprà i nuvuli, duvemu aduprà u nostru propiu hardware.

Ghjornu n ° 30: Fixing accordi esistenti - Accords as Code

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Quandu a pila era chjaru, i preparativi per u muvimentu cuminciaru. Fixing accordi esistenti in forma di codice (Accordu cum'è Code!). Transizione travagliu manuale -> meccanica -> automatizazione.

1. Configurate VMs

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Ansible face un grande travagliu di questu. Cù un minimu di movimenti di u corpu pudete piglià u cuntrollu di e cunfigurazioni VM:

  1. Crea un repository git.
  2. Pudemu a lista di VM in inventariu, cunfigurazioni in playbooks è roli.
  3. Avemu stallatu un schiavu jenkins speciale da quale pudete eseguisce Ansible.
  4. Creemu un travagliu è cunfigurà Jenkins.

U primu prucessu hè prestu. L'accordi sò fissi.

2. Crea una nova VM

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Tuttu quì ùn era micca assai convenientu. Ùn hè micca assai cunvenutu per creà VM in Hyper-V da Linux. Unu di i tentativi di mecanizà stu prucessu era:

  1. Ansbile si cunnetta via WinRM à l'ospite Windows.
  2. Ansible esegue un script powershell.
  3. L'script Powershell crea una nova VM.
  4. Utilizendu Hyper-V / ScVMM, quandu crea una VM in u SO invitatu, u nome d'ospitu hè cunfiguratu.
  5. Quandu aghjurnà l'affittu DHCP, a VM manda u so hostname.
  6. L'integrazione standard ddns & dhcp in u latu di u Controller di Dominiu cunfigura u record DNS.
  7. Pudete aghjunghje una VM à u vostru inventariu è cunfigurà cù Ansible.

3.Create mudellu VM

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Ùn anu micca inventatu nunda quì - anu pigliatu un packer.

  1. Aghjunghjite u packer, kickstart config à u repository git.
  2. Stabbilimentu di un schiavu jenkins speciale cù hyper-v è Packer.
  3. Creemu un travagliu è cunfigurà Jenkins.

Cumu funziona stu ligame:

  1. Packer crea una VM viota è piglia l'ISO.
  2. U VM boots, Packer inserisce u cumandimu in u bootloader per utilizà u nostru schedariu kickstart da un dischettu o http.
  3. Anaconda hè lanciata cù a nostra cunfigurazione, è a cunfigurazione iniziale di u SO hè fatta.
  4. Packer aspetta chì a VM sia dispunibule.
  5. Packer in a VM funziona ansible in modu locale.
  6. Ansible usa esattamente i stessi roli chì travaglia in u passu #1.
  7. Packer esporta u mudellu VM.

Day #75: Refactor l'accordu senza rompe = Test ansible + Testkitchen

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Capture cunvenzioni in codice pò esse micca abbastanza. Dopu tuttu, se in l'ins and outs di u prucessu vulete cambià qualcosa, pudete rompe qualcosa. Dunque, in u casu di l'infrastruttura, a prova di sta infrastruttura stessa appare. Per sincronizà a cunniscenza in a squadra, avemu cuminciatu à pruvà roli Ansible. Ùn andaraghju in prufundità perchè... ci hè un articulu chì descrive l'avvenimenti in quellu puntu in u tempu Pruvatemi se pudete o i programatori YML sognu di pruvà Ansible?(spoiler ùn era micca a versione finale è dopu tuttu hè diventatu più cumplicatu Cumu cumincià à pruvà Ansible, refactor u prughjettu in un annu è ùn andate micca pazzi).

Ghjornu #130: Forse CentOS + ansible ùn hè micca necessariu? forse openshift?

Avemu da capisce chì u prucessu di introduzzione di l'infrastruttura ùn era micca l'unicu è ci eranu sottuprogetti laterali. Per esempiu, una dumanda hè ghjunta per lancià a nostra applicazione in openshift è questu risultatu in una ricerca per più di una settimana Lancemu l'applicazione in Openshift è paragunemu strumenti esistenti chì rallentò u prucessu di muvimentu. U risultatu hè chì l'openshift ùn copre micca tutti i bisogni; avete bisognu di hardware reale, o almenu a capacità di ghjucà cù u kernel.

Ghjornu #170: Openshift ùn hè micca adattatu, pigliamu una chance cù Windows Azure Pack?

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Hyper-V ùn hè micca assai amichevule, SCVMM ùn face micca assai megliu. Ma ci hè una cosa cum'è Windows Azure Pack, chì hè un add-on à SCVMM è imita Azure. Ma in realtà, u pruduttu pare abbandunatu: a documentazione hà rottu i ligami è hè assai sparse. Ma cum'è parte di u studiu di l'opzioni per simplificà a vita di a nostra nuvola, anu vistu ancu.

Ghjornu #250: Windows Azure Pack ùn hè micca assai bonu. Restemu nantu à SCVMM

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Windows Azure Pack pareva promettente, ma hè statu decisu di ùn portà WAP cù e so cumplessità in u sistema per l'abitudine di funzioni innecessarii è stà cun SCVMM.

Ghjornu #360: Manghjendu l'elefante pezzu per pezzu

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Solu un annu dopu, a piattaforma per u muvimentu era pronta è u prucessu di muvimentu hà iniziatu. Per questu scopu, un compitu SMART hè statu stabilitu. Avemu verificatu tutte e VM è cuminciamu à calculà a cunfigurazione una per una, a descriverà in Ansible, è copre cù testi.

Ghjornu #450: Chì tipu di sistema avete avutu?

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

U prucessu stessu ùn hè micca interessante. Hè una rutina, pò esse nutatu chì a maiò parte di e cunfigurazioni eranu relativamente simplici o isomorfichi è sicondu u principiu di Pareto, 80% di e cunfigurazioni VM necessanu 20% di u tempu. Da u listessu principiu, 80% di u tempu hè statu passatu per preparà a mossa è solu 20% in u muvimentu stessu.

Ghjornu #540: Finale

Ansible: Migrazione di cunfigurazione 120 VM da CoreOS à CentOS in 18 mesi

Chì hè accadutu in 18 mesi?

  1. L'accordi sò diventati un codice.
  2. U travagliu manuale -> Mecanizazione -> L'automatizazione.

Source: www.habr.com

Add a comment