Nota
- Questa esercitazione richiede l'accesso a Oracle Cloud. Per iscriverti a un account gratuito, consulta Inizia a utilizzare Oracle Cloud Infrastructure Free Tier.
- Utilizza valori di esempio per le credenziali, la tenancy e i compartimenti di Oracle Cloud Infrastructure. Al termine del laboratorio, sostituisci questi valori con quelli specifici del tuo ambiente cloud.
Usa Oracle Cloud Infrastructure DevOps per automatizzare le distribuzioni di OCI Resource Manager
Introduzione
Oracle Cloud Infrastructure (OCI) Resource Manager è un servizio completamente gestito che aiuta i team a gestire e automatizzare la propria Infrastructure as Code (IaC). Consente ai team di collaborare alla configurazione di Terraform, definire le autorizzazioni per varie azioni, fornire il blocco dello stato per prevenire il danneggiamento, memorizzare automaticamente tutti i file di stato nello storage persistente e si occupa della configurazione del provider Terraform. Per la distribuzione e l'implementazione di tutto il software, non solo Terraform, esiste OCI DevOps, una piattaforma di integrazione/consegna continua (CI/CD) end-to-end per gli sviluppatori con repository di codici privati, trigger, pipeline di build e distribuzione e altro ancora.
OCI Resource Manager ha integrato l'automazione per Terraform e le integrazioni con più sistemi di controllo del codice sorgente per ottenere CI/CD di base. In questa esercitazione esamineremo come utilizzare OCI DevOps per espandere queste funzionalità CI/CD ridistribuendo automaticamente gli stack di Resource Manager OCI sulle modifiche al codice Terraform.
Il flusso
Il processo inizia con un utente che esegue il push di una nuova configurazione Terraform nel repository di codici, il che attiva le pipeline di build e distribuzione. Ciò si traduce nella creazione di un ambiente shell che utilizza l'interfaccia CLI (Command Line Interface) OCI per applicare lo stack di Resource Manager OCI alla nuova configurazione.
Obiettivi
- Ridistribuire automaticamente uno stack di Resource Manager OCI alle modifiche Terraform.
Task 1: impostare il repository di codici DevOps OCI
-
Eseguire il login a OCI Console, passare a Developer Services, DevOps, Projects e creare un progetto DevOps che conterrà tutte le risorse nel flusso di lavoro CI/CD.
-
Creare un repository di codici e caricare la configurazione Terraform. Sono disponibili numerosi modelli forniti da Oracle che è possibile utilizzare. In questa esercitazione Terraform modifica semplicemente la descrizione di un argomento Notifiche OCI.
resource "oci_ons_notification_topic" "test_notification_topic" { #Required compartment_id = <compartment_id> name = "RM_DevOps_Automation_Tutorial" #Optional description = "This is a test notification topic." }
Task 2: Creare un artifact shell
È necessario creare prima l'artifact utilizzato nella pipeline di distribuzione. Poiché verrà eseguito uno script shell per eseguire l'interfaccia CLI OCI, creare un artifact di tipo Specifica comando. In questa esercitazione verrà utilizzata l'origine artifact per essere In linea con i seguenti comandi:
version: 0.1
component: command
timeoutInSeconds: 1200
steps:
- type: Command
timeoutinSeconds: 900
name: Invoke RMS
command: |
echo "Running RM apply command"
Per ulteriori informazioni sulla sintassi e su ulteriori parametri, vedere Documentazione sulla specifica del comando. Aggiungeremo ulteriori dettagli a questo script più tardi.
Task 3: creare una pipeline di distribuzione
Le pipeline di distribuzione vengono utilizzate per distribuire gli artifact.
-
Creare una pipeline di distribuzione e una fase di tipo Shell.
-
Fare clic su Seleziona artifact e selezionare l'artifact creato nel task 2. Selezionare la forma e la configurazione di rete che soddisfano i requisiti.
Nota: criteri: quando si creano fasi, verrà collegata una lista di criteri consigliati. Assicurarsi di aggiungerli. Inoltre, la nostra pipeline di distribuzione interagirà con OCI Resource Manager e OCI Notifications, quindi assicurati di concedere al tuo gruppo dinamico l'accesso a
ons-topics
,orm-stacks
eorm-jobs
. Per ulteriori informazioni su una lista completa di autorizzazioni per ogni servizio, vedere Riferimento ai criteri.
Task 4: creare una pipeline di build
Anche se non verranno creati artifact, è comunque necessaria una pipeline di build per attivare la pipeline di distribuzione.
-
Creare una pipeline di build e una fase di tipo Distribuzione trigger.
-
Fare clic su Seleziona pipeline di distribuzione e selezionare la pipeline creata nel task 3.
Task 5: Crea un trigger
È necessario creare un trigger che richiami al push del codice.
-
Passare a Trigger e fare clic su Crea trigger.
-
Nella pagina Crea trigger, immettere le informazioni riportate di seguito.
- Connessione di origine: immettere il repository di codici OCI.
- Seleziona repository di codici: selezionare il repository creato nel task 1.
-
Fare clic su Aggiungi azione e immettere le informazioni seguenti.
- Genera pipeline: selezionare la pipeline di build creata nel task 4.
- Evento: selezionare Push.
- Condizioni di esecuzione build: immettere le condizioni in base al caso d'uso. In questo esempio verranno inserite le informazioni riportate di seguito.
- Ramo di origine: immettere principale.
- File da includere: immettere main.tf.
Task 6: eseguire il test del flusso
Ecco il flusso di lavoro che abbiamo seguito fino a questo punto nel tutorial.
- Push codice.
- Trigger.
- Pipeline di build.
- Pipeline di distribuzione.
- Lo script shell esegue
echo "Running RM apply command"
.
Confermare il funzionamento del flusso di lavoro prima di aggiungere maggiore complessità allo script shell.
-
Inserire un nuovo codice.
-
Confermare l'attivazione della pipeline di build.
-
Confermare l'attivazione della pipeline di distribuzione.
-
Conferma esecuzione dello script shell riuscita
Tutto funziona come previsto. L'ultimo compito è rimodellare il nostro script shell per attivare lo stack di Resource Manager.
Task 7: Modifica script shell per attivare stack Resource Manager
Il runtime delle immagini del contenitore dell'area intermedia della shell include interpreti della shell, utility della shell, interfacce CLI e molti altri strumenti. Per ulteriori informazioni, vedere Dettagli runtime immagine contenitore shell.
Utilizzeremo l'interfaccia CLI OCI per richiamare Resource Manager. Il nostro script shell è simile al seguente:
version: 0.1
component: command
timeoutInSeconds: 1200
steps:
- type: Command
timeoutinSeconds: 900
name: Invoke RMS
command: |
echo "Running RM apply command"
Per modificare lo script della shell, procedere come segue:
-
creare un job.
La prima chiamata che faremo è
create-apply-job
. In questo modo viene creato un job di applicazione nello stack di Resource Manager. Verrà inoltre salvato il filejob_id
del job come variabile per fare riferimento al job nel passo successivo.job_id=$(oci resource-manager job create-apply-job --stack-id <Stack OCID> --execution-plan-strategy AUTO_APPROVED --wait-for-state SUCCEEDED --wait-for-state FAILED --query data.id --raw-output)
Per ulteriori informazioni, vedere Riferimento ai comandi CLI di OCI: create-apply-job.
-
Ottiene lo stato del job.
È necessario verificare se il job è riuscito o meno. Per fare ciò, passeremo il
job_id
injob get
, che restituisce le proprietà del job. In particolare, ci interessa illifecycle-state
.job_state=$(oci resource-manager job get --job-id $job_id --raw-output --query 'data."lifecycle-state"')
Per ulteriori informazioni, vedere OCI CLI Command Reference: job get.
-
Analizzare lo stato del job.
Aggiungere la logica per modificare il codice di uscita a seconda che il job sia riuscito (0) o non sia riuscito (1).
if [ $job_state == SUCCEEDED ]; then echo "Resource Manager job succeeded" exit 0 else echo "Resource Manager job failed" exit 1 fi
-
Dopo aver aggregato i passi precedenti e aggiunto alcune istruzioni di stampa aggiuntive, lo script shell dovrebbe avere un aspetto simile al seguente:
version: 0.1 component: command timeoutInSeconds: 1200 steps: - type: Command timeoutinSeconds: 900 name: Invoke RMS command: | echo "Running RM apply command" job_id=$(oci resource-manager job create-apply-job --stack-id ocid1.ormstack.oc1.iad.amaaaaaann2vciya6arauok6db5epqnhlfdmbf5ee7td6gydzwvarzanaxyq --execution-plan-strategy AUTO_APPROVED --wait-for-state SUCCEEDED --wait-for-state FAILED --query data.id --raw-output) echo "RMS plan job id is:" echo $job_id job_state=$(oci resource-manager job get --job-id $job_id --raw-output --query 'data."lifecycle-state"') echo "Apply job lifecycle-state is:" echo $job_state if [ $job_state == SUCCEEDED ]; then echo "Resource Manager job succeeded" exit 0 else echo "Resource Manager job failed" exit 1 fi
Nota: questo è un semplice esempio che mostra le funzionalità di base. È possibile personalizzare lo script in base alle proprie esigenze.
Task 8: Test end-to-end
L'architettura e il flusso completi dovrebbero essere così:
Confermare il funzionamento dell'architettura.
-
Inserire un nuovo codice.
-
Conferma esecuzione dello script shell riuscita.
-
Conferma dell'applicazione di Terraform riuscita.
Passi successivi
Questa esercitazione ha mostrato come automatizzare le distribuzioni degli stack di OCI Resource Manager con OCI DevOps. Questo è un semplice esempio che mostra il flusso di base. Sei incoraggiato a prendere i concetti appresi e a svilupparli, personalizzarli in base al tuo caso d'uso e incorporarli nelle pipeline CI/CD esistenti.
Collegamenti correlati
Conferme
- Autori - Cody Brinkman (Cloud Architect), Qian Chen (membro dello staff tecnico, OCI Developer Tools & Services) e Nandan Kandregula (Software Development Manager, OCI Developer Tools & Services)
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.
Use Oracle Cloud Infrastructure DevOps to Automate OCI Resource Manager Deployments
G16601-01
October 2024