Remarques :

Utilisation de la règle de service OCI Events pour mettre à jour des enregistrements DNS inter-région pour une zone privée avec OCI Functions

Introduction

Dans ce tutoriel, nous allons apprendre à mettre à jour automatiquement les enregistrements DNS (Domain Name System) pour les instances de calcul d'une zone privée dans les deux régions lors de la création d'une nouvelle instance de calcul, ou lorsqu'elle est déplacée lors d'un scénario de permutation dans un plan Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR). Ce tutoriel couvre deux services OCI spécifiques.

Ce cas d'utilisation a été initialement envisagé pour une utilisation lors d'un plan de permutation OCI Full Stack DR, où les instances sont déplacées entre les régions. Pour l'essentiel, le processus de permutation de récupération après sinistre consiste à créer une instance dans la nouvelle région, puis à mettre fin à l'instance dans la région précédente. En fonction de ce scénario, ce tutoriel se concentre sur le type d'événement Lancement - Fin d'instance, qui déclenche une fonction OCI pour mettre à jour les enregistrements DNS des zones privées dans les deux régions.

Cette solution peut également servir d'automatisation de zone privée OCI DNS par défaut. Il crée un enregistrement DNS pour chaque nouvelle instance créée dans le compartiment sélectionné ou tout autre filtre que vous indiquez pour identifier les instances cible. Pour plus d'informations, reportez-vous à Services produisant des événements.

Architecture globale

T3_1

Remarque :

Objectifs

Prérequis

Tâche 1 : configurer des groupes dynamiques

Accédez à votre domaine, cliquez sur Groupes dynamiques et créez les groupes suivants.

Nom de groupe dynamique : MyFunctions.

ALL {resource.type = 'fnfunc', resource.compartment.id = 'pasteYourCompartmentOCID'}

Tâche 2 : créer des stratégies

Accédez à Stratégies et créez les stratégies suivantes.

Nom de la stratégie : FunctionsPolicies.

Allow dynamic-group MyFunctions to read repos in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use instance-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to read app-catalog-listing in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use volume-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use virtual-network-family in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to manage dns-records in compartment YOUR-COMPARTMENT-NAME
Allow dynamic-group MyFunctions to use dns-zones in compartment YOUR-COMPARTMENT-NAME

Tâche 3 : créer OCI Container Registry

  1. Accédez à Services de développeur, cliquez sur Registre de conteneur et créez un référentiel privé pour l'image Fn.

    Nom du référentiel : lab/fnpy-event-dns-update.

    T3_1

  2. Vérifiez les référentiels et notez l'espace de noms.

    T3_1

  3. Ouvrez le shell de terminal sur lequel vous avez installé l'interface de ligne de commande OCI et Docker, puis connectez-vous au registre. Vérifiez l'URL correcte pour votre région. Dans ce tutoriel, nous utilisons la région Est du Brésil (Sao Paulo) où l'URL du registre est gru.ocir.io.

    docker login gru.ocir.io
    Username: <your container namespace>/youruser
    Password: YOUR_AUTH_TOKEN_CREATED_EARLIER
    

    T3_3

Tâche 4 : création des fonctions OCI Python pour mettre à jour le DNS sur les zones privées

  1. Accédez à la console OCI et cliquez sur Services de développeur. Sous Fonctions, cliquez sur Applications et sur Créer une application.

    T9_1

  2. Créez la configuration pour les zones privées DNS OCI concernées.

    Remarque : cette variable de configuration indique les OCID de zones privées à mettre à jour. Vous pouvez répertorier plusieurs OCID, séparés par des virgules.

    Nom secret Value
    TARGET_ZONES_OCID Définir la liste des OCID de ZONES privées comme séparés par une virgule

    Dans ce tutoriel, nous allons définir deux zones privées : une pour la région GRU et une pour la région VCP.

    Echant.:

    ocid1.dns-zone.oc1.sa-saopaulo-1.xxxx
    
    ocid1.dns-zone.oc1.sa-vinhedo-1.xxx
    

    T4_2

  3. Accédez au shell de terminal sur lequel Docker, l'interface de ligne de commande OCI et l'interface de ligne de commande du projet Fn sont installés et exécutez les commandes suivantes pour initialiser la fonction.

    Remarque : si vous avez suivi les tâches, la commande de connexion Docker a déjà été exécutée à ce stade. Sinon, passez à la tâche 3.3 de connexion Docker.

    mkdir lab
    cd lab
    fn create context oci-cloud --provider oracle
    fn use context oci-cloud
    fn update context oracle.compartment-id PASTE_YOUR_COMPARTMENT_OCID
    fn update context api-url https://functions.sa-saopaulo-1.oraclecloud.com
    fn update context registry gru.ocir.io/PASTE_YOUR_REGISTRY_NAMESPACE/lab
    fn init --runtime python fnpy-event-dns-update
    cd fnpy-event-dns-update
    ls -lrt
    

    Remarque : dans ce tutoriel, nous utilisons la région Est du Brésil (Sao Paulo). Si vous utilisez une autre région, vous devez modifier les emplacements api-url et registry.

    T4_3

    La commande init crée une fonction hello world sur func.py. Nous allons écraser ce code.

  4. Obtenez l'exemple de code de la fonction Python ici : fnpy-event-dns-update.zip, décompressez-le et écrasez les fichiers lors de la commande init.

    1. Copiez le fichier zip dans le répertoire de l'exercice où vous avez exécuté la commande fn init et recherchez les fichiers dans le répertoire.

      ls -lrt
      
    2. Décompressez le fichier et écrasez les fichiers existants.

      unzip fnpy-event-dns-update.zip
      

    T9_1

  5. Créez le nouveau code et déployez la fonction.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

Tâche 5 : création de la règle de service OCI Events

  1. Accédez à la console OCI et cliquez sur Observation et gestion. Sous Service d'événements, sélectionnez Règles et cliquez sur Créer une règle.

  2. Saisissez les informations suivantes .

    • Nom : entrez MyAutoDNSRule.
    • Conditions de règle:
      • Condition 1:
        • Condition : sélectionnez Event Type.
        • Nom de service : sélectionnez Compute.
        • Type d'événement : sélectionnez Instance - Launch End.
      • Condition 2:
        • Condition : sélectionnez Attribute.
        • Nom d'attribut : sélectionnez compartmentId.
        • Valeurs d'attribut : entrez l'OCID de compartiment.
    • Actions:
      • Type d'action : sélectionnez Functions.
      • Compartiment de fonction : sélectionnez votre compartiment.
      • Application de fonction : sélectionnez MyApp.
      • Fonction : sélectionnez fnpy-event-dns-update.

    T5_1

    Remarque : dans cet exemple, nous filtrons les instances par compartmentID, ce qui signifie que toute instance nouvellement lancée dans ce compartiment déclenchera la fonction sélectionnée. Vous pouvez spécifier différents filtres et conditions en fonction de vos besoins.

Tâche 6 : valider la solution

Dans ce tutoriel, nous avons établi des zones privées DNS dans les régions GRU et VCP et documenté les OCID de chaque zone privée DNS. Ces OCID seront utilisés pour la configuration des fonctions OCI.

  1. Assurez-vous qu'OCI Functions est disponible et activez la journalisation pour celui-ci.

    1. Accédez à la console OCI et cliquez sur Services de développeur. Sous Fonctions, cliquez sur Applications et sélectionnez l'application MyApp que vous avez créée.

      T6_1

    2. Cliquez sur Journaux et sélectionnez Activer le journal.

      T6_1

  2. Vérifiez les zones privées DNS actuelles. Nous avons configuré un domaine appelé UBUNTUAPPS.COM dans les deux régions, comme indiqué sur les images suivantes.

    T6_1

    T6_1

  3. Créez une instance de calcul pour simuler une permutation de récupération après sinistre OCI Full Stack. Cela déclenche l'événement Instance Launch - END, qui appelle ensuite les fonctions OCI pour mettre à jour la zone privée DNS dans les deux régions.

    T6_2

    T6_2

  4. Une fois l'instance créée, vérifiez que la zone privée DNS a été correctement mise à jour dans les deux régions.

    T6_3

    T6_3

  5. Consultez les journaux OCI Functions pour vérifier les détails de la fonction exécutée.

    T6_4

Remerciements

Ressources de formation supplémentaires

Parcourez d'autres ateliers sur docs.oracle.com/learn ou accédez à davantage de contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, rendez-vous sur education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.

Pour obtenir de la documentation sur le produit, visitez Oracle Help Center.