Provisionare un'istanza Databases for PostgreSQL con Terraform
In questa esercitazione si impara a usare Terraform per il provisioning di un'istanza Databases for PostgreSQL.
Panoramica degli strumenti disponibili
Prima di iniziare il processo di provisioning di un database con Terraform, è necessario disporre di un account IBM Cloud.
In questa esercitazione si effettua il provisioning del database utilizzando Terraform, che consente di creare, modificare e migliorare l'infrastruttura in modo sicuro e prevedibile. È uno strumento open source che codifica le API in file di configurazione dichiarativi che possono essere condivisi tra i membri del team e che vengono trattati come codice, modificati, rivisti e sottoposti a versioni. Si tratta di IaC (infrastructure-as-code). Voi scrivete come dovrebbe essere la vostra infrastruttura e Terraform creerà, aggiornerà e rimuoverà le risorse cloud secondo le necessità. Per ulteriori informazioni, vedere Comprendere le basi di Terraform.
Per supportare un approccio multi-cloud, Terraform lavora con i provider. Un provider è responsabile della comprensione delle interazioni API e dell'esposizione delle risorse. IBM Cloud® ha il suo provider per Terraform, che consente agli utenti di IBM Cloud® di gestire le risorse con Terraform. Anche se Terraform è categorizzato come IaC (infrastructure-as-code), non è limitato alle risorse IaaS (Infrastructure-As-A-Service). Per ulteriori informazioni, vedere ibm_database.
Installare Terraform
- Seguire i passi di Installare Terraform per installare Terraform.
Configurare il plug-in IBM Cloud® Plugin del fornitore
-
Creare o recuperare una chiave API IBM Cloud® Chiave API. La chiave API viene utilizzata per autenticarsi con la piattaforma IBM Cloud® e per determinare le autorizzazioni per i servizi IBM Cloud®.
-
Creare un Terraform su IBM Cloud Cartella del progetto Database. La cartella contiene tutti i file di configurazione creati nel corso di questa esercitazione. In questa esercitazione la directory è denominata
tf-postgres
, ma è possibile utilizzare qualsiasi nome per la directory.mkdir tf-postgres && cd tf-postgres
-
Nella cartella del progetto, creare un file di definizione delle variabili chiamato
terraform.tfvars
e specificare la chiave API IBM Cloud La chiave API recuperata. Inoltre, si specifica la regione in cui si desidera creare le risorse IBM Cloud. Se non viene specificata alcuna regione, il plug-in IBM Cloud® crea automaticamente le risorse nella regione USA-SUD Crea automaticamente le risorse nella regione us-south. Le variabili definite nel fileterraform.tfvars
vengono caricate automaticamente da Terraform quando viene inizializzato il plug-in IBM Cloud E si può fare riferimento ad esse in ogni file di configurazione di Terraform che si utilizza.Poiché il file delle definizioni delle variabili contiene informazioni riservate, non inviatelo a un sistema di controllo della versione. Questo file deve essere presente solo sul sistema locale.
Esempio di file
terraform.tfvars
ibmcloud_api_key = "<IBMCLOUD_API_KEY>" region = "us-east"
La regione
us-east
è fornita come esempio, non come requisito. Utilizzare la regione più adatta alla distribuzione dell'istanza. -
Creare un file di configurazione del provider chiamato
provider.tf
. Utilizzare questo file per configurare il plug-in IBM Cloud Con la chiave API IBM Cloud del proprio file Dal fileterraform.tfvars
. Il plug-in utilizza questa chiave per accedere a IBM Cloud e per lavorare con il servizio IBM Cloud. Per accedere al valore di una variabile dal fileterraform.tfvars
, è necessario prima dichiarare la variabile nel fileprovider.tf
e poi fare riferimento alla variabile utilizzando la sintassivar.<variable_name>
.Esempio di file
provider.tf
terraform { 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 }
Esegui il provisioning di un'istanza Databases for PostgreSQL
Creare un file di configurazione di Terraform chiamato postgres.tf
.
Esempio di file 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- Il valore del gruppo di risorse dichiarato.
- nome- Il nome del servizio può essere una stringa qualsiasi ed è il nome utilizzato sul web e nella CLI per identificare la nuova installazione.
- service- Per Databases for PostgreSQL, l'ID del servizio è
databases-for-postgresql
. Scegliere l'ID servizio corretto per l'installazione. - piano- Questa esercitazione utilizza un piano Standard. Per ulteriori informazioni, vedere IBM Cloud® Prezzi.
- località- Scegliere una regione adatta per l'istanza di distribuzione.
- punto finale del servizio- The service endpoints of your deployment.
public
is used in the tutorial, however it is recommended that onlyprivate
endpoints are used in production. - adminpassword- Il servizio Databases for PostgreSQL è dotato di un utente admin, in modo da poter gestire PostgreSQL utilizzando il suo strumento a riga di comando,
psql
. Per ulteriori informazioni, vedere Impostazione della password amministratore. - gruppo- I gruppi di ridimensionamento rappresentano le varie risorse assegnate a un'installazione client. Per vedere un esempio di configurazione e distribuzione di un database che utilizza gli attributi
group
, vedere Esempio di istanza di database utilizzando gli attributi di gruppo. - valori del gruppo- I valori di memoria, disco e CPU sono tutti basati sui requisiti minimi per il provisioning di un'istanza di calcolo condivisa Databases for PostgreSQL.
- output- Quando il processo di terraformazione è terminato, le informazioni di connessione al nuovo database vengono visualizzate nel terminale.
Test della configurazione
Ora che è stato configurato il plug-in IBM Cloud® Provider per la risorsa, si può usare Terraform su IBM Cloud® per inizializzare, eseguire, pianificare e applicare i comandi per il provisioning della risorsa. Sono necessari i seguenti comandi:
Descrizione del comando | Comando |
---|---|
terraform init |
Il comando terraform init è usato per inizializzare una directory di lavoro contenente i file di configurazione di Terraform. |
terraform fmt |
Il comando terraform fmt è usato per riscrivere i file di configurazione di Terraform in un formato e stile canonico. |
terraform validate |
Il comando terraform validate convalida i file di configurazione presenti in una directory |
terraform apply |
Il comando terraform apply esegue le azioni proposte in un piano Terraform. |
Per ulteriori informazioni, vedere Provisioning delle risorse IBM Cloud®.
Per visualizzare i modelli Terraform di esempio con i file di configurazione Terraform completi da testare, fare riferimento a Modelli di esempio.
Per una panoramica delle risorse e delle fonti di dati Terraform che si possono usare, vedere l'Indice delle risorse e delle fonti di dati Terraform su IBM Cloud®.