Terraform è un framework per costruire e configurare l'infrastruttura come codice, con un'interfaccia a riga di comando e linguaggio DSL. Terraform può gestire fornitori di servizi esistenti e popolari, nonché soluzioni interne personalizzate per costruire e configurare data center distribuiti completi.
Terraform Command Line Interface (CLI) ti consente di utilizzare Terraform senza dover scrivere codice o file di configurazione. È un modo ideale per prototipare le modifiche all'infrastruttura con il tuo team prima di scrivere codice, distribuire configurazioni localmente sulla tua macchina o metterle in produzione. La CLI si basa sul formato di file terraformspec creato a questo scopo da terze parti come HashiCorp Nomad CLI Toolkit.
Il toolkit CLI implementa un DSL JavaScript per definire l'infrastruttura e utilizza lo stesso formato di configurazione sia in Terraform che in CLI. Il toolkit CLI fornisce anche comandi per generare modelli di infrastruttura, comporre componenti dell'infrastruttura in soluzioni complete e gestire le modifiche. L'intero flusso di lavoro di Terraform è guidato da funzioni stateless che sono definite nel codice ed eseguite da Terraform ogni volta che si apporta una modifica. Ciò ti consente di pensare alla tua infrastruttura come a un progetto unico che può essere facilmente modificato in fase di esecuzione senza dover ricaricare la configurazione o modificare la base di codice.
Numerosi professionisti IT e aziende utilizzano l'interfaccia a riga di comando Terraform per gestire e persino creare nuove infrastrutture o nuove infrastrutture cloud. L'interfaccia della riga di comando terraform può fornire un metodo più solido per automatizzare modifiche che richiederebbero troppo tempo per essere eseguite manualmente. È un potente strumento per la gestione dell'infrastruttura.
È facile capire perché Terraform è una delle soluzioni di provisioning cloud open source più popolari al mondo. È uno strumento utilizzato da persone Linux come te!
All'interno, troverai spiegazioni complete ed esempi dei comandi CLI Terraform più comuni che sono stati appositamente selezionati per darti un'esperienza pratica con le funzionalità più potenti di Terraform.
Prerequisito
- Per seguire questo articolo, dovresti avere:
- Una certa conoscenza di base delle caratteristiche e delle funzioni di Terraform.
- Una macchina Linux. Questa demo utilizza Ubuntu 20.04 LTS, ma qualsiasi distribuzione Linux funzionerà.
- Terraform e Docker installati sulla macchina.
Clonazione del codice principale
Ora che hai soddisfatto i prerequisiti, sei pronto per iniziare a clonare il codice principale su cui utilizzare Terraform CLI.
1. Esegui il comando apt install di seguito per installare git sul tuo sistema. Git è un sistema di controllo di revisione distribuito open source progettato per gestire qualsiasi cosa, dai piccoli ai progetti molto grandi, con velocità ed efficienza. Utilizzerai git per clonare il modello di progetto dell'interfaccia della riga di comando terraform da github.com. Quindi controllerai la versione corretta della riga di comando terraform per questa demo.
sudo apt install git -y
2. Esegui il comando git clone di seguito per clonare il modello di progetto della riga di comando terraform nella directory corrente.
git clone https://github.com/howtoforge-com/terraform-cli.git
3. Spostati nella directory terraform-cli appena clonata e apri il main.tf file con il tuo editor di testo preferito (vim, emacs, nano, ecc.). Un file main.tf è il punto di ingresso del tuo progetto nell'interfaccia della riga di comando (Cli) di terraform. Quando esegui il comando terraform, utilizza main.tf file come input per istruzioni su come costruire la tua infrastruttura.
cd terraform-cli && sudo nano main.tf
Otterrai il seguente output.
- La terraforma { } sezione del main.tf file non fa altro che impostare il provider della finestra mobile come required_provider . Affinché Terraform possa gestire la tua infrastruttura Docker, devi avere configurato il provider Docker.
- La risorsa "docker_image" "nginx" { code block dimostra l'utilizzo della CLI terraform creando una nuova risorsa chiamata docker_image . La riga successiva utilizza l' immagine mobile per creare una risorsa chiamata nginx . Puoi dedurre che questo verrà utilizzato per gestire il tuo contenitore Docker. La riga successiva imposta il nome della tua immagine Docker come nginx:latest. Il keep_locally =false impedisce che l'immagine venga memorizzata nella cache locale sul tuo computer ed è una buona idea per evitare download duplicati.
- La risorsa "docker_container" "nginx" { dimostra l'utilizzo della CLI terraform creando una nuova risorsa chiamata docker_container . La riga successiva utilizza docker_container per creare una risorsa chiamata nginx . Questo verrà utilizzato per gestire la mappatura delle porte del tuo container Docker. La riga successiva imposta il nome del tuo contenitore mobile come tutorial e infine, mostra come mappare la porta 8000 e porta 80 sul tuo computer host sul tuo container Docker utilizzando il blocco delle porte.
Utilizzo dell'interfaccia a riga di comando (CLI) di Terraform per costruire la tua prima infrastruttura
Ora che hai clonato il modello di progetto terraform, puoi costruire la tua prima infrastruttura. Utilizzerai Terraform CLI per costruire un'infrastruttura utilizzando main.tf del tuo progetto file. Creerai un container Docker e mapperai una porta dal tuo computer host al container Docker.
1. Per prima cosa, esegui il comando terraform init per inizializzare la tua directory di lavoro. Il comando terraform init inizializza la tua directory di lavoro e scarica tutti i plugin necessari necessari a Terraform per gestire la tua infrastruttura. Una directory di lavoro è la directory in cui utilizzerai il comando terraform per gestire la tua infrastruttura. Una volta inizializzata, questa directory contiene un file main.tf e può contenere più file di supporto.
terraform init
Dopo aver eseguito correttamente il comando terraform init, riceverai il seguente output.
2. Quindi, esegui il comando terraform fmt per formattare automaticamente il tuo file main.tf per leggibilità e coerenza. Il comando terraform fmt riformatterà il tuo file main.tf per renderlo leggibile e coerente. Questa è una buona pratica da seguire poiché renderà i tuoi file più facili da leggere per te e per gli altri.
terraform fmt
Se il comando terraform fmt ha modificato il tuo main.tf file, stamperà il nome del file che ha riformattato. In questa demo, l'output è vuoto perché il file main.tf era già formattato secondo i gusti di Terraform, come mostrato di seguito.
3. Esegui il comando terraform validate per assicurarti che la tua infrastruttura sia costruita come previsto. Il comando terraform validate è un controllo di sicurezza per verificare che la tua infrastruttura possa essere costruita come previsto.
terraform validate
Se non ci sono errori, riceverai un output simile al seguente, indicando che tutto è pronto per costruire la tua prima infrastruttura.
4. Eseguire il comando terraform plan per vedere cosa farà Terraform per costruire l'infrastruttura. Il comando terraform plan è un'anteprima di ciò che Terraform intende costruire e non è lo stesso dell'applicazione terraform.
terraform plan
Il comando terraform plan restituisce la struttura seguente, mostrando che creerà un'istanza della risorsa docker_container denominata nginx e una risorsa docker_image denominata tutorial.
5. Eseguire il comando terraform apply per applicare le modifiche visualizzate in anteprima con il piano terraform. Il comando terraform apply costruirà la tua infrastruttura. Il comando terraform apply creerà tutte le risorse descritte nel file di configurazione main.tf di Terraform.
Questo comando riutilizzerà la valutazione di variabili, vincoli e mappature dal comando terraform plan per produrre il piano più efficiente possibile. Qualsiasi opzione aggiuntiva specificata nella riga di comando con terraform apply verrà utilizzata durante l'esecuzione del comando apply. Inserisci sì e premi Invio quando viene chiesto di Inserire un valore .
terraform apply
Una volta che il comando terraform apply ha esito positivo, vedrai un messaggio che indica che la tua infrastruttura è stata costruita con successo, come mostrato di seguito. Quando ciò accade, significa che la tua infrastruttura è stata costruita come previsto ed è aggiornata con il tuo file di configurazione.
6. Eseguire il comando ls per elencare tutti i file nella directory di lavoro. Vedrai un nuovo file chiamato terraform.tfstate come mostrato di seguito. Viene creato un file con questo nome per tenere traccia delle modifiche alla tua infrastruttura. Il comando terraform plan memorizza le modifiche che verranno applicate durante l'esecuzione di terraform apply in un file intermedio denominato .tfstate. Il file di stato contiene lo stato completo dell'infrastruttura come lo vede Terraform. Questo file è necessario per applicare qualsiasi configurazione e deve essere trasferito quando si apportano modifiche, anche se la destinazione è all'interno dello stesso provider.
ls
7. Il processo di costruzione è terminato. Esegui il comando terraform destroy per distruggere l'infrastruttura che hai appena costruito. Inserisci sì e premi Invio quando viene chiesto di Inserire un valore . Il comando terraform destroy eliminerà tutte le risorse create da questa demo. Il comando terraform destroy cancellerà tutte le risorse descritte nel tuo Terraform main.tf file di configurazione. Una volta che le risorse sono state distrutte, non possono essere recuperate.
È necessario rimuovere le risorse inutilizzate per tenere sotto controllo la configurazione per un ambiente. Non si tratta di coprire i guasti, ma di prevenire i guasti prevenendo l'accumulo di risorse in disuso.
terraform destroy
Conclusione
In questo tutorial, hai imparato come utilizzare i concetti Terraform più comuni mostrati in un esempio per costruire la tua prima infrastruttura. Hai imparato a utilizzare la CLI Terraform per costruire l'infrastruttura utilizzando il file main.tf del tuo progetto. La CLI può essere utilizzata per pianificare, applicare e distruggere la tua infrastruttura.
Ora hai gli strumenti per costruire la tua infrastruttura. Puoi gestire facilmente un'ampia gamma di risorse, grazie al linguaggio di configurazione completo ed espressivo di Terraform.
Puoi sfruttare le tue nuove conoscenze nella gestione dell'infrastruttura, già in uso per i container Docker, Kubernetes e OpenStack, per portare maggiore efficienza e coerenza alla tua pratica di infrastruttura come codice.