IBM Cloud Docs
Provisionare un'istanza Databases for PostgreSQL con Terraform

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

  1. Seguire i passi di Installare Terraform per installare Terraform.

Configurare il plug-in IBM Cloud® Plugin del fornitore

  1. 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®.

  2. 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
    
  3. 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 file terraform.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.

  4. 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 file terraform.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 file terraform.tfvars, è necessario prima dichiarare la variabile nel file provider.tf e poi fare riferimento alla variabile utilizzando la sintassi var.<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 only private 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:

Comandi di provisioning di Terrarform
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®.