Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Configurer des zones, des vues et des résolveurs DNS privés pour accélérer la certification professionnelle OCI Architect avec Terraform
Introduction
L'obtention de la certification Oracle Cloud Infrastructure (OCI) Architect Professional exige une compréhension approfondie d'Oracle Cloud et une expérience pratique. Cette série de tutoriels accélère votre parcours en utilisant Infrastructure as Code (IaC) avec Terraform et Ansible.
La figure 1 illustre l'architecture à déployer pour la certification OCI Architect Professional Laboratoire 2 : Oracle Cloud Infrastructure Architect Professional (Laboratoire Oracle University - 6h 14m).
Figure 1 : Adresses de passerelle d'appairage local pour créer un nom de domaine DNS privé
Avantages clés du DNS privé
Le DNS privé offre plusieurs avantages pour la gestion et la sécurisation de vos ressources OCI. Cela inclut mais sans s'y limiter :
- Organisation : utilisez les noms de domaine préférés pour une expérience intuitive et organisée.
- Sécurité : protégez les ressources sensibles en filtrant et en bloquant l'accès à des domaines spécifiques.
- Load Balancing : distribuez le trafic sur plusieurs serveurs, ce qui améliore les performances et la fiabilité.
- Environnement hybride et connectivité : facilite une communication transparente dans le cloud au sein et entre les réseaux cloud virtuels, ainsi qu'entre les réseaux sur site et les ressources OCI.
Nous expliquerons comment tirer parti du DNS privé d'OCI pour gérer des domaines personnalisés et connecter des ressources sur les réseaux. Vous apprendrez à créer des zones privées, à définir des enregistrements et à configurer des résolveurs pour une utilisation interne, ce qui vous donnera un contrôle granulaire sur l'accès aux ressources dans OCI.
Approche semi-automatisée en sept tâches
Le tutoriel vous guidera tout au long de l'automatisation d'un environnement évolutif et multi-VCN dans OCI avec une résolution DNS privée. A l'aide de la console OCI, de Terraform et d'Ansible, vous allez créer deux réseaux cloud virtuels, établir des passerelles d'appairage local (LPG) entre eux, lancer une instance de machine virtuelle, configurer des zones DNS privées personnalisées et tester en profondeur la résolution DNS avant et après la configuration du résolveur VCN. À la fin, vous aurez un environnement multi-VCN entièrement fonctionnel avec des fonctionnalités DNS privées sur vos réseaux.
Objectifs
Il s'agit du deuxième tutoriel de la série suivant le tutoriel 1 : Exercice 1 : Accélérer la certification professionnelle d'architecte Oracle Cloud Infrastructure avec Terraform pour accélérer votre préparation à la certification professionnelle d'architecte OCI (2024). Nous tirons parti des principes IaC avec Terraform et Ansible, en nous concentrant sur les concepts DNS de base relatifs à l'examen. Bien que les ateliers pratiques de certification Laboratoire 2 : Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) soient complets, l'atelier 2 peut prendre du temps et prendre plus de 30 minutes à s'effectuer manuellement. L'automatisation de tâches de routine telles que la création de réseaux cloud virtuels, de sous-réseaux publics et privés, de passerelles d'appairage local et de machines virtuelles réduit considérablement le temps d'exécution de plus de 80 %, comme l'illustre le tutoriel 1 : Accélération de la certification professionnelle Oracle Cloud Infrastructure Architect avec Terraform, vous permettant ainsi de vous concentrer sur la maîtrise des principaux concepts OCI DNS.
Prérequis
-
Bonne connaissance des principes IaC, de Terraform, d'Ansible et de l'interface de ligne de commande OCI d'Oracle Cloud Infrastructure.
-
Compréhension de l'utilisation des modules Terraform pour provisionner l'infrastructure OCI. Pour plus d'informations, reportez-vous à Réutilisation de la configuration avec des modules.
-
Utilisation d'OCI Cloud Shell, d'Oracle Resource Manager (ORM) ou de l'IDE (par exemple, Visual Studio).
-
Effectuez le dernier atelier : OCI Architect Professional Certification et découvrez comment créer des configurations Terraform VCN avec ORM.
Tâche 1 : création de deux réseaux cloud virtuels
Option manuelle :
Vous pouvez créer des réseaux cloud virtuels manuellement à l'aide de la console OCI. Pour indiquer cette création manuelle, les indicateurs is_vcn1_created
et is_vcn2_created
doivent être initialisés sur false
.
Pour créer des ressources réseau de base telles que VCN, passerelle Internet, table de routage, liste de sécurité, sous-réseaux publics et privés, reportez-vous à Démarrage rapide des fonctions de réseau virtuel.
Figure 2 : Vues de console pour collecter les OCID de VCN-01/VCN-02 et l'OCID de sous-réseau public VCN-01
Accédez à la console OCI, accédez à Fonctions de réseau, à Réseaux cloud virtuels et visualisez les détails de VCN-01, notez son OCID et celui de son sous-réseau public. Faites de même pour VCN-02, notez ses OCID et ajoutez les OCID collectés à votre fichier de configuration Terraform (input.auto.tfvars
ou variables.tf
).
# Create VCN-01 and VCN-02 with OCI VCN Wizard (set is_vcn1_created and is_vcn2_created to false)
is_vcn1_created = false
is_vcn2_created = false
# Update VCN-01 OCID and its Public Subnet OCID, as well as VCN-02 OCID
vcn1_id = "REPLACE_CREATED_VCN1_OCID_HERE"
public_subnet1_id = "REPLACE_CREATED_PUBLIC_SUBNET1_OCID_HERE"
vcn2_id = "REPLACE_CREATED_VCN2_OCID_HERE"
Option Automatisé :
Nous fournissons également deux options d'automatisation pour créer le VCN (VCN-01
et VCN-02
) : une approche Module racine et une approche Module enfant. La première est plus simple et convient pour le développement et les tests ou le déploiement unique de réseaux cloud virtuels. La seconde offre une meilleure organisation et une meilleure évolutivité pour les déploiements plus importants et complexes, ce qui favorise la réutilisation et la maintenance du code, ce qui le rend idéal pour les environnements de production.
Pour indiquer à Terraform de créer les réseaux cloud virtuels, vous devez d'abord définir les indicateurs is_vcn1_created
et is_vcn2_created
sur true
dans input.auto.tfvars
ou en tant que valeurs par défaut dans variables.tf
. Spécifiez ensuite le bloc CIDR de VCN (vcn?_cidr_block
), le bloc CIDR de sous-réseau public (public_subnet?_cidr_block
), le bloc CIDR de sous-réseau privé (private_subnet?_cidr_block
) et le préfixe de nom d'hôte (host_name?_prefix
). Les noms de variable sont abstraits en utilisant le point d'interrogation (?
) comme espace réservé. En remplaçant ?
par 1 ou 2, vous définissez des configurations distinctes pour VCN-01 et VCN-02, respectivement.
Vous devez également définir les valeurs pour des variables spécifiques : oci_regions
(mise en correspondance d'identificateurs de région avec des clés), network_deployment_option
(TF-ROOT-MODULE
ou TF-CHILD-MODULE
) et dipslay_name_prefix
(par exemple, AP-Lab-02-1
). Le nom d'affichage final du VCN inclut la valeur network_deployment_option
pour générer des noms complets (par exemple, PHX-AP-LAB02-1-TF-ROOT-MODULE-VCN-01
).
-
Approche 1 : Module racine Terraform
Pour cette approche, nous avons simplifié la configuration Terraform. Nous avons dupliqué le fichier
network.tf
du tutoriel 1 : Accélérer la certification professionnelle Oracle Cloud Infrastructure Architect avec Terraform dans un sous-répertoire nommélab02-demo-flat/
au sein du module racine. Ce répertoire utilise deux fichiers distincts,network1.tf
etnetwork2.tf
, pour automatiser la création de VCN-01 et VCN-02 afin de faciliter les tests et la compréhension.# Network Deployment Methods (Root Module) network_deployment_option = "TF-ROOT-MODULE" # For testing and PoC only # Turn flags on to instruct Terraform to create VCN-02 and VCN-02 is_vcn1_created = true is_vcn2_created = true # Networking parameters: CIDR Blocks and Host Name prefix vcn1_cidr_block = "10.0.0.0/16" vcn2_cidr_block = "172.0.0.0/16" public_subnet1_cidr_block = "10.0.0.0/24" public_subnet2_cidr_block = "172.0.0.0/24" private_subnet1_cidr_block = "10.0.1.0/24" private_subnet2_cidr_block = "172.0.1.0/24" host_name_prefix = "<RegionKey>apl2" # Same prefix VCN-01/02
-
Approche 2 : Module enfant Terraform
Vous pouvez également utiliser un module Terraform prédéfini à partir du répertoire
lab02-demo-module/
, qui convertit le fichiernetwork.tf
du module racine en un module enfant respectant les meilleures pratiques IaC. Vous pouvez également utiliser des modules Terraform prédéfinis à partir de référentiels publics tels que le fournisseur Oracle Cloud Infrastructure, OCI GitHub (terraform-provider-OCI) ou des modules Oracle internes tels que ceux disponibles dans les ateliers OCI Live.Définissez la valeur
network_deployment_option
pour refléter l'utilisation de l'approche Module enfant.network_deployment_option = "TF-CHILD-MODULE" # IaC Best Practice for Production.
# Module Call to Create VCN-01 module "vcn-01" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-01" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn1_cidr_block public_subnet_cidr_block = var.public_subnet1_cidr_block private_subnet_cidr_block = var.private_subnet1_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}1" } # Module Call to Create VCN-02 module "vcn-02" { source = "./modules/network" region = var.region compartment_id = var.compartment_id display_name_prefix = "${var.display_name_prefix}-${var.network_deployment_option}-VCN-02" network_deployment_type = var.network_deployment_option vcn_cidr_block = var.vcn2_cidr_block public_subnet_cidr_block = var.public_subnet2_cidr_block private_subnet_cidr_block = var.private_subnet2_cidr_block host_name_prefix = "${try(var.regions_keys_map[var.region], "OCI")}${var.host_name_prefix}2" }
Tâche 2 : créer deux passerelles d'appairage local
Option manuelle :
Pour créer manuellement des passerelles d'appairage local dans OCI, reportez-vous à Création d'une passerelle d'appairage local. Dans ce cas, définissez les indicateurs is_lpg1_created
et is_lpg2_created
sur false
dans votre fichier de configuration (input.auto.tfvars
ou variables.tf
).
Option Automatisé :
Pour automatiser la tâche à l'aide de Terraform, définissez ces indicateurs sur true
. Indique à Terraform de créer LPG-01 et LPG-02.
# Create 2 Local Peering Gateways (LPG-01 and LPG-02) then peer them.
is_lpg1_created = true
is_lpg2_created = true
Le fragment de code Terraform suivant crée à la fois LPG-01 et LPG-02, et établit une relation d'appairage entre eux, permettant ainsi une connectivité privée entre vos réseaux cloud virtuels.
# LPG-01 Creation
resource "oci_core_local_peering_gateway" "lpg-01" {
count = (var.is_vcn1_created && var.is_lpg1_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-01" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-01"
vcn_id = var.is_vcn1_created ? module.vcn-01.vcn_ocid : var.vcn1_id
}
# LPG-02 Creation
resource "oci_core_local_peering_gateway" "lpg-02" {
depends_on = [oci_core_local_peering_gateway.lpg_01]
count = (var.is_vcn2_created && var.is_lpg2_created) ? 1 : 0
# Required
compartment_id = var.compartment_id
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-LPG-02" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-LPG-02"
vcn_id = var.is_vcn2_created ? module.vcn-02.vcn_ocid : var.vcn2_id
# Peering lpg-02 with lpg-01
peer_id = oci_core_local_peering_gateway.lpg_01[count.index].id
}
Tâche 3 : lancement d'une instance de machine virtuelle
Option manuelle :
Pour lancer une instance de machine virtuelle manuellement via la console OCI, reportez-vous à Création d'une instance.
Option Automatisé :
Nous allons automatiser le provisionnement des machines virtuelles à l'aide d'une version simplifiée du code Terraform du tutoriel 1 : accélération de la certification professionnelle Oracle Cloud Infrastructure Architect avec Terraform. Pour indiquer à Terraform de créer une machine virtuelle VM-01, définissez l'indicateur is_instance_created
sur true
. Le nom d'affichage de la machine virtuelle inclut le paramètre network_deployment_option
(par exemple, PHX-AP-LAB02-1-TF-ROOT-MODULE-VM-01
ou PHX-AP-LAB02-1-TF-CHILD-MODULE-VM-01
) si le VCN est créé avec Terraform.
# Task 3: Launch a VM(VM-01) in the Public Subnet of VCN-01.
is_instance_created = true
Le code Terraform suivant automatise la création d'une VM-01 comme illustré à la figure 1 dans le sous-réseau public VCN-01.
resource "oci_core_instance" "this" {
count = (var.is_instance_created) ? 1 : 0
availability_domain = data.oci_identity_availability_domains.ads.availability_domains[0].name
compartment_id = var.compartment_id
create_vnic_details {
assign_private_dns_record = "true"
assign_public_ip = "true"
subnet_id = var.is_vcn1_created ? module.vcn-01.public_subnet_ocid : var.public_subnet1_id
}
display_name = var.is_vcn1_created ? "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-${var.network_deployment_option}-VM-0${count.index + 1}" : "${try(var.regions_keys_map[var.region], "OCI")}-${var.display_name_prefix}-VM-0${count.index + 1}"
instance_options {
are_legacy_imds_endpoints_disabled = "false"
}
metadata = {
"ssh_authorized_keys" = "${file(var.ssh_public_key)}"
}
shape = var.shape_name
shape_config {
memory_in_gbs = var.shape_memory_in_gbs
ocpus = var.shape_numberof_ocpus
}
source_details {
source_id = var.image_ids[var.region]
source_type = "image"
}
}
Tâche 4 : création de zones privées personnalisées pour VCN-01 et VCN-02
Les zones DNS privées d'OCI stockent les enregistrements DNS internes, accessibles uniquement dans un VCN. Pour comprendre les concepts relatifs au DNS, nous allons d'abord montrer comment créer manuellement deux zones privées personnalisées. La figure 3 illustre la création d'une zone DNS privée zone-a.local
dans VCN-01 (PHX-AP-LAB02-1-VCN-01
) et l'ajout d'un record
à cette zone.
Figure 3 : Créer une zone DNS privée et l'associer à VCN-01, puis ajouter un nouvel enregistrement à la zone
Option manuelle :
-
Créez et configurez une zone DNS privée pour VCN-01 (
zone-a.local
).-
Accédez à la console OCI, accédez à Fonctions de réseau, à Gestion DNS, à Zones et cliquez sur Zones privées.
-
Cliquez sur Créer une zone, entrez le nom de la zone (
zone-a.local
), sélectionnez Sélectionner une vue privée DNS existante,PHX-AP-LAB02-1-VCN-01
en tant que VCN associé et cliquez sur Créer. -
Une fois la zone créée, affichez les enregistrements NS et SOA générés automatiquement.
-
Cliquez sur Gérer les enregistrements et sélectionnez Ajouter un enregistrement.
-
Entrez les informations suivantes et cliquez sur Ajouter un enregistrement.
- Nom : entrez
server01
. - Type : sélectionnez
A - IPv4 Address
. - TTL : entrez
30 seconds
(déverrouillez le champ si nécessaire). - Adresse : entrez
10.0.0.2
.
- Nom : entrez
-
Cliquez sur Publier les modifications et sur Confirmer la publication des modifications.
Remarques : attendez la fin de l'opération (état passé de UPDATING à ACTIVE).
-
-
Créez et configurez une zone DNS privée pour VCN-02 (
zone-b.local
). Suivez les mêmes étapes que la figure 3 pour créer une zone privée pour VCN-02 (PHX-AP-LAB02-1-VCN-02
).-
Accédez à Zones, Zones privées, puis cliquez sur Créer une zone.
-
Saisissez Nom comme
zone-b.local
, sélectionnez Sélectionner une vue privée DNS existante,PHX-AP-LAB02-1-VCN-02
comme VCN associé et cliquez sur Créer. -
Cliquez sur Gérer les enregistrements et sélectionnez Ajouter un enregistrement.
-
Entrez les informations suivantes et cliquez sur Ajouter un enregistrement.
- Nom : entrez
server01
. - Type : sélectionnez
A - IPv4 Address
. - TTL : entrez
60 seconds
(déverrouillez le champ si nécessaire). - Adresse : entrez
172.16.0.123
.
- Nom : entrez
-
Cliquez sur Publier les modifications et sur Confirmer la publication des modifications.
Remarques : si vous ignorez une étape de création manuelle, cela entraîne des erreurs telles que :
zone not found: 3 (NXDOMAIN)
.
-
Option Automatisé :
Ce tutoriel fournit également une approche automatisée avancée utilisant Ansible. Ansible est un outil d'automatisation open source qui gère les configurations de votre infrastructure. Dans ce contexte, un playbook Ansible est un ensemble de tâches qui automatisent la création de zones DNS privées. Pour plus d'informations, reportez-vous aux mots-clés Playbook Ansible.
Définissez is_task4_automated
sur true
dans input.auto.tfvars
ou dans variabes.tf
pour déclencher une exécution Ansible playbook
dans playbooks.sh
, en automatisant en une seule exécution la création de zones DNS privées et en enregistrant l'ajout.
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
A l'aide du provisionneur local-exec
de Terraform, vous pouvez exécuter un livre de jeux Ansible pour créer automatiquement zone-a.local
dans les zones VCN-01 et zone-b.local
dans VCN-02 avec leur records
respectif. Pour plus d'informations, reportez-vous à Code source : oci-ansible-collection.
# Create 2 Custom Private Zones and Associated Records in OCI
resource "null_resource" "ansible-create-zones-playbook" {
count = (var.is_task4_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/playbooks.sh"
}
}
Tâche 5 : tester votre instance pour la zone A associée
Option manuelle :
Connectez-vous manuellement en SSH à l'instance de machine virtuelle pour vérifier si l'instance de machine virtuelle est associée à zone-a.local
.
-
Connectez-vous via SSH à l'instance avec l'adresse IP publique.
ssh -i <private_ssh_key> <public_ip_address>
-
Recherchez
server01.zone-a.local
dans les enregistrements DNS.host server01.zone-a.local
Sortie attendue :
server01.zone-a.local has address 10.0.0.2
-
Vérifiez l'entrée de zone générée par le système.
host -t NS zone-a.local
Sortie attendue :
zone-a.local has NS record vcn-dns.oraclevcn.com.
-
Vérifiez l'enregistrement d'autorité pour la zone.
host -t SOA zone-a.local
Sortie attendue :
zone-a.local has SOA record ven-dns.oraclevcn.com. hostmaster.oracle.com. 2 3600 3600 3600 10
-
Observez la différence de résolution DNS basée sur les vues VCN associées.
host server01.zone-b.local
Sortie attendue :
server01.zone-b.local not found: 3 (NXDOMAIN)
La sortie indique que
zone-b.local
n'est associé à aucune des vues du VCN.
Option Automatisé :
Définissez l'indicateur is_test_instance_associated_zone_a
sur true
pour indiquer à Terraform de tester l'association VM-01
avec zone-a.local
.
# Test Instance for Associated Zone (zone-a.local)
is_test_instance_associated_zone_a = true
Le code Terraform suivant utilise le provisionneur remote-exec
pour automatiser le test de l'association de zone VM-01.
resource "null_resource" "dns_test_1" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key) # Avoid exposing SSH keys directly
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 1 - Instance Associated Zone-A\"",
"echo \"1. Successful SSH to the instance using public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-a.local.\"",
"host server01.zone-a.local",
"echo \"3. Verify the system-generated zone entry.\"",
"host -t NS zone-a.local",
"echo \"4. Verify the authority record for the zone.\"",
"host -t SOA zone-a.local",
"echo \"5. Observe the difference in DNS resolution based on the associated VCN views.\"",
"host server01.zone-b.local",
"echo \"End Test 1 - Instance Associated Zone-A\"", ]
}
}
Tâche 6 : configuration du résolveur VCN et ajout de l'autre vue privée
Option manuelle :
Pour configurer le résolveur VCN manuellement, accédez à la page de détails VCN-01 sur la console OCI, sélectionnez Résolveur VCN et Vue privée.
Sélectionnez VCN-02 dans le menu déroulant et cliquez sur Enregistrer pour enregistrer les modifications. Attendez que le statut de la page de détails du résolveur privé passe de Mise à jour à Actif.
Option Automatisé :
Pour automatiser la configuration du résolveur VCN, nous tirons parti du provisionneur local-exec
de Terraform pour exécuter l'interface de ligne de commande OCI, les livres de jeux Ansible ou les modules Terraform.
Définissez l'indicateur is_task6_automated
sur true
pour indiquer à Terraform.
is_task6_automated = true
Le script bash fourni update_resolver.sh
met en évidence les étapes de mise à jour du résolveur privé pour VCN-01 et d'association de VCN-02 en tant que vue privée DNS. En outre, un exemple de configuration DNS Terraform hybride pour OCI est disponible ici : terraform-OCI-hybrid-dns.
# Task 6: Configure the VCN Resolver, adding the Other Private View
resource "null_resource" "run-get-resolver" {
count = (var.is_task6_automated) ? 1 : 0
# Create inventory
provisioner "local-exec" {
command = "sh ~/terraform-ws/lab2-demos/update_resolver.sh"
}
}
Tâche 7 : tester votre instance pour la zone B associée
Option manuelle :
Vérifiez que le serveur est résolu correctement après avoir configuré le résolveur VCN.
-
Connectez-vous via SSH à l'instance avec l'adresse IP publique.
ssh -i <private_ssh_key> <public_ip_address>
-
Recherchez
server01.zone-a.local
dans les enregistrements DNS.host server01.zone-b.local
Sortie attendue :
server01.zone-b.local has address 172.16.0.123
Remarque : en cas d'échec de la résolution DNS, attendez quelques minutes pour que les modifications prennent effet. Si nécessaire, redémarrez l'instance.
Option Automatisé :
Définissez l'indicateur is_test_instance_associated_zone_b
sur true
pour demander à Terraform de tester l'association de VM-01 à la deuxième zone (zone-b.local
) du deuxième VCN (VCN-02).
# Test Instance for Assoicated Zone B
is_test_instance_associated_zone_b = true
Le code suivant utilise le provisionneur remote-exec
de Terraform pour automatiser le test, en vérifiant l'association de l'instance de machine virtuelle à zone-b.local
.
resource "null_resource" "dns_test_2" {
depends_on = [oci_core_instance.this[0]]
count = (var.is_test_instance_associated_zone_a) ? 1 : 0
connection {
agent = false
timeout = "30m"
host = oci_core_instance.this[0].public_ip
user = "opc"
private_key = file(var.ssh_private_key)
}
provisioner "remote-exec" {
inline = [
"echo \"Begin Test 2 - Instance Associated Zone-B\"",
"echo \"1. Successfull SSH into the instance using its public ip address: ${oci_core_instance.this[0].public_ip}\"",
"echo \"2. Look up DNS records for server01.zone-b.local.\"",
"host server01.zone-b.local",
"echo \"End Test 2 - Instance Associated Zone-B\"" ]
}
}
Options de déploiement
Nous examinerons deux options de déploiement :
-
Oracle Resource Manager (ORM), qui offre une interface conviviale avec des workflows guidés.
-
Interface de ligne de commande Terraform (Community Edition), offrant une gestion flexible et évolutive des ressources de l'atelier 2 via des fichiers de configuration déclaratifs.
To provision Lab 2 resources (VCN-01/VCN-02, LPG-01/LPG-02, and VM-01) and trigger the required tests, you need to provide default values for: image OCIDs map for each used region (image_ids
), compartment OCID (compartment_id
), display name prefix (display_name_prefix
), networking (is_vcn1_created
, is_vcn2_created
, is lpg1_created
, is_lpg2_created
, vcn_1_id
, vcn_2_id
, and public_subnet1_id
), compute instance (is_instance_created
, shape_name
), and testing flags for instance and zone associations (is_test_instance_associated_zone_a
and is_test_instance_associated_zone_b
).
Option 1 : Utiliser Oracle Resource Manager (ORM)
La figure 4 présente la création de la pile ORM pour la création des ressources de l'atelier 2.
Figure 4 : Oracle Resource Manager - Création d'une pile Lab2 (VCN-01, VCN-02, LPG-01 et LPG-02, VM-01)
Terraform automatise le provisionnement de l'infrastructure en sept étapes, comme illustré à la figure 5 : analyse des configurations source, création du package de modèle Terraform, fourniture de valeurs de variable par défaut, création de piles ORM, planification des modifications, application de ces modifications au provisionnement des ressources dans OCI et éventuellement destruction des ressources. L'intégration d'outils d'intégration continue et de déploiement continu DevOps tels que Jenkins ou OCI DevOps peut automatiser l'ensemble du processus, offrant ainsi une solution pratique, proche d'une solution en un seul clic.
Figure 5 : Workflow de pile Oracle Resource Manager (créer, planifier, appliquer et détruire)
Option 2 : utilisation de l'interface de ligne de commande Terraform (CLI) (Community Edition)
L'interface de ligne de commande Terraform est un outil puissant de type Infrastructure-as-Code qui permet une gestion flexible et évolutive des ressources cloud via des fichiers de configuration déclaratifs. Téléchargez le code Terraform à partir de cet emplacement : OCI-blog-fast-tracking-apcertif-part2.zip, personnalisez le fichier input.auto.tfvars
avec les détails OCI (compartment_id
, image_ids
), suivez les instructions du fichier README.md
pour configurer l'environnement, exécutez les commandes terraform init
, terraform plan
et terraform apply
pour terminer l'exercice 2.
Nous avons inclus des scripts bash pour chaque tâche qui prédéfinissent les indicateurs Terraform requis, ce qui réduit les clics et le temps d'exécution. Ces scripts offrent plusieurs niveaux de flexibilité :
-
Exécution séquentielle : en commençant par la tâche 1 à 3 (
run_task1-3.sh
etrun_task4.sh
), puis en passant à la tâche 7 (run_task6-7.sh
). -
Ordre personnalisé : vous pouvez mettre en pause après la tâche 1 à 3, terminer la tâche 4 manuellement, reprendre avec la tâche 5 à l'aide de Terraform, puis exécuter la tâche 6 manuellement et utiliser un script ultérieur pour terminer la tâche 7.
-
Exécution hybride : exécutez automatiquement la tâche 1 à 5 (
run_task1-3.sh
,run_task4.sh
, puisrun_task5.sh
) et tirez parti de l'interaction dansrun_taks6-7.sh
pour mettre en pause jusqu'à ce que la tâche 6 soit terminée manuellement sur la console OCI avant de reprendre le script pour la réalisation automatique de la tâche 7. -
Entièrement automatisé : vous pouvez intégrer ces tâches dans un pipeline d'intégration continue et de déploiement continu pour une exécution en un clic dans un environnement de production DevOps.
En substance, ce package fournit des guides et des meilleures pratiques pour la configuration du DNS privé, simplifiant l'atelier 2 et garantissant une expérience d'apprentissage fluide avec OCI DNS.
##########################################################################
# Terraform module: Configuring Private DNS Zones, Views, and Resolvers. #
# File Name: input.auto.tfvars #
# Copyright (c) 2024 Oracle Author: Mahamat H. Guiagoussou. #
##########################################################################
# Working Compartment
compartment_id = "REPLACE_WITH_YOUR_WORKING_COMPARTMENT_OCID_HERE"
# Region based display name prefix
display_name_prefix = "AP-LAB02-1" # Replace with your prefix
# TASK 1 - Create 2 VCNs (VCN-01 and VCN-02) manually using the OCI
# VCN Wizard (semi automated option) or Terraform (Root or Child)
# Turn flags off to indicate VCN-01 and VCN-02 are not created with TF
#is_vcn1_created = false # Set to 'false' to create VCN-01
#is_vcn2_created = false # Set to 'false' to create VCN-02
# After Creating VCN-01 & VCN-02 with VCN Wizard, updae OCIDs
vcn_id = "REPLACE_VCN1_OCID_HERE"
vcn_id = "REPLACE_VCN2_OCID_HERE"
public_subnet_id = "REPLACE_PUBLIC_VCN1_SUBNET_OCID_HERE"
# Create VCN-01 and VCN-02 with Terraform. Use only one of 2 options:
# (1) Root Module - Dupplicated code ("network1.tf" & "network2.tf")
# (2) Child Module - Use an existing Terraform Network Module.
# Network Deployment Options (Root Module)
network_deployment_option = "TF-ROOT-MODULE" # "TF-CHILD-MODULE"
# Turn flags on to instruct Terraform to create VCN-02 and VCN-02
is_vcn1_created = true # Set to 'true' to create VCN-01
is_vcn2_created = true # Set to 'true' to create VCN-02
# Networking parameters: CIDR Blocks and Host Name prefix
vcn1_cidr_block = "10.0.0.0/16"
vcn2_cidr_block = "172.0.0.0/16"
public_subnet1_cidr_block = "10.0.0.0/24"
public_subnet2_cidr_block = "172.0.0.0/24"
private_subnet1_cidr_block = "10.0.1.0/24"
private_subnet2_cidr_block = "172.0.1.0/24"
host_name_prefix = "<region-key>apl1"
# Task 2: Create two(2) Local Peering Gateways (LPG-01 & LPG-02)
is_lpg1_created = false
is_lpg2_created = false
# Task 3: Launch a VM (VM-01) in the public subnet
is_instance_created = false
# Shape Definition
shape_name = "VM.Standard.A1.Flex"
shape_memory_in_gbs = "6"
shape_numberof_ocpus = "1"
# SSH keys
ssh_public_key = "REPLACE_SSH_PUBLIC_KEY_PATH"
ssh_private_key = "REPLACE_SSH_PRIVATE_KEY_PATH"
# Task 4: Create and Configure OCI Private Zones (zone-a/b.local)
is_task4_automated = false
# Task 5: Test your instance for Associated Zone A.
is_test_instance_associated_zone_a = false
# Task 6: Configure the VCN Resolver, adding the Other Private View.
is_task6_automated = false
# Task 7: Test your Instance for Associated Zone B.
is_test_instance_assoracle = false
Ce tutoriel offrait une approche complète de la configuration de zones, de vues et de résolveurs DNS privés dans Oracle Cloud Infrastructure (OCI). Il proposait des méthodes manuelles et automatisées pour créer, configurer et tester ces composants. Cette approche pratique et semi-automatisée garantit une solide compréhension de la résolution DNS dans différents réseaux cloud virtuels d'OCI.
Grâce à sept tâches, vous avez créé deux réseaux cloud virtuels, établi des passerelles d'appairage local, lancé une machine virtuelle, configuré deux zones DNS personnalisées et vérifié l'association DNS de machine virtuelle avant et après l'ajout du deuxième VCN en tant que vue privée associée au résolveur DNS du premier VCN.
Etapes suivantes
En automatisant le provisionnement de l'infrastructure OCI à l'aide d'outils Infrastructure as Code IaC tels que Terraform, Ansible, Oracle Resource Manager ORM et les scripts shell bash de l'interface de ligne de commande OCI, ce tutoriel aide les candidats à la certification professionnelle OCI Architect (2024) à accélérer des tâches complexes, telles que celles des configurations DNS de l'atelier 2, de 30 minutes à seulement 5 minutes. Cette accélération de l'efficacité réduit les erreurs humaines, réduit les coûts de gestion des ressources et augmente les taux de réussite à grande échelle.
Découvrez Terraform et Ansible, puis tirez parti de l'ORM, de l'interface de ligne de commande OCI et des scripts bash pour explorer les meilleures pratiques IaC pour une gestion efficace de l'infrastructure OCI.
Liens connexes
Remerciements
- Auteur - Mahamat H. Guiagoussou (architecte cloud principal)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19548-01
November 2024