Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Configurer des zones, des vues et des résolveurs DNS privés pour accélérer la certification professionnelle OCI Architect avec Terraform
Présentation
La certification d'architecte professionnel d'Oracle Cloud Infrastructure (OCI) exige une compréhension approfondie d'Oracle Cloud et une expérience pratique. Cette série de tutoriels accélère votre parcours en tirant parti de l'infrastructure en tant que 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 (Oracle University Lab - 6h 14m).
Figure 1 : Points d'extrémité de passerelle d'appairage local pour créer un nom de domaine DNS privé
Avantages des clés DNS privées
Le DNS privé offre plusieurs avantages pour la gestion et la sécurité de vos ressources OCI. Cela inclut, mais sans s'y limiter, les éléments suivants :
- Organisation : Utilisez des 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.
- Équilibrage de charge : Répartissez le trafic sur plusieurs serveurs, ce qui améliore la performance et la fiabilité.
- Environnement et connectivité hybrides : Facilitez une communication transparente dans le nuage au sein et entre les réseaux en nuage virtuels, ainsi qu'entre les réseaux sur place et les ressources OCI.
Nous allons étudier comment tirer parti du DNS privé d'OCI pour gérer des domaines personnalisés et connecter les ressources entre 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 donne 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 VCN évolutif et multi-VCN dans OCI avec une résolution DNS privée. À l'aide de la console OCI, de Terraform et de Ansible, vous allez créer deux réseaux en nuage virtuels, établir des passerelles d'appairage local entre elles, lancer une instance de machine virtuelle, configurer des zones DNS privées personnalisées et tester de manière approfondie la résolution DNS avant et après la configuration du résolveur VCN. À la fin, vous disposerez d'un environnement multi-VCN entièrement fonctionnel avec une fonctionnalité DNS privée sur tous vos réseaux.
Objectifs
Il s'agit du deuxième tutoriel de la série suivante : 1 : Laboratoire 1 : Accélérer la certification professionnelle d'architecte Oracle Cloud Infrastructure avec Terraform pour accélérer la préparation de votre certification professionnelle d'architecte OCI (2024). Nous tirons parti des principes IaC avec Terraform et Ansible, en nous concentrant sur les concepts de base de DNS pertinents pour l'examen. Bien que les laboratoires pratiques de certification : Laboratoire 2 : Oracle Cloud Infrastructure Architect Professional (Oracle University Lab - 6h 14m) soient complets, le laboratoire 2 peut prendre beaucoup de temps, et prendre plus de 30 minutes pour les terminer manuellement. L'automatisation des tâches de routine telles que la création de réseaux en nuage virtuels, de sous-réseaux publics et privés, de passerelles LPG et de machines virtuelles réduit considérablement le temps d'exécution de plus de 80 % comme illustré dans le tutoriel 1 : Accélérer la certification professionnelle d'architecte Oracle Cloud Infrastructure avec Terraform, ce qui vous permet de vous concentrer sur la maîtrise des concepts de base de DNS pour OCI.
Préalables
-
Connaissance des principes IaC, de Terraform, d'Ansible et de l'interface de ligne de commande OCI (interface de ligne de commande OCI) d'Oracle Cloud Infrastructure.
-
Présentation de l'utilisation des modules Terraform pour provisionner l'infrastructure OCI. Pour plus d'informations, voir Réutiliser la configuration avec des modules.
-
Utilisation de OCI Cloud Shell, du gestionnaire de ressources Oracle (ORM) ou de l'environnement IDE (par exemple, Visual Studio).
-
Terminez le dernier exercice : Certification professionnelle pour l'architecture d'OCI et découvrez comment créer des configurations Terraform pour le réseau VCN avec ORM.
Tâche 1 : Créer deux réseaux en nuage virtuels
Option manuelle :
Vous pouvez créer des réseaux en nuage 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 à false
.
Pour créer des ressources de réseau de base telles que le VCN, la passerelle Internet, la table de routage, la liste de sécurité, les sous-réseaux publics et privés, voir Démarrage rapide du réseau virtuel.
Figure 2 : Vues de console pour collecter les OCID VCN-01/VCN-02 et VCN-01 de sous-réseau public
Allez à la console OCI, naviguez jusqu'à Réseau, Réseaux en nuage virtuels et consultez les détails de VCN-01, notez son OCID et l'OCID 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ée :
Nous fournissons également deux options d'automatisation pour créer le VCN (VCN-01
et VCN-02
) : une approche de module racine et une approche de module enfant. Le premier est plus simple et adapté au développement et aux tests ou au déploiement ponctuel de réseaux en nuage virtuels. La deuxième offre une meilleure organisation et une meilleure évolutivité pour les déploiements plus importants et complexes, favorisant la réutilisation et la maintenabilité du code, le rendant idéal pour les environnements de production.
Pour indiquer à Terraform de créer les réseaux en nuage virtuels, vous devez d'abord régler les indicateurs is_vcn1_created
et is_vcn2_created
à true
dans input.auto.tfvars
ou à titre de valeurs par défaut dans variables.tf
. Spécifiez ensuite le bloc CIDR du VCN (vcn?_cidr_block
), le bloc CIDR du sous-réseau public (public_subnet?_cidr_block
), le bloc CIDR du sous-réseau privé (private_subnet?_cidr_block
) et le préfixe du nom d'hôte (host_name?_prefix
). Les noms de variable sont abstraits par l'utilisation du point d'interrogation (?
) comme paramètre fictif. En remplaçant ?
par 1 ou 2, vous définirez des configurations distinctes pour VCN-01 et VCN-02, respectivement.
Vous devez également définir les valeurs des variables spécifiques : oci_regions
(mappage des identificateurs de région aux 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 d'architecte Oracle Cloud Infrastructure avec Terraform dans un sous-répertoire nommélab02-demo-flat/
dans le module racine. Ce répertoire utilise deux fichiers distincts,network1.tf
etnetwork2.tf
, pour automatiser la création de VCN-01 et de 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 laboratoires en direct pour OCI.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 des passerelles LPG dans OCI manuellement, voir Création d'une passerelle d'appairage local. Dans ce cas, réglez les indicateurs is_lpg1_created
et is_lpg2_created
à false
dans votre fichier de configuration (input.auto.tfvars
ou variables.tf
).
Option automatisée :
Pour automatiser la tâche à l'aide de Terraform, réglez ces indicateurs à true
. Cela 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
L'extrait de code Terraform suivant crée à la fois LPG-01 et LPG-02 et établit une relation d'appairage entre eux, ce qui permet une connectivité privée entre vos réseaux en nuage 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 : Lancer une instance de machine virtuelle
Option manuelle :
Pour lancer une instance de machine virtuelle manuellement au moyen de la console OCI, voir Création d'une instance.
Option automatisée :
Nous fournirons une automatisation du provisionnement des machines virtuelles à l'aide d'une version simplifiée du code Terraform du tutoriel 1 : Accélérer la certification professionnelle d'architecte Oracle Cloud Infrastructure avec Terraform. Pour indiquer à Terraform de créer une machine virtuelle VM-01, réglez l'indicateur is_instance_created
à true
. Le nom d'affichage de la machine virtuelle inclura 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éer des 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 de 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 y ajoute une valeur record
.
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
).-
Allez à la console OCI, naviguez jusqu'à 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
comme VCN associé et cliquez sur Créer. -
Une fois la zone créée, consultez 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 Confirmer la publication des modifications.
Notes : Attendez que l'opération se termine avec succès (l'état passe de MISE À JOUR à 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
).-
Naviguez jusqu'à Zones, Zones privées, cliquez sur Créer une zone.
-
Entrez 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 Confirmer la publication des modifications.
Notes : Si vous ignorez une étape de création manuelle, cela entraîne des erreurs telles que :
zone not found: 3 (NXDOMAIN)
.
-
Option automatisée :
Ce tutoriel fournit également une approche automatisée avancée utilisant Ansible. Ansible est un outil d'automatisation à code source libre qui gère les configurations de votre infrastructure. Dans ce contexte, un livre de jeu Ansible est un ensemble de tâches qui automatisent la création de zones DNS privées. Pour plus d'informations, voir Mots clés de livre de jeu Ansible.
Réglez is_task4_automated
à true
dans input.auto.tfvars
ou dans variabes.tf
pour déclencher une exécution Ansible playbook
dans playbooks.sh
, automatisant en une seule exécution la création de zones DNS privées et l'ajout d'enregistrements.
# Task 4: Create and Configure two DNS zones (zone-a and zone-b).
is_task4_automated = true
À l'aide du provisionneur local-exec
de Terraform, vous pouvez exécuter un livre de jeu Ansible pour créer automatiquement zone-a.local
dans VCN-01 et les zones zone-b.local
dans VCN-02 avec leur records
respectif. Pour plus d'informations, voir 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 :
Accédez manuellement à l'instance de machine virtuelle par SSH pour vérifier si votre instance de machine virtuelle est associée à zone-a.local
.
-
Accédez par SSH à l'instance avec l'adresse IP publique.
ssh -i <private_ssh_key> <public_ip_address>
-
Consultez les enregistrements DNS pour
server01.zone-a.local
.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 de DNS en fonction des vues de 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ée :
Réglez l'indicateur is_test_instance_associated_zone_a
à true
pour demander à 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 : Configurer le résolveur de VCN et ajouter l'autre vue privée
Option manuelle :
Pour configurer le résolveur de VCN manuellement, naviguez jusqu'à la page de détails du VCN-01 dans la console OCI, sélectionnez Résolveur de 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 des détails du résolveur privé passe de MISE À JOUR à ACTIVE.
Option automatisée :
Pour automatiser la configuration du résolveur de VCN, nous utilisons le provisionneur local-exec
de Terraform pour exécuter l'interface de ligne de commande OCI, les livres de jeu Ansible ou les modules Terraform.
Réglez l'indicateur is_task6_automated
à 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 associe VCN-02 en tant que vue privée DNS. De plus, un exemple de configuration Terraform DNS 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 résout correctement après avoir configuré le résolveur de VCN.
-
Accédez par SSH à l'instance avec l'adresse IP publique.
ssh -i <private_ssh_key> <public_ip_address>
-
Consultez les enregistrements DNS pour
server01.zone-a.local
.host server01.zone-b.local
Sortie attendue :
server01.zone-b.local has address 172.16.0.123
Note : Si la résolution du DNS échoue, attendez quelques minutes pour que les modifications prennent effet. Si nécessaire, redémarrez l'instance.
Option automatisée :
Réglez l'indicateur is_test_instance_associated_zone_b
à true
pour indiquer à Terraform de tester l'association de VM-01 avec 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 avec 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 explorerons deux options de déploiement :
-
Oracle Resource Manager (ORM), offrant une interface conviviale avec des flux de travail guidés.
-
L'interface de ligne de commande Terraform (édition Community), qui permet une gestion flexible et évolutive des ressources du laboratoire 2 au moyen de 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 du laboratoire 2.
Figure 4 : Gestionnaire de ressources Oracle - Créer 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 sources, création de l'ensemble de modèles 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 des outils d'intégration et de développement en continu DevOps tels que Jenkins ou OCI DevOps peut automatiser l'ensemble du processus, offrant une solution pratique à proximité d'un clic unique.
Figure 5 : Flux de travail de pile d'Oracle Resource Manager (créer, planifier, appliquer et détruire)
Option 2 : Utiliser l'interface de ligne de commande Terraform (édition Community)
L'interface de ligne de commande Terraform est un outil puissant d'infrastructure-code qui permet une gestion flexible et évolutive des ressources en nuage au moyen de fichiers de configuration déclaratifs. Téléchargez le code Terraform à partir d'ici : OCI-blog-fast-tracking-apcertif-part2.zip et personnalisez le fichier input.auto.tfvars
avec vos détails OCI (compartment_id
, image_ids
), et suivez les instructions dans README.md
pour configurer l'environnement, exécutez les commandes terraform init
, terraform plan
et terraform apply
pour terminer le laboratoire 2.
Nous avons inclus des scripts bash pour chaque tâche qui prédéfinissent les indicateurs Terraform requis, réduisant ainsi les clics et le temps d'achèvement. 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 effectuer une pause après la tâche 1 à 3, terminer la tâche 4 manuellement, reprendre la tâche 5 à l'aide de Terraform, puis exécuter la tâche 6 manuellement et utiliser un script suivant 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 dans la console OCI avant de reprendre le script pour l'achèvement automatique de la tâche 7. -
Entièrement automatisé : Vous pouvez intégrer ces tâches dans un pipeline d'intégration et de développement en continu pour une exécution en un clic dans un environnement de production DevOps.
Essentiellement, cet ensemble fournit des guides et des meilleures pratiques pour configurer un DNS privé, ce qui simplifie le laboratoire 2 et assure une expérience d'apprentissage fluide avec le DNS OCI.
##########################################################################
# 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 présente une approche complète de la configuration de zones, de vues et de résolveurs DNS privés dans Oracle Cloud Infrastructure (OCI). Il offrait des méthodes manuelles et automatisées pour créer, configurer et tester ces composants. Cette approche pratique, semi-automatisée assure une solide compréhension de la résolution DNS dans les différents réseaux en nuage virtuels d'OCI.
Au moyen de sept tâches, vous avez créé deux réseaux en nuage virtuels, établi des passerelles LPG, lancé une machine virtuelle, configuré deux zones DNS personnalisées et vérifié l'association DNS de la 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.
Étapes suivantes
En automatisant le provisionnement de l'infrastructure OCI à l'aide de l'infrastructure en tant qu'outils de code IaC tels que Terraform, Ansible, Oracle Resource Manager ORM et les scripts d'interpréteur de commandes bash de l'interface de ligne de commande OCI, ce tutoriel aide les candidats à la certification professionnelle d'architecte OCI (2024) à accélérer les tâches complexes, telles que celles des configurations DNS du laboratoire 2, de 30 minutes à seulement 5 minutes. Cette amélioration de l'efficacité temporelle réduit les erreurs humaines, réduit les coûts de gestion des ressources et augmente les taux de réussite à grande échelle.
Apprenez Terraform et Ansible, puis utilisez ORM, l'interface de ligne de commande OCI et les scripts de base pour explorer les meilleures pratiques IaC pour une gestion efficace de l'infrastructure OCI.
Liens connexes
Confirmation
- Auteur - Mahamat H. Guiagoussou (architecte en nuage principal)
Autres ressources d'apprentissage
Explorez d'autres laboratoires sur la page docs.oracle.com/learn ou accédez à plus de contenu d'apprentissage gratuit sur le canal YouTube d'Oracle Learning. De plus, visitez education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.
Configure Private DNS Zones, Views, and Resolvers to Accelerate OCI Architect Professional Certification with Terraform
G19547-01
November 2024