Mettez à disposition une instance Databases for PostgreSQL avec Terraform
Dans ce tutoriel, vous apprenez à utiliser Terraform pour mettre à disposition une instance Databases for PostgreSQL.
Présentation des outils disponibles
Avant de commencer le processus de mise à disposition d'une base de données avec Terraform, vous devez disposer d'un compte IBM Cloud.
Dans ce tutoriel, vous allez mettre à disposition votre base de données avec Terraform, qui vous permet de créer, de modifier et d'améliorer les infrastructures de manière sûre et prévisible. Il s'agit d'un outil open source qui codifie les API dans des fichiers de configuration déclaratifs pouvant être partagés entre les membres de l'équipe, et qui sont traités comme du code, modifiés, révisés et versionnés. Il s'agit d'une infrastructure en tant que code. Rédigez l'infrastructure que vous souhaitez obtenir et Terraform crée, met à jour et supprime les ressources cloud selon vos indications. Pour plus d'informations, voir Comprendre les bases de Terraform
Pour prendre en charge une approche multicloud, Terraform travaille avec des fournisseurs. Un fournisseur est responsable de la compréhension des interactions des API et de l'exposition des ressources. IBM Cloud® possède son fournisseur pour Terraform, ce qui permet aux utilisateurs de IBM Cloud® de gérer les ressources avec Terraform. Bien que Terraform soit classé comme infrastructure en tant que code, il ne se limite pas aux ressources d'infrastructure en tant que service (IaaS). Pour plus d'informations, voir ibm_database.
Installer Terraform
- Suivez les étapes de la section Installer Terraform pour installer Terraform.
Configurer le plug-in IBM Cloud® Provider
-
Créez ou extrayez une clé d'API IBM Cloud®. La clé de l'API est utilisée pour l'authentification auprès de la plateforme IBM Cloud® et pour déterminer vos droits pour les services IBM Cloud®.
-
Créez un répertoire de projet Terraform sur IBM Cloud Databases. Le répertoire contient tous les fichiers de configuration que vous créez dans le cadre de ce tutoriel. Le répertoire de ce tutoriel porte le nom
tf-postgres, mais vous pouvez utiliser n'importe quel nom pour le répertoire.mkdir tf-postgres && cd tf-postgres -
Dans votre répertoire de projet, créez un fichier de définition de variable nommé
terraform.tfvarset spécifiez la clé d'API IBM Cloud que vous avez extraite. En outre, vous spécifiez la région dans laquelle vous souhaitez que vos ressources IBM Cloud soient créées. Si aucune région n'est spécifiée, le plug-in IBM Cloud® Provider crée automatiquement vos ressources dans la région us-south. Les variables définies dans le fichierterraform.tfvarssont automatiquement chargées par Terraform lorsque le plug-in IBM Cloud Provider est initialisé et que vous pouvez les référencer dans chaque fichier de configuration Terraform que vous utilisez.Étant donné que le fichier de définitions de variable contient des informations confidentielles, n'insérez pas ce fichier dans un système de contrôle de version. Ce fichier est censé résider uniquement sur votre système local.
Exemple de fichier
terraform.tfvarsibmcloud_api_key = "<IBMCLOUD_API_KEY>" region = "us-east"La région
us-eastest fournie à titre d'exemple et ne constitue pas une obligation. Utilisez la région qui fonctionne le mieux pour le déploiement de votre instance. -
Créez un fichier de configuration de fournisseur nommé
provider.tf. Utilisez ce fichier pour configurer le plug-in IBM Cloud Provider avec la clé de l'API IBM Cloud à partir de votre fichierterraform.tfvars. Le plug-in utilise cette clé pour accéder à IBM Cloud et pour utiliser votre service IBM Cloud. Pour accéder à une valeur de variable à partir du fichierterraform.tfvars, vous devez d'abord déclarer la variable dans le fichierprovider.tf, puis référencer la variable à l'aide de la syntaxevar.<variable_name>.Exemple de fichier
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 }
Provisionner une instance Databases for PostgreSQL
Créez un fichier de configuration Terraform nommé postgres.tf.
Exemple de fichier 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- La valeur du groupe de ressources que vous déclarez.
- Nom - Le nom de service peut être n'importe quelle chaîne et est le nom utilisé sur le Web et dans l'interface de ligne de commande pour identifier le nouveau déploiement.
- Service - Pour Databases for PostgreSQL, l'ID de service est
databases-for-postgresql. Choisissez l'ID de service approprié pour votre déploiement. - Plan - Ce tutoriel utilise un plan Standard. Pour plus d'informations, voir Tarification de IBM Cloud®.
- Emplacement - Choisissez une région appropriée pour votre instance de déploiement.
- service_endpoint- The service endpoints of your deployment.
publicis used in the tutorial, however it is recommended that onlyprivateendpoints are used in production. - adminpassword- Le service Databases for PostgreSQL est fourni avec un utilisateur admin, de sorte que vous pouvez gérer PostgreSQL en utilisant son outil de ligne de commande,
psql. Pour plus d'informations, voir Définition du mot de passe d'administrateur. - groupe- Les groupes d'échelle représentent les différentes ressources allouées à un déploiement. Pour voir un exemple de configuration et de déploiement d'une base de données utilisant les attributs
group, voir Exemple d'instance de base de données utilisant des attributs de groupe. - valeurs de groupe- Les valeurs de mémoire, de disque et de CPU sont toutes basées sur les exigences minimales pour le provisionnement d'une instance de calcul partagée Databases for PostgreSQL.
- sortie- Lorsque le processus de terraformation est terminé, les informations de connexion à la nouvelle base de données s'affichent dans le terminal.
Vous pouvez également utiliser Terraform IBM Modules(TIM)pour Databases for PostgreSQL, ce qui est l'approche recommandée pour les environnements de production. Contrairement à la ressource brute, ce module offre les possibilités suivantes :
- Documentation complète avec fichiers README et exemples
- Scénarios de déploiement multiples à l'aide de différents exemples
- Version contrôlée pour des mises à jour sûres et une gestion plus facile des dépendances
- Configurations prêtes pour l'entreprise, sécurisées, évolutives et conformes
Pour créer un fichier de configuration Terraform nommé postgres.tf:
Exemple de fichier 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"
}
Tester votre configuration
Maintenant que vous avez configuré le plug-in IBM Cloud® Provider pour votre ressource, vous pouvez utiliser Terraform sur IBM Cloud® pour initialiser, exécuter, planifier et appliquer des commandes pour la mise à disposition de la ressource. Vous avez besoin des commandes suivantes :
| Description de la commande | Commande |
|---|---|
terraform init |
La commande terraform init permet d'initialiser un répertoire de travail contenant les fichiers de configuration Terraform. |
terraform fmt |
La commande terraform fmt permet de réécrire les fichiers de configuration Terraform dans un format et un style canoniques. |
terraform validate |
La commande terraform validate valide les fichiers de configuration dans un répertoire |
terraform apply |
La commande terraform apply exécute les actions proposées dans un plan Terraform. |
Pour plus d'informations, voir Mise à disposition des ressources IBM Cloud®.
Pour afficher des exemples de modèles Terraform avec les fichiers de configuration Terraform complets à tester, voir Modèles d'exemple.
Pour une présentation des ressources Terraform et des sources de données que vous pouvez utiliser, voir l'Index de Terraform sur les ressources IBM Cloud® et les sources de données.