Databases for PostgreSQL -Instanz mit Terraform bereitstellen

In diesem Lernprogramm erfahren Sie, wie Sie mit Terraform eine Databases for PostgreSQL -Instanz bereitstellen.

Übersicht über die verfügbaren Tools

Bevor Sie mit der Bereitstellung einer Datenbank mit Terraform beginnen, Sie benötigen ein IBM Cloud -Konto.

In diesem Lernprogramm stellen Sie Ihre Datenbank mithilfe von Terraform bereit, wodurch Sie die Infrastruktur sicher und vorhersehbar erstellen, ändern und verbessern können. Es ist ein Open-Source-Tool, das APIs in deklarative Konfigurationsdateien codiert, die von Teammitgliedern gemeinsam genutzt werden können, die als Code behandelt, bearbeitet, geprüft und versioniert werden. Das Tool beschreibt Infrastruktur in Form von Code. Sie notieren, wie Ihre Infrastruktur aussehen sollte, und Terraform erstellt, aktualisiert und entfernt Cloudressourcen nach Bedarf. Weitere Informationen finden Sie unter Verstehen Sie die Grundlagen von Terraform.

Zur Unterstützung eines Multi-Cloud-Konzepts arbeitet Terraform mit Providern. Ein Provider ist für das Verständnis von API-Interaktionen und die Bereitstellung von Ressourcen verantwortlich. IBM Cloud® verfügt über einen Provider für Terraform, mit dem Benutzer von IBM Cloud® Ressourcen mit Terraform verwalten können. Obwohl Terraform der Kategorie 'Infrastruktur als Code' angehört, kann das Tool nicht nur für IaaS-Ressourcen (Infrastructure-As-A-Service) verwendet werden. Weitere Informationen finden Sie unter ibm_datenbank.

Terraform installieren

  1. Folgen Sie den Schritten unter Terraform installieren, um Terraform zu installieren.

Konfigurieren Sie das Plug-in IBM Cloud® Provider

  1. Erstellen oder rufen Sie einen IBM Cloud® -API-Schlüssel ab. Der API-Schlüssel wird zur Authentifizierung bei der IBM Cloud® -Plattform und zur Bestimmung Ihrer Berechtigungen für IBM Cloud® -Services verwendet.

  2. Erstellen Sie ein Terraform-Projektverzeichnis für IBM Cloud -Datenbanken. Das Verzeichnis enthält alle Konfigurationsdateien, die Sie im Rahmen dieses Lernprogramms erstellen. Das Verzeichnis in diesem Lernprogramm heißt tf-postgres, aber Sie können einen beliebigen Namen für das Verzeichnis verwenden.

    mkdir tf-postgres && cd tf-postgres
    
  3. Erstellen Sie in Ihrem Projektverzeichnis eine Variablendefinitionsdatei namens terraform.tfvars und geben Sie den IBM Cloud -API-Schlüssel an, den Sie abgerufen haben. Zusätzlich geben Sie die Region an, in der Ihre IBM Cloud -Ressourcen erstellt werden sollen. Wenn keine Region angegeben ist, erstellt das IBM Cloud® Provider-Plug-in automatisch Ihre Ressourcen in der Region 'Vereinigte Staaten (Süden)'. Variablen, die in der Datei terraform.tfvars definiert sind, werden von Terraform automatisch geladen, wenn das IBM Cloud Provider-Plug-in initialisiert wird. Sie können in jeder von Ihnen verwendeten Terraform-Konfigurationsdatei auf sie verweisen.

    Da die Variablendefinitionsdatei vertrauliche Informationen enthält, sollten Sie diese Datei nicht mit einer Push-Operation an ein Versionssteuerungssystem übertragen. Diese Datei ist nur auf Ihrem lokalen System vorgesehen.

    **Beispiel für terraform.tfvars Datei **

      ibmcloud_api_key = "<IBMCLOUD_API_KEY>"
      region = "us-east"
    

    Die us-east -Region wird als Beispiel bereitgestellt, nicht als Anforderung. Verwenden Sie die Region, die für Ihre Instanzbereitstellung am besten geeignet ist.

  4. Erstellen Sie eine Providerkonfigurationsdatei mit dem Namen provider.tf. Verwenden Sie diese Datei, um das IBM Cloud -Provider-Plug-in mit dem API-Schlüssel IBM Cloud aus Ihrer Datei terraform.tfvars zu konfigurieren. Das Plug-in verwendet diesen Schlüssel, um auf IBM Cloud zuzugreifen und mit Ihrem IBM Cloud -Service zu arbeiten. Um über die Datei terraform.tfvars auf einen Variablenwert zuzugreifen, müssen Sie die Variable zuerst in der Datei provider.tf deklarieren und anschließend mithilfe der Syntax var.<variable_name> auf die Variable verweisen.

    Beispieldatei 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
    }
    

Bereitstellung einer Databases for PostgreSQL

Erstellen Sie eine Terraform-Konfigurationsdatei mit dem Namen postgres.tf.

**Beispiel für postgres.tf Datei **

```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- Der von Ihnen angegebene Wert der Ressourcengruppe.
  • Name -Der Servicename kann eine beliebige Zeichenfolge sein und ist der Name, der im Web und in der Befehlszeilenschnittstelle zur Identifizierung der neuen Bereitstellung verwendet wird.
  • Service -Für Databases for PostgreSQL lautet die Service-ID databases-for-postgresql. Wählen Sie die richtige Service-ID für Ihre Implementierung aus.
  • Plan -In diesem Lernprogramm wird ein Standardplan verwendet. Für weitere Informationen siehe IBM Cloud® Preisgestaltung.
  • Standort -Wählen Sie eine geeignete Region für Ihre Bereitstellungsinstanz aus.
  • dienst_endpunkt- 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- Der Dienst Databases for PostgreSQL wird mit einem Admin-Benutzer bereitgestellt, so dass Sie PostgreSQL über das Befehlszeilentool psql verwalten können. Weitere Informationen finden Sie unter Administratorkennwort festlegen.
  • gruppe- Skalierungsgruppen stellen die verschiedenen Ressourcen dar, die einer Bereitstellung zugewiesen werden. Ein Beispiel für die Konfiguration und Bereitstellung einer Datenbank, die group Attribute verwendet, finden Sie unter Beispieldatenbankinstanz unter Verwendung von Gruppenattributen.
  • gruppenwerte- Die Werte für Arbeitsspeicher, Festplatte und CPU basieren alle auf den Mindestanforderungen für die Bereitstellung einer gemeinsam genutzten Recheninstanz Databases for PostgreSQL.
  • output- Wenn der Terraform-Prozess beendet ist, werden die Verbindungsinformationen für die neue Datenbank im Terminal angezeigt.

Alternativ können Sie Terraform IBM Modules(TIM)für Databases for PostgreSQL verwenden, was die empfohlene Vorgehensweise für Produktionsumgebungen ist. Im Gegensatz zur Rohressource bietet dieses Modul die folgenden Möglichkeiten:

  • Umfassende Dokumentation mit README-Dateien und Beispielen
  • Mehrere Einsatzszenarien anhand verschiedener Beispiele
  • Kontrollierte Versionierung für sichere Updates und einfachere Verwaltung von Abhängigkeiten
  • Unternehmenstaugliche Konfigurationen, die sicher, skalierbar und konform sind

So erstellen Sie eine Terraform-Konfigurationsdatei mit dem Namen postgres.tf:

Beispiel einer postgres.tf Datei

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"
}

Konfiguration testen

Nachdem Sie das IBM Cloud® -Provider-Plug-in für Ihre Ressource konfiguriert haben, können Sie Terraform unter IBM Cloud® verwenden, um Befehle zum Bereitstellen der Ressource zu initialisieren, auszuführen, zu planen und anzuwenden. Sie benötigen die folgenden Befehle:

Befehle für die Terrarform-Bereitstellung
Befehlsbeschreibung Befehl
terraform init Mit dem Befehl terraform init wird ein Arbeitsverzeichnis initialisiert, das Terraform-Konfigurationsdateien enthält.
terraform fmt Der Befehl terraform fmt wird verwendet, um Terraform-Konfigurationsdateien in ein kanonisches Format und einen kanonischen Stil umzuschreiben.
terraform validate Der Befehl terraform validate validiert die Konfigurationsdateien in einem Verzeichnis.
terraform apply Der Befehl terraform apply führt die Aktionen aus, die in einem Terraform-Plan vorgeschlagen werden.

Weitere Informationen finden Sie unter IBM Cloud® -Ressourcen bereitstellen.

Informationen zum Anzeigen von Terraform-Beispielvorlagen mit den vollständigen zu testenden Terraform-Konfigurationsdateien finden Sie in Beispielvorlagen.

Eine Übersicht über die Terraform-Ressourcen und Datenquellen, die Sie verwenden können, finden Sie im Index von Terraform für IBM Cloud® -Ressourcen und -Datenquellen.