Nota

Usa regola servizio eventi OCI per aggiornare i record DNS tra più aree per una zona privata con funzioni OCI

Introduzione

In questa esercitazione verrà descritto come aggiornare automaticamente i record DNS (Domain Name System) per le istanze di computazione in una zona privata in entrambe le aree quando viene creata una nuova istanza di computazione o quando viene spostata durante uno scenario di switchover in un piano Oracle Cloud Infrastructure Full Stack Disaster Recovery (OCI Full Stack DR). Questa esercitazione descrive due servizi OCI specifici.

Questo caso d'uso è stato inizialmente previsto per l'uso durante un piano di switchover OCI Full Stack DR, in cui le istanze vengono spostate tra le aree. In sostanza, il processo di switchover di Disaster Recovery (DR) implica la creazione di una nuova istanza nella nuova area e quindi l'interruzione dell'istanza nell'area precedente. In base a questo scenario, questa esercitazione si concentra sul tipo di evento Avvia - Fine istanza, che attiva un'infrastruttura OCI Functions per aggiornare i record DNS per le zone private in entrambe le aree.

Questa soluzione può anche fungere da automazione predefinita delle zone private DNS OCI. Crea un record DNS per ogni nuova istanza creata nel compartimento selezionato o per qualsiasi altro filtro specificato per identificare le istanze di destinazione. Per ulteriori informazioni, vedere Servizi che producono eventi.

Architettura di alto livello

T3_1

Nota:

Obiettivi

Prerequisiti

Task 1: Impostazione dei gruppi dinamici

Andare al dominio, fare clic su Gruppi dinamici e creare i gruppi riportati di seguito.

Nome gruppo dinamico: MyFunctions.

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

Task 2: Creare criteri

Andare a Criteri e creare i criteri riportati di seguito.

Nome criterio: 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

Task 3: Crea OCI Container Registry

  1. Andare a Servizi sviluppatore, fare clic su Container di registro e creare un repository privato per l'immagine Fn.

    Nome repository: lab/fnpy-event-dns-update.

    T3_1

  2. Controllare i repository e prendere nota dello spazio di nomi.

    T3_1

  3. Aprire la shell del terminale in cui sono installate l'interfaccia CLI OCI e Docker ed eseguire il login al registro. Controllare l'URL corretto per la propria area. In questa esercitazione viene utilizzata l'area Brasile orientale (San Paolo) in cui l'URL del registro è gru.ocir.io.

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

    T3_3

Task 4: creare le funzioni OCI Python per aggiornare il DNS nelle zone private

  1. Andare a OCI Console e fare clic su Servizi per sviluppatori. In Funzioni, fare clic su Applicazioni e su Crea applicazione.

    T9_1

  2. Creare la configurazione per le zone private DNS OCI interessate.

    Nota: questa variabile di configurazione specifica gli OCID delle zone private da aggiornare. È possibile elencare più OCID, separati da virgole.

    Nome segreto Valore
    TARGET_ZONES_OCID Impostare la lista di OCID zone PRIVATE come separati da virgole

    In questa esercitazione verranno impostate due zone private: una per l'area GRU e una per l'area VCP.

    Esempio:

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

    T4_2

  3. Andare alla shell del terminale in cui sono installati Docker, CLI OCI, CLI Fn Project ed eseguire i comandi riportati di seguito per inizializzare la funzione.

    Nota: se sono stati eseguiti i task, il comando di login Docker è già stato eseguito, in caso contrario, procedere con il task 3.3 di login 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
    

    Nota: in questa esercitazione viene utilizzata l'area Est del Brasile (San Paolo). Se si utilizza un'area diversa, è necessario modificare le posizioni api-url e registry.

    T4_3

    Il comando init creerà una funzione hello world su func.py. Questo codice verrà sovrascritto.

  4. Ottenere il codice di esempio della funzione Python da qui: fnpy-event-dns-update.zip, decomprimerlo e sovrascrivere i file durante il comando init.

    1. Copiare il file zip nella directory di laboratorio in cui è stato eseguito il comando fn init e verificare la presenza dei file nella directory.

      ls -lrt
      
    2. Decomprimere il file e sovrascrivere i file esistenti.

      unzip fnpy-event-dns-update.zip
      

    T9_1

  5. Creare il nuovo codice e distribuire la funzione.

    ls -lrt
    fn deploy --app MyApp
    

    T4_1

Task 5: creare la regola del servizio OCI Events

  1. Andare alla console OCI e fare clic su Osservabilità e gestione. In Servizio eventi, selezionare Regole e fare clic su Crea regola.

  2. Immettere le informazioni riportate di seguito.

    • Nome: immettere MyAutoDNSRule.
    • Condizioni della regola:
      • Condizione 1:
        • Condizione: selezionare Event Type.
        • Nome servizio: selezionare Compute.
        • Tipo di evento: selezionare Instance - Launch End.
      • Condizione 2:
        • Condizione: selezionare Attribute.
        • Nome attributo: selezionare compartmentId.
        • Valori attributo: immettere l'OCID del compartimento.
    • Azioni:
      • Tipo di azione: selezionare Functions.
      • Compartimento di funzione: selezionare il compartimento.
      • Applicazione funzione: selezionare MyApp.
      • Funzione: selezionare fnpy-event-dns-update.

    T5_1

    Nota: in questo esempio le istanze vengono filtrate in base a compartmentID, ovvero qualsiasi istanza appena avviata in tale compartimento attiverà la funzione selezionata. È possibile specificare filtri e condizioni diversi in base alle proprie esigenze.

Task 6: Convalida la soluzione

In questa esercitazione sono state stabilite zone private DNS sia nelle aree GRU che VCP e sono stati documentati gli OCID per ogni zona privata DNS. Questi OCID verranno utilizzati per configurare le funzioni OCI.

  1. Assicurarsi che le funzioni OCI siano disponibili e abilitarne il log.

    1. Andare a OCI Console e fare clic su Servizi per sviluppatori. In Funzioni, fare clic su Applicazioni e selezionare l'applicazione creata MyApp.

      T6_1

    2. Fare clic su Log e selezionare Abilita log.

      T6_1

  2. Controllare le zone private DNS correnti. In entrambe le aree è stato impostato un dominio denominato UBUNTUAPPS.COM, come mostrato nelle immagini seguenti.

    T6_1

    T6_1

  3. Crea una nuova istanza di computazione per simulare uno switchover OCI Full Stack DR. Questa operazione attiverà l'evento Instance Launch - END, che richiamerà quindi le funzioni OCI per aggiornare la zona privata DNS in entrambe le aree.

    T6_2

    T6_2

  4. Dopo aver creato l'istanza, verificare che la zona privata DNS sia stata aggiornata correttamente in entrambe le aree.

    T6_3

    T6_3

  5. Rivedere i log di OCI Functions per verificare i dettagli della funzione eseguita.

    T6_4

Conferme

Altre risorse di apprendimento

Esplora altri laboratori su docs.oracle.com/learn o accedi a più contenuti gratuiti sulla formazione su Oracle Learning YouTube channel. Inoltre, visita education.oracle.com/learning-explorer per diventare un Oracle Learning Explorer.

Per la documentazione del prodotto, visita l'Oracle Help Center.