Los desarrolladores y los equipos DevOps suelen utilizar Infraestructura como código (IaC) para gestionar sus despliegues de software e infraestructuras de forma repetible y coherente. Con las herramientas IaC, los usuarios pueden automatizar el ciclo de vida de las implantaciones, incluido el aprovisionamiento, la configuración, la implantación y la destrucción de recursos. Hashicorp Terraform es una herramienta IaC muy popular.
Nos complace anunciar la disponibilidad general de la versión 1.0 de la aplicación Proveedor Terraform Couchbase Capellaque permitirá a los usuarios gestionar mediante programación los despliegues de Couchbase Capella. Esta versión sustituye a la v0.2 del proveedor Capella que ahora está obsoleto y dejará de ser compatible en breve.
En este post, le ofrecemos un rápido ejemplo de recorrido por el proveedor Capella Terraform.
Fondo
A principios de este año, anunciamos el lanzamiento de nuestra nueva versión de API de gestión de Capella - una versión renovada de la API pública de Capella que permite a los usuarios controlar mediante programación los recursos de Couchbase Capella a través de una interfaz RESTful.
El proveedor de Couchbase Capella Terraform v1.0 aprovecha la API de gestión de Capella. Como tal, el conjunto de recursos de Capella que pueden gestionarse a través del proveedor depende de la API subyacente. A medida que la API evolucione para admitir nuevos puntos finales. El proveedor Terraform se ampliará en consecuencia con el fin de apoyar la gestión de los recursos correspondientes expuestos a través de los puntos finales.
Paseo del proveedor
En este ejemplo, demostraremos el uso del proveedor Capella Terraform para desplegar un proyecto Capella, un cluster y aprovisionar un bucket.
En Repo de GitHub tiene un amplio conjunto de ejemplos para gestionar cada uno de los recursos soportados, incluyendo usuarios, proyectos, clusters, buckets, credenciales de bases de datos, CIDRs permitidos, App Services, backup/restore y más.
Requisitos previos
-
- Terraform >= 1.5.2
- Ir >= 1,20
- Una cuenta de pago Capella.
Nota que la versión actual del proveedor no es compatible con las pruebas gratuitas de Capella. La compatibilidad con las pruebas estará disponible cuando la API de gestión subyacente de Capella admita la orquestación de despliegues de pruebas.
Autenticación y autorización
Todas las operaciones del proveedor Capella Terraform se autentican y autorizan mediante la clave API de Capella Management. En un entorno de producción, utilizará algo como Bóveda de HashiCorp o un gestor de secretos ofrecido por un proveedor de servicios en nube como Administrador de secretos de AWS para gestionar sus claves API. La referencia al gestor de secretos se especificaría como entrada al proveedor Terraform.
A efectos de esta demostración, estableceremos las credenciales en un archivo de variables de entorno local:
- Cree un archivo llamado variables.tf y añada las siguientes definiciones de variables. Vamos a utilizar estas variables dentro de nuestro archivo de configuración.
1 2 3 4 5 6 7 |
variable "organization_id" { descripción = "Capella Organization ID" } variable "auth_token" { descripción = "Clave API de autenticación" } |
2. Cree un archivo llamado terraform.template.tfvars y añadir las siguientes líneas. Aquí, especificamos los valores de las variables clave asociadas con el despliegue
1 2 |
auth_token = "" organización_id = "" |
-
- auth_token: Puede crear la clave API a través de Capella UI o a través del API de gestión. En función del alcance de los recursos gestionados por el proveedor, debe crear una clave API de nivel de organización o de nivel de proyecto con el conjunto de funciones adecuado.
- organización_id: Puede obtenerlo de la API de gestión de la organización o de la URL del navegador de Capella UI (busque el parámetro "oid").
https://cloud.couchbase.com/databases?oid=0783f698-ac58–4018–84a3-xxxxxxxxxxxxx
Configuración de la implantación de ejemplo
Como ya se ha mencionado, el Repo de GitHub del Proveedor tiene un amplio conjunto de plantillas de configuración. En este post, voy a utilizar un ejemplo sencillo para demostrar el uso del proveedor para crear un perfil, desplegar un clúster y un bucket dentro del clúster.
-
- Cree un archivo llamado capella.tf y añada la siguiente configuración. La configuración hace lo siguiente
- Crea un proyecto dentro de la Organización especificada
- Crea un cluster dentro del proyecto
- Crea un cubo dentro del clúster
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 |
terraformar { proveedores_requeridos { couchbase-capella = { fuente = "registry.terraform.io/couchbasecloud/couchbase-capella" } } } # Configure el Couchbase Capella Proveedor utilizando predefinido variables proveedor "couchbase-capella" { ficha_de_autenticación = var.auth_ficha } # Cree ejemplo proyecto recurso recurso "couchbase-capella_project" "nuevo_proyecto" { organización_id = var.organización_id nombre = "Proyecto de demostración Terraform" descripción = "Un proyecto Capella que albergará un cluster Capella" } # Tiendas el proyecto nombre en un salida variable. # Puede sea visto utilizando `proyecto de salida terraform` comando salida "proyecto" { valor = couchbase-proyecto_capella.nuevo_proyecto.nombre } # Cree grupo recurso recurso "couchbase-capella_cluster" "nuevo_cluster" { organización_id = var.organización_id proyecto_id = couchbase-proyecto_capella.nuevo_proyecto.id nombre = "Terraform Demo Cluster" descripción = "Cluster de prueba creado con Terraform" proveedor_de_nube = { tipo = "aws" región = "us-east-1" cidr = "192.168.10.0/23" } servidor_couchbase = { versión = "7.2" } grupos_de_servicio = [ { nodo = { calcula = { cpu = 4 ram = 16 } disco = { almacenamiento = 50 tipo = "io2" iops = 5000 } } número_de_nodos = 3 servicios = ["datos", "índice", "consulta"] } ] disponibilidad = { "tipo" : "multi" } soporte = { plan = "desarrollador profesional" zona horaria = "PT" } } # Tiendas el grupo detalles en un salida variable. # Puede sea visto utilizando `terraform output cluster` comando salida "cluster" { valor = couchbase-capella_cluster.nuevo_grupo } # Cree cubo en grupo recurso "couchbase-capella_bucket" "nuevo_cubo" { nombre = "terraform_bucket" organización_id = var.organización_id proyecto_id = couchbase-proyecto_capella.nuevo_proyecto.id grupo_id = couchbase-capella_cluster.nuevo_cluster.id tipo = "couchbase" almacenamiento_backend = "couchstore" asignación_memoria_in_mb = 100 bucket_conflict_resolution = "seqno" durabilidad_nivel = "ninguno" réplicas = 1 descarga = falso tiempo_de_vida_segundos = 0 desahucio_política = "fullEviction" } # Tiendas el cubo nombre en un salida variable. # Puede sea visto utilizando `terraformar cubo de salida` comando salida "cubo" { valor = couchbase-capella_bucket.nuevo_cubo.nombre } |
Despliegue y gestión de recursos
Utilizar la norma Comandos de Terraform para inicializar y desplegar los recursos
1. Inicializar el proveedor Terraform
Terraform debe inicializarse la primera vez que se utiliza el proveedor:
1 |
terraformar init |
2. Revisar el plan Terraform
Utilice el siguiente comando para revisar los recursos que se desplegarán:
1 |
terraformar plan -var-archivo terraformar.plantilla.tfvars |
3. Ejecutar el plan Terraform
Despliegue los recursos Couchbase Capella utilizando el siguiente comando:
1 |
terraformar aplicar -var-archivo terraformar.plantilla.tfvars |
Debería ver una salida similar a la siguiente. El despliegue de los recursos tardará unos minutos:
1 2 3 4 5 6 7 8 9 10 11 12 |
proyecto_capella.nuevo_proyecto: Creación de... proyecto_capella.nuevo_proyecto: Creación completa después de 0s [id=c9151819-2f75-41dd-b944-7e33d12163ea] capella_cluster.nuevo_cluster: Creación de... capella_cluster.nuevo_cluster: Todavía crear... [10s transcurrido] capella_cluster.nuevo_cluster: Todavía crear... [30s transcurrido] ....... capella_cluster.nuevo_cluster: Todavía crear... [2m50s transcurrido] capella_cluster.nuevo_cluster: Todavía crear... [3m0s transcurrido] capella_cluster.nuevo_cluster: Creación completa después de 3m1s [id=29ebb043-xxxx-xxxx-xxxx-xxxxxxxxxxxx] capella_bucket.nuevo_cubo: Creación de... capella_bucket.nuevo_cubo: Creación completa después de 0s [id=dGVycmFmb3JtXXXXXXXXXX=] Solicitar completa! Recursos: 3 añadido, 0 cambiado, 0 destruido. |
4. Obtener el estado actual de los recursos
1 |
terraformar estado lista |
Debería ver una salida similar a la siguiente, que muestra los tres recursos creados:
1 2 3 |
couchbase-capella_bucket.nuevo_cubo couchbase-capella_cluster.nuevo_cluster couchbase-proyecto_capella.nuevo_proyecto |
5. Obtener el estado detallado de cualquier recurso desplegado
1 |
terraformar estado Mostrar couchbase-proyecto_capella.nuevo_proyecto |
Debería ver una salida similar a la siguiente, que muestra los tres recursos creados:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# proyecto_capella.nuevo_proyecto: recurso "couchbase-capella_project" "nuevo_proyecto" { auditoría = { creado_en = "2023-11-19 22:59:59.695367442 +0000 UTC" creado_por = "WFXyD6xRlAyCwKcpLGs6pKVScBGK299c" modificada = "2023-11-19 22:59:59.695380869 +0000 UTC" modificado_por = "WFXyD6xRlAyCwKcpLGs6pKVScBGK299c" versión = 1 } descripción = "Un proyecto Capella que albergará un cluster Capella" etiqueta = "Versión: 1" id = "5ab4f4b5-756c-4f12-97ec-xxxxxyyyyyzzzz" nombre = "Proyecto de demostración Terraform" organización_id = "8b05f96d-45ba-zzzz-xxxx-fa55555555" } |
6. Destruir los recursos
Ejecute el siguiente comando para destruir los recursos:
1 |
terraformar destruir -var-archivo terraformar.plantilla.tfvars |
Debería ver una salida similar a la siguiente. Tardará unos minutos en destruir los recursos.
1 2 3 4 5 6 7 8 9 10 11 |
capella_bucket.nuevo_cubo: Destruir... [id=dGVycmFmb3JtX2J1Y2tldA==] capella_bucket.nuevo_cubo: Destrucción completa después de 1s capella_cluster.nuevo_cluster: Destruir... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b] capella_cluster.nuevo_cluster: Todavía destruyendo... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b, 10s transcurrido] ..... capella_cluster.nuevo_cluster: Todavía destruyendo... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b, 50s transcurrido] .... [id=e64b8ba9-46a1-46f1-9fc3-7a412508ce4b, 3m20s transcurrido] capella_cluster.nuevo_cluster: Destrucción completa después de 3m26s proyecto_capella.nuevo_proyecto: Destruir... [id=5ab4f4b5-756c-4f12-97ec-8e2427c7c1ab] proyecto_capella.nuevo_proyecto: Destrucción completa después de 1s |
Recursos y próximos pasos
La versión 1.0 del proveedor sustituye a la v0.0.2 del proveedor Capella, que está obsoleta y se eliminará en breve. Por lo tanto, si está utilizando el antiguo proveedor, debe planificar la migración al nuevo.
Aquí tiene enlaces directos a algunos recursos útiles:
Si tiene alguna pregunta o comentario, déjelo a continuación. En Foros de Couchbase o Couchbase discord son otro buen lugar para plantear preguntas.
¿Es posible crear un endpoint app-service a través de TF junto con una función de validación para la colección deseada?
Hola Jan- Actualmente disponemos de APIs de gestión que le permitirán desplegar y gestionar de forma programática App Endpoints - https://docs.couchbase.com/cloud/management-api-reference/index.html#tag/App-Endpoints. Terraform está en nuestro radar. Permanezca atento.