Remarque :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction à Oracle Cloud Infrastructure Free Tier.
- Il utilise des exemples de valeur pour les informations d'identification Oracle Cloud Infrastructure, la location et les compartiments. A la fin de votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Activation de Database Management pour les bases de données Oracle Cloud à l'aide de Terraform
Introduction
Oracle Cloud Infrastructure (OCI) Database Management est un outil de diagnostic des performances utile qui peut vous aider à surveiller et à gérer votre base de données Oracle. Lorsque vous créez une base de données Oracle Cloud dans un système de base de données, l'option Gestion de base de données n'est pas activée par défaut car elle est basée sur des ressources et des actions supplémentaires, indépendamment du processus de création de base de données.
Ce tutoriel décrit un exemple sur la création de code Terraform pour activer ou désactiver Database Management au niveau du code, dans le cadre d'une automatisation Terraform.
L'option Gestion de base de données pour les bases de données Oracle Cloud est disponible sur la page Informations sur la base de données, sous Services associés. Vous pouvez également l'activer à partir de l'interface utilisateur. Il existe plusieurs étapes et prérequis pour que ce processus réussisse et dispose de toutes les informations nécessaires. Pour plus d'informations sur les étapes à suivre pour activer la gestion de base de données à l'aide de l'interface utilisateur, reportez-vous aux liens de la section Related Links à la fin de ce tutoriel.
Objectifs
En supposant que vous disposez d'un code qui crée une base de données Oracle Cloud, une instance unique ou RAC, dans un sous-réseau privé, à ce stade, la gestion de base de données n'est pas activée pour la base de données et aucun paramètre exposé ne peut le faire directement. Vous devez créer des ressources supplémentaires, accorder des privilèges au niveau OCI et de la base de données, et obtenir des informations à partir de la base de données existante à utiliser dans l'activation de Database Management. Tout cela doit être fait comme un ajout au même code qui crée la base de données, sans valeurs codées en dur. Les étapes suivantes doivent être effectuées :
- Définissez le mot de passe utilisateur et les privilèges DBSNMP dans la base de données.
- Enregistrer le mot de passe de l'utilisateur de surveillance en tant que clé secrète dans OCI Vault
- Affecter des droits d'accès IAM au service Database Management
- Affecter des droits d'accès IAM à l'utilisateur OCI
- Création d'une adresse privée dans votre VCN
- Autoriser le trafic réseau entre l'adresse privée et vos bases de données cloud
- Activer Database Management pour votre base de données cloud
Prérequis
- Connaissance de Terraform et d'Oracle Database.
- Privilèges utilisateur permettant de créer des stratégies, un coffre-fort, une base de données Oracle Cloud. Si l'utilisateur ne dispose pas de ces privilèges, un administrateur de location peut exécuter ces actions.
- Terraform installé sur l'ordinateur.
Tâche 1 : obtention de l'adresse IP privée du noeud de base de données (ou de l'un des noeuds RAC)
Aucun attribut ne présente l'adresse IP privée des noeuds de base de données. Vous devez donc la trouver indirectement. L'une des méthodes consiste à suivre les 2 étapes suivantes :
-
Utilisez la source de données Terraform oci_database_db_nodes qui affichera l'attribut vnic_id.
-
Utilisez cet OCID de carte d'interface réseau virtuelle avec la source de données oci_core_private_ips qui renverra plusieurs adresses IP privées. Vous devez isoler l'attribut is_primary = true, c'est-à-dire l'adresse IP privée principale de la VNIC. Par exemple, créez une variable locale comme suit :
locals { node_ip = join(",",[for idx in data.oci_core_private_ips.this.private_ips: idx.ip_address if idx.is_primary == true]) }
Tâche 2 : connexion à l'adresse IP privée pour exécuter les scripts liés à DBSNMP
-
Pour vous connecter à la base de données à l'aide de son adresse IP privée sur SSH, sans client, vous devez utiliser un bastion. La connexion sera en tant qu'utilisateur opc. Vous pouvez utiliser une ressource NULL pour définir une connexion via le bastion avec SSH. En définissant bastion_host dans le bloc de connexion, le provisionneur se connecte d'abord à bastion_host, puis se connecte à partir de ce dernier à l'hôte (noeud de base de données).
-
Ensuite, utilisez le programme de provisionnement remote-exec pour exécuter un script qui fait passer l'utilisateur opc à oracle et se connecte à sqlplus en tant que sysdba. Le script shell peut ensuite appeler un script secondaire SQL pour exécuter les instructions d'octroi nécessaires, déverrouiller le compte DBSNMP et modifier son mot de passe. Vous trouverez des exemples de scripts shell et SQL dans files.zip.
-
Voici un exemple de ce que le code peut rechercher pour cette étape :
resource "null_resource" "set_dbsnmp_pw_and_privs" { # connect to RAC node using the bastion connection { bastion_host = var.bastion_public_ip type = "ssh" user = "opc" host = local.node_ip private_key = file(var.ssh_private_key) agent = "false" timeout = "5m" } # copy sql scrip to RAC node provisioner "file" { source = "${path.root}/userdata/dbsnmp.sql" destination = "/tmp/dbsnmp.sql" } # copy shell scrip to RAC node provisioner "file" { source = "${path.root}/userdata/dbsnmp.sql" destination = "/tmp/dbsnmp.sh" } # run sqlplus script as oracle OS user from shell script provisioner "remote-exec" { inline = [ "chmod 777 /tmp/dbsnmp.sql", "chmod 777 /tmp/dbsnmp.sh", "sudo su -c '/tmp/dbsnmp.sh' oracle" ] } }
Tâche 3 : création d'un coffre, d'une clé maître et d'une clé secrète pour le mot de passe DBSNMP
-
Utilisez la ressource Terraform oci_kms_vault pour créer un coffre.
-
Utilisez la ressource Terraform oci_kms_key pour créer une clé de cryptage maître dans ce coffre.
-
Utilisez la ressource Terraform oci_vault_secret pour créer une clé secrète pour le mot de passe DBSNMP défini avec le script ci-dessus.
Tâche 4 : création d'une stratégie pour le service Database Management et l'utilisateur OCI
Créez des stratégies à l'aide de la ressource oci_identity_policy :
-
Créez une stratégie et incluez ces instructions pour accorder des droits d'accès IAM au service Database Management.
statements = [ "Allow service dpd to manage objects in compartment <compartment>", "Allow service dpd to read secret-family in compartment <compartment>" ] -
Créez une stratégie pour l'utilisateur OCI ou incluez ces instructions dans une stratégie existante.
statements = [ "Allow group <user_group> to manage dbmgmt-family in compartment <compartment>" "Allow group <user_group> to read database-family in compartment <compartment>" "Allow group <user_group> to manage vnics in compartment <compartment>" "Allow group <user_group> to use subnets in compartment <compartment>" "Allow group <user_group> to use network-security-groups in compartment <compartment>" "Allow group <user_group> to use security-lists in compartment <compartment>" "Allow group <user_group> to manage secret-family in compartment <compartment>" "Allow group <user_group> to read buckets in compartment <compartment>" ]
Tâche 5 : création d'une adresse privée dans votre VCN
-
Pour créer une adresse privée Database Management, utilisez la ressource Terraform oci_database_management_db_management_private_endpoint.
Remarque : si vous le créez dans le même sous-réseau privé que celui de la base de données Oracle Cloud, il n'est pas nécessaire de configurer davantage le réseau. Vous pouvez donc ignorer la tâche 7.
Tâche 6 : configuration du réseau pour autoriser le trafic entre l'adresse privée et la base de données cloud
- Si l'adresse privée est créée dans un sous-réseau différent de celui de la base de données, ajoutez des règles à un groupe de sécurité réseau existant à l'aide de oci_core_network_security_group_security_rule.
Tâche 7 : activation de Database Management sur la base de données cloud
Pour activer la gestion de base de données, vous devez utiliser la ressource Terraform oci_database_cloud_database_management. Il doit être renseigné avec certaines des informations créées aux étapes précédentes.
-
L'adresse privée doit être obtenue à partir de la ressource créée dans la tâche 5.
-
Il n'existe aucune source de données permettant d'obtenir directement le nom de service en tant qu'attribut. Le format du nom de service est Database Unique Name.Host Domain Name. Etant donné que le format du nom unique de la base de données est Chaîne générée automatiquement par la clé de la base de données Name_Region, vous devez obtenir le service de manière indirecte.
-
Tout d'abord, créez une source de données oci_database_databases. Cette source de données renvoie l'attribut connection_strings qui répertorie toutes les chaînes de connexion.
-
Appliquez différentes fonctions Terraform sur ce résultat pour finalement isoler le nom de service en tant que chaîne.
-
Une fois ces étapes exécutées dans le code et la gestion de base de données activée pour la base de données Oracle Cloud correspondante, le bouton Hub de performances est disponible dans la console OCI et les mesures sont renseignées dans la page Mesures.
-
L'utilisation du même code Terraform avec l'option de destruction permet de désactiver l'option de gestion de base de données.
Liens connexes
Accusés de réception
Auteur - Adina Nicolescu (ingénieur cloud senior)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenu de formation gratuit sur le canal Oracle Learning YouTube. En outre, accédez à education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour consulter la documentation produit, consultez Oracle Help Center.
Enable Database Management for Oracle Cloud databases using Terraform
F79854-01
March 2023
Copyright © 2023, Oracle and/or its affiliates.