Terraform (programari)
Tipus | programari amb la font disponible | ||||||
---|---|---|---|---|---|---|---|
Versió estable | 1.9.5 (20 agost 2024) | ||||||
Gènere | infrastructure as code (en) | ||||||
Llicència | Business Source License 1.1 (en) Llicència pública de Mozilla, versió 2.0 | ||||||
Característiques tècniques | |||||||
Sistema operatiu | Linux, macOS i Microsoft Windows | ||||||
Escrit en | Go | ||||||
Equip | |||||||
Desenvolupador(s) | HashiCorp | ||||||
Fonts de codi
| |||||||
Més informació | |||||||
Lloc web | terraform.io (anglès) | ||||||
Stack Exchange | Etiqueta | ||||||
Seguiment d'errors | Seguiment d'errors | ||||||
| |||||||
Terraform és un entorn de programari d'infraestructura com a codi de codi obert publicat per HashiCorp. Aquesta eina automatitza la construcció de recursos d'infraestructura dels centres de dades com ara una xarxa, màquines virtuals, un grup de seguretat o una base de dades.
La infraestructura es descriu en forma del llenguatge de configuració Hashicorp Configuration Language (HCL). També és possible utilitzar el llenguatge JSON.[1]
Terraform permet, sobretot, definir topologies de núvol per als principals proveïdors d'infraestructura cloud, com ara Amazon Web Services, IBM Cloud (abans Bluemix), Google Cloud Platform, Linode,[2][3] Microsoft Azure, Oracle Cloud Infrastructure, OVHcloud,[4][5] o VMware, vSphere i OpenStack,.[6][7][8][9][10][11]
Els recursos descrits al codi HCL Terraform depenen del proveïdor d'infraestructura del núvol. Per exemple, un recurs Terraform definit per a una topologia Amazon no es pot reutilitzar per a una topologia OpenStack o Microsoft Azure, perquè no tenen les mateixes propietats.
Ordres principals
terraform init
: inicialitzar el directori que conté la configuració de Terraformterraform plan
: mostrar una vista de les diferències entre la configuració de Terraform i la configuració realterraform apply
: aplicar la configuracióterraform destroy
: destruir els recursos desplegatsterraform import
: integrar en la seva configuració els recursos desplegats fora de Terraformterraform state
: interactuar amb el fitxer d'estatterraform validate
: validar la sintaxi del codi
Provider
Un Provider és la representació del proveïdor d'infraestructura a Terraform. Inclou diferents recursos que es poden desplegar.
State file
Terraform desa l'estat de la seva configuració en un fitxer pla anomenat state file. Quan s'utilitza l'ordre terraform plan
o terraform apply
es llegeix i es compara amb la infraestructura del moment.
Es pot emmagatzemar localment (amb la configuració de Terraform) o en un dispositiu remot.[12]
Paraules clau
resource
Un recurs (paraula clau resource
) és un objecte Terraform que s'ha de crear a la infraestructura :
resource "database" "my_database" { engine = "mysql" }
Cada recurs té un tipus (database
), un nom de Terraform local definit per l'usuari (my_database
), els seus arguments (en l'exemple, engine
) i atributs (que es poden recuperar mitjançant la sintaxi <type>.<nom>.<attribut>
).
data
Una dada és un objecte Terraform del que en volem recuperar atributs :
data "database" "my_database" { database_id = "...." }
Els atributs són accessibles mitjançant les data.<type>.<nom>.<attribut>
variable
Es pot donar una variable (variable
paraula clau) com a argument a Terraform.
En primer lloc, cal definir la variable :
variable "example" { description = "Aquesta és una variable d'exemple" type = string default = "Wikipedia" }
Aleshores podem instanciar-ho (si no ho fem, Terraform utilitzarà el valor default
o demanarà entrada quan demani terraform plan
o terraform apply
) :
example = "Hola, Món!"
També és possible utilitzar un fitxer de variables (per exemple, específic per a diferents entorns) i posar-lo com a argument de terraform plan
o terraform apply
.
Les variables de Terraform tenen noms com : var.example
.
output
Una sortida és un objecte Terraform que s'utilitza per desar un atribut d'un recurs o dades per reutilitzar-lo en un altre codi de Terraform o simplement per mostrar-lo al terminal, al final de l'ordre terraform apply
.
output "my_database_id" { value = data.database.my_database.engine_version }
module
Un mòdul és una part reutilitzable del codi Terraform. Com qualsevol altre arbre de Terraform, un mòdul té recursos, dades, variables i sortides.
Per definir un mòdul :
module "create_database" { source = "./modules/database" database_size = 1024 }
Referències
- ↑ [enllaç sense format] https://www.terraform.io/language/syntax/json
- ↑ Roesch, Dave «Now Available: Linode Terraform Provider» (en anglès). Linode, 30-10-2018 [Consulta: 2 novembre 2018].
- ↑ «Provider: Linode - Terraform by HashiCorp» (en anglès). Terraform by HashiCorp. [Consulta: 2 novembre 2018].
- ↑ «Infrastructure as code: Deploying Terraform with OVH». Infrastructure as code: Deploying Terraform with OVH, 09-10-2019. Arxivat de l'original el 2019-10-10. [Consulta: 9 octubre 2019].
- ↑ «Provider: OVH» (en anglès). Terraform by HashiCorp, 10-10-2019. Arxivat de l'original el 2019-10-10. [Consulta: 10 octubre 2019].
- ↑ «Terraform vs. Chef, Puppet, etc. - Terraform by HashiCorp» (en anglès). Terraform by HashiCorp. [Consulta: 14 març 2018].
- ↑ «HashiCorp Terraform 0.9. Released with State Locking, State Environments, and Destroy Provisioners». InfoQ. [Consulta: 23 maig 2017].
- ↑ Yevgeniy., Brikman,. Terraform Writing Infrastructure as Code.. O'Reilly Media, 2017, p. 206. ISBN 978-1-4919-7705-7. OCLC 978667796.
- ↑ Somwanshi, Sneha «Choosing the Right Tool to Provision AWS Infrastructure» (en anglès). ThoughtWorks, 01-03-2015.
- ↑ Turnbull, James. The Terraform Book, 2016, p. 315. ISBN 978-0-9888202-5-8.
- ↑ «Google Cloud Platform Provider for Terraform». [Consulta: 5 febrer 2017].
- ↑ «State». Documentation officielle. [Consulta: 9 març 2022].
Vegeu també
Enllaços externs
- Terraform - Lloc web oficial
- Terraform a Github