Note :

Utiliser la règle du service d'événements pour OCI pour mettre à jour les enregistrements DNS inter-région pour une zone privée avec le service des fonctions pour OCI

Présentation

Dans ce tutoriel, nous verrons comment mettre à jour automatiquement les enregistrements de système de noms de domaine (DNS) pour les instances de calcul d'une zone privée dans les deux régions, lorsqu'une nouvelle instance de calcul est créée, 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 de récupération après sinistre de pile complète OCI, où les instances sont déplacées entre les régions. Essentiellement, le processus de permutation de récupération après sinistre consiste à créer une nouvelle instance dans la nouvelle région, puis à mettre fin à l'instance dans la région précédente. Basé sur ce scénario, ce tutoriel se concentre sur le type d'événement Lancer - Fin d'instance, qui déclenche un service des fonctions pour OCI pour mettre à jour les enregistrements DNS pour les zones privées des 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 spécifiez pour identifier les instances cibles. Pour plus d'informations, voir Services qui génèrent des événements.

Architecture de haut niveau

T3_1

Note :

Objectifs

Préalables

Tâche 1 : Configurer des groupes dynamiques

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

Nom du groupe dynamique : MyFunctions.

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

Tâche 2 : Créer des politiques

Allez à Politiques et créez les politiques suivantes.

Nom de la politique : 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 un registre de conteneurs pour OCI

  1. Allez à Services de développement, cliquez sur Registre de conteneurs 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 l'interpréteur de commandes de terminal où 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 Brésil - Est (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éer le service des fonctions pour OCI Python pour mettre à jour le DNS dans les zones privées

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

    T9_1

  2. Créez la configuration des zones privées OCI DNS touchées.

    Note : Cette variable de configuration spécifie les OCID des zones privées à mettre à jour. Vous pouvez lister plusieurs OCID, séparés par des virgules.

    Nom de clé secrète Valeur
    TARGET_ZONES_OCID Définir la liste des OCID des ZONES privées comme étant séparés par des virgules

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

    Exemple :

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

    T4_2

  3. Allez à l'interpréteur de commandes de terminal où Docker, l'interface de ligne de commande OCI et l'interface de ligne de commande Fn Project sont installés et exécutez les commandes suivantes pour initialiser la fonction.

    Note : Si vous avez suivi les tâches, votre commande de connexion Docker a déjà été exécutée maintenant, sinon, continuez avec le journal Docker à la tâche 3.3.

    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
    

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

    T4_3

    La commande init créera une fonction hello world sur func.py. Nous remplacerons ce code.

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

    1. Copiez le fichier zip dans le répertoire de laboratoire 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 remplacez 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éer la règle du service d'événements OCI

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

  2. Entrez les informations suivantes .

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

    T5_1

    Note : 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 à la fois dans les régions GRU et VCP et documenté les OCID de chaque zone privée DNS. Ces OCID seront utilisés pour configurer le service des fonctions pour OCI.

  1. Assurez-vous que le service des fonctions pour OCI est disponible et activez la journalisation pour celui-ci.

    1. Allez à la console OCI et cliquez sur Services de développement. Sous Fonctions, cliquez sur Applications et sélectionnez l'application créée MyApp.

      T6_1

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

      T6_1

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

    T6_1

    T6_1

  3. Créez une nouvelle instance de calcul pour simuler une permutation de récupération après sinistre de pile complète pour OCI. Cela déclenchera l'événement Instance Launch - END, qui appellera ensuite le service des fonctions pour 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 du service des fonctions pour OCI pour vérifier les détails de la fonction exécutée.

    T6_4

Confirmation

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.