GNU/Linux >> Linux Esercitazione >  >> Linux

Terraform vs Ansible:qual è la differenza e quale dovresti usare?

Il modo in cui DevOps come cultura sta guadagnando slancio, strumenti come Ansible e Terraform sono testimoni di un'enorme richiesta e popolarità.

Entrambi gli strumenti sono considerati Infrastructure as Code (IaC) soluzioni che aiutano nella distribuzione di codice e infrastruttura. Sebbene Ansible agisca come una soluzione di gestione della configurazione comunemente abbreviata in "CM", Terraform è uno strumento di orchestrazione di servizi o provisioning.

Si noti che esistono sovrapposizioni e questi termini non si escludono necessariamente a vicenda. Questo è ciò che confonde le persone ed è per questo che paragonerò Ansible e Terraform.

Spiegherò a cosa servono questi strumenti, quali sono i loro pro e contro. Questo ti aiuterà a decidere se utilizzare Ansible o Terraform nei tuoi progetti.

Ansible e Terraform:quali sono questi strumenti?

Diamo prima una breve occhiata a quali sono questi popolari strumenti DevOps.

Cos'è Ansible?

Ansible è uno strumento di automazione IT. Può configurare sistemi, distribuire software ed eseguire attività IT più avanzate come distribuzioni continue o aggiornamenti continui senza tempi di inattività.

Cos'è Terraform?

Terraform è uno strumento per la creazione, la modifica e il controllo delle versioni dell'infrastruttura in modo sicuro ed efficiente. Terraform è in grado di gestire fornitori di servizi esistenti e popolari, nonché soluzioni interne personalizzate.

Prima di evidenziare le differenze tra questi due strumenti, cerchiamo di capire che cos'è la gestione della configurazione e l'orchestrazione.

Gestione della configurazione e orchestrazione

La gestione della configurazione è un insieme di processi e procedure che garantisce che lo stato desiderato e coerente dell'infrastruttura che include server e software sia sempre soddisfatto. In altre parole, è un modo per assicurarsi che un sistema funzioni come previsto man mano che le modifiche vengono apportate nel tempo.

Gli strumenti CM assicurano che le implementazioni IT siano più veloci, incrementali, ripetibili, scalabili, prevedibili e mantengono lo stato desiderato, portando le risorse gestite in uno stato previsto.

Strumenti come Ansible vengono utilizzati per eseguire la gestione della configurazione.

Quando si tratta di orchestrazione, puoi utilizzare gli strumenti di orchestrazione non solo per eseguire il provisioning di server, ma anche database, cache, bilanciatori di carico, code, monitoraggio, configurazione di sottorete, impostazioni del firewall, regole di routing, certificati SSL e quasi ogni altro aspetto della tua infrastruttura , principalmente infrastruttura di cloud pubblico.

Terraform è uno strumento di orchestrazione. È progettato per eseguire il provisioning delle istanze del server stesse, lasciando il compito di configurare quei server ad altri strumenti.

Lingua procedurale vs. dichiarativa

Gli strumenti DevOps possono essere classificati come procedurali o dichiarativi in ​​base a come eseguono le loro azioni quando applicati.

Procedurale descrive un'applicazione che richiede che i passaggi esatti siano stabiliti nel codice mentre Dichiarativo “dichiara” esattamente ciò che serve, non il processo attraverso il quale si ottiene il risultato.

Ansible utilizza lo stile procedurale in cui scrivi il codice che specifica le attività passo dopo passo per ottenere lo stato finale desiderato.

Mentre strumenti come Terraform, AWS CloudFormation sono tutti dichiarativi nella definizione del processo in cui scrivi il codice che specifica lo stato finale desiderato. Ad esempio, se avessi bisogno di 5 istanze EC2, è esattamente quante ne avresti dopo l'esecuzione del codice.

Ansible e Terraform:confronto

Vediamo quali sono i vantaggi e gli svantaggi dell'utilizzo di Terraform:

Pro di Terraform

  • Terraform mantiene l'intera infrastruttura cloud e rende disponibili tali risorse come codice. Ciò rende molto semplice il processo di modifica incrementale.
  • Design modulare.
  • Semplice e facile da imparare
  • Mantiene lo stato delle risorse create. Tutti gli oggetti creati da Terraform verranno ricreati se eliminati da qualsiasi altro processo.
  • Integrazione perfetta con pipeline CI/CD.
  • Consente l'importazione di risorse esistenti per portarle nello stato Terraform.
  • Quando esegui terraform plan , mostra le modifiche che stanno per essere applicate alle risorse già esistenti. Ciò offre agli ingegneri DevOps una panoramica delle modifiche che stanno per apportare, in particolare se le modifiche non sono come previsto.

Contro di Terraform

  • Nessun rollback. Devi distruggere tutto ed è necessario rieseguire lo script tf.
  • La gestione degli errori non è matura. A partire da Terraform v.12.20 ci sono due nuove funzioni disponibili per i consumatori try() e can() .
  • La creazione di script Terraform non è consentita direttamente dai file di stato.
  • Lo strumento Terraform è ancora in fase di sviluppo e sta attraversando molte versioni beta ogni mese.
  • Non tutti gli elementi possono essere importati. terrafom import comando può importare solo una risorsa alla volta. Ciò significa che non puoi ancora puntare l'importazione di Terraform su un'intera raccolta di risorse come un AWS VPC e importarla tutta.

Pro e contro dell'utilizzo di Ansible

Ora, diamo un'occhiata agli aspetti positivi e negativi di Ansible.

Pro di Ansible

  • Semplice e facile da imparare
  • Senza agenti
  • Rendi l'intero processo di implementazione automatizzato e intuitivo per gli sviluppatori
  • Script semplici e leggibili basati su YAML (Ansible Playbooks)
  • Enorme supporto per i moduli
  • Disponibilità di un repository centrale chiamato Ansible galaxy per trovare e riutilizzare i contenuti Ansible.

Contro di Ansible

  • Mancanza nell'offerta dell'interfaccia utente. AWX, che alla fine si è evoluto nella torre Ansible, ha ancora un enorme margine di miglioramento.
  • Nessuna manutenzione statale. Ansible non tiene traccia delle dipendenze. Esegue solo una serie sequenziale di attività, si interrompe quando finisce, fallisce o incontra un errore.
  • Non all'altezza del supporto per il sistema operativo Windows. Ansible è ancora in fase iniziale per estendere il supporto per Windows.
  • Non è così semplice se devi scrivere script complessi con logiche estese nei playbook.
  • Il supporto aziendale non è ancora maturo/affidabile.
  • Mancano messaggi di errore descrittivi quando si tratta di eseguire il debug di playbook complessi.

Terraform o Ansible? Quale è meglio per te?

Credimi, non è una domanda semplice a cui rispondere. Perché dipende in gran parte dalle tue esigenze.

Nel mondo reale, all'interno delle organizzazioni IT, non ti affidi mai a uno strumento, ma utilizzi una combinazione di strumenti diversi per ottenere i risultati desiderati.

Sia gli strumenti Ansible che Terraform fanno molte cose abbastanza bene. E la mia preferenza personale è usare Terraform per l'orchestrazione/provisioning e Ansible per la gestione della configurazione.

Terraform offre le migliori prestazioni quando viene utilizzato per l'orchestrazione dell'infrastruttura (gestione delle risorse cloud), poiché questo è ciò per cui è stato creato.

Ansible, d'altra parte, è più adatto e ottimizzato per le attività di gestione della configurazione (provisioning software e macchine). È anche possibile eseguire attività di orchestrazione con esso, ma è solo una parte di ciò che fa.

Il mio suggerimento:usa ciò che è meglio e originariamente creato per l'attività che desideri eseguire.

Ma non è nemmeno questa la regola pratica, perché potresti trovare persone che preferiscono utilizzare uno strumento per tutto e funziona per loro!

Conclusione

Entrambi gli strumenti presentano vantaggi e limitazioni nella progettazione di ambienti Infrastructure as Code per l'automazione. E sì, il successo dipende totalmente dal sapere quali strumenti utilizzare per quali lavori.

Spero di aver chiarito alcune cose su Ansible e Terraform. Se hai ancora domande o suggerimenti, lasciami nella sezione commenti.


Linux
  1. Qual è la differenza tra InnoDB e MyISAM?

  2. Spiegazione dei tipi di file system Linux, quale dovresti usare

  3. Che cos'è il kernel Linux e dovresti aggiornare al kernel più recente?

  4. Database NoSQL distribuito Elasticsearch:cos'è e dovresti usarlo?

  5. Qual è la differenza tra unlink e rm?

Qual è la differenza tra Linux e Unix?

Che cos'è un hypervisor? Qual è la differenza tra il tipo 1 e 2?

Qual è la differenza tra curl e Wget?

Che cos'è un Homelab e perché dovresti averne uno?

Cos'è Zsh? Dovresti usarlo?

Cos'è la funzionalità della community di ONLYOFFICE e perché dovresti usarla?