Suministrar una instancia de Databases for PostgreSQL con Terraform
En esta guía de aprendizaje, aprenderá a utilizar Terraform para suministrar una instancia de Databases for PostgreSQL .
Visión general de las herramientas disponibles
Antes de iniciar el proceso de suministro de una base de datos con Terraform, es necesario tener una cuenta de IBM Cloud.
En esta guía de aprendizaje puede suministrar la base de datos mediante Terraform, lo que le permite crear, cambiar y mejorar la infraestructura de forma segura y predecible. Es una herramienta de código abierto que codifica las API en archivos de configuración declarativos que se pueden compartir entre los miembros del equipo, tratar como código, editar, revisar y versionar. Es infraestructura como código. Puede escribir cómo debe ser la infraestructura y Terraform creará, actualizará y eliminará los recursos de nube según sea necesario. Para obtener más información, consulte Comprender los conceptos básicos de Terraform.
Para dar soporte a un enfoque de varias nubes, Terraform trabaja con proveedores. Un proveedor es responsable de entender las interacciones de la API y de exponer los recursos. IBM Cloud® tiene un proveedor para Terraform, lo que permite a los usuarios de IBM Cloud® gestionar recursos con Terraform. Aunque Terraform es un producto clasificado como infraestructura como código, no se limita a los recursos de una infraestructura como servicio. Para obtener más información, consulte ibm_database.
Instalar Terraform
- Siga los pasos en Instalar Terraform para instalar Terraform.
Configure el complemento IBM Cloud® Provider
-
Cree o recupere una clave de API de IBM Cloud®. La clave de API se utiliza para autenticar con la plataforma IBM Cloud® y para determinar los permisos para los servicios de IBM Cloud®.
-
Cree un Terraform en el directorio del proyecto de IBM Cloud Databases. El directorio contiene todos los archivos de configuración que crea como parte de esta guía de aprendizaje. El directorio de esta guía de aprendizaje se denomina
tf-postgres, pero puede utilizar cualquier nombre para el directorio.mkdir tf-postgres && cd tf-postgres -
En el directorio del proyecto, cree un archivo de definición de variables denominado
terraform.tfvarsy especifique la clave de API de IBM Cloud que ha recuperado. Además, especifique la región en la que desea que se creen los recursos de IBM Cloud. Si no se especifica ninguna región, el plug-in IBM Cloud® Provider crea automáticamente los recursos en la región us-south. Terraform carga automáticamente las variables definidas en el archivoterraform.tfvarscuando se inicializa el plug-in IBM Cloud Provider y puede hacer referencia a ellas en cada archivo de configuración de Terraform que utilice.Dado que el archivo de definiciones de variables contiene información confidencial, no pulse este archivo en un sistema de control de versiones. Este archivo está pensado para estar solamente en el sistema local.
Ejemplo de archivo
terraform.tfvarsibmcloud_api_key = "<IBMCLOUD_API_KEY>" region = "us-east"La región
us-eastse proporciona como un ejemplo, no un requisito. Utilice la región que mejor funciona para el despliegue de la instancia. -
Cree un archivo de configuración de proveedor denominado
provider.tf. Utilice este archivo para configurar el plug-in IBM Cloud Provider con la clave de API de IBM Cloud del archivoterraform.tfvars. El plug-in utiliza esta clave para acceder a IBM Cloud y para trabajar con el servicio IBM Cloud. Para acceder a un valor de variable del archivoterraform.tfvars, primero debe declarar la variable en el archivoprovider.tfy, a continuación, hacer referencia a la variable con la sintaxisvar.<variable_name>.Ejemplo de archivo
provider.tfterraform { required_providers { ibm = { source = "IBM-Cloud/ibm" version = ">= 1.28.0" } } } variable "ibmcloud_api_key" {} variable "region" {} provider "ibm" { ibmcloud_api_key = var.ibmcloud_api_key region = var.region }
Aprovisionar una instancia Databases for PostgreSQL
Cree un archivo de configuración de Terraform denominado postgres.tf.
Ejemplo de archivo postgres.tf
```terraform {: codeblock}
resource "ibm_resource_group" "resource_group" {
name = "tutorialRG"
}
resource "ibm_database" "postgresql_db" {
resource_group_id = ibm_resource_group.resource_group.id
name = "terraform_postgres"
service = "databases-for-postgresql"
plan = "standard"
location = "us-east"
service_endpoints = "public"
adminpassword = "password123456789"
group {
group_id = "member"
host_flavor {
id = "multitenant"
}
cpu {
allocation_count = 2
}
memory {
allocation_mb = 4096
}
disk {
allocation_mb = 5120
}
}
}
data "ibm_database_connection" "icd_conn" {
deployment_id = ibm_database.postgresql_db.id
user_type = "database"
user_id = "admin"
endpoint_type = "public"
}
output "Postgresql" {
value = data.ibm_database_connection.icd_conn
}
```
- resource_group_id- El valor del Grupo de Recursos que declara.
- Nombre: el nombre de servicio puede ser cualquier serie y es el nombre que se utiliza en la web y en la CLI para identificar el nuevo despliegue.
- Servicio: para Databases for PostgreSQL, el ID de servicio es
databases-for-postgresql. Elija el ID de servicio correcto para su despliegue. - Plan: esta guía de aprendizaje utiliza un plan estándar. Para obtener más información, consulte IBM Cloud® Precios.
- Ubicación: elija una región adecuada para la instancia de despliegue.
- punto_de_servicio- The service endpoints of your deployment.
publicis used in the tutorial, however it is recommended that onlyprivateendpoints are used in production. - adminpassword- El servicio Databases for PostgreSQL está provisto de un usuario administrador, por lo que puede gestionar PostgreSQL utilizando su herramienta comando,
psql. Para obtener más información, consulte Establecimiento de la contraseña de administrador. - grupo- Los grupos de escalado representan los distintos recursos que se asignan a un despliegue. Para ver un ejemplo de configuración e implantación de una base de datos que utiliza atributos
group, consulte Ejemplo de instancia de base de datos utilizando atributos de grupo. - valores de grupo: los valores de memoria, disco y CPU se basan en los requisitos mínimos para el aprovisionamiento de una instancia informática compartida de Databases for PostgreSQL.
- output- Cuando el proceso de terraformación finalice, la información de conexión de la nueva base de datos se mostrará en el terminal.
Alternativamente, puede utilizar Terraform IBM Modules(TIM)para Databases for PostgreSQL, que es el enfoque recomendado para entornos de producción. A diferencia del recurso bruto, este módulo proporciona las siguientes capacidades:
- Documentación completa con archivos README y ejemplos
- Múltiples escenarios de implantación con distintos ejemplos
- Control de versiones para actualizaciones seguras y una gestión de dependencias más sencilla
- Configuraciones preparadas para la empresa, seguras, escalables y conformes con la normativa
Para crear un archivo de configuración de Terraform llamado postgres.tf:
Ejemplo de archivo postgres.tf
resource "ibm_resource_group" "resource_group" {
name = "Default"
}
module "postgresql_db" {
source = "terraform-ibm-modules/icd-postgresql/ibm"
version = "latest" # Replace "latest" with a release version to lock into a specific release
resource_group_id = ibm_resource_group.resource_group.id
name = "my-instance"
region = "us-south"
}
Probar la configuración
Ahora que ha configurado el plug-in IBM Cloud® Provider para el recurso, puede utilizar Terraform en IBM Cloud® para inicializar, ejecutar, planificar y aplicar mandatos para suministrar el recurso. Necesita los mandatos siguientes:
| Descripción del mandato | Mandato |
|---|---|
terraform init |
El mandato terraform init se utiliza para inicializar un directorio de trabajo que contiene los archivos de configuración de Terraform. |
terraform fmt |
El mandato terraform fmt se utiliza para reescribir los archivos de configuración de Terraform en un formato y estilo canónicos. |
terraform validate |
El mandato terraform validate valida los archivos de configuración en un directorio |
terraform apply |
El mandato terraform apply ejecuta las acciones que se proponen en un plan de Terraform. |
Para obtener más información, consulte Suministro de recursos de IBM Cloud®.
Para ver plantillas de ejemplo de Terraform con los archivos de configuración de Terraform completos para realizar pruebas, consulte Plantillas de ejemplo.
Para obtener una visión general de los recursos de Terraform y de los orígenes de datos que puede utilizar, consulte el Índice de Terraform de recursos y orígenes de datos de IBM Cloud®.