Remarques :
- Ce tutoriel nécessite un accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, reportez-vous à Introduction au niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les informations d'identification, la location et les compartiments Oracle Cloud Infrastructure. Lorsque vous terminez votre atelier, remplacez ces valeurs par celles propres à votre environnement cloud.
Utilisation d'Oracle Cloud Infrastructure DevOps pour automatiser les déploiements OCI Resource Manager
Introduction
Oracle Cloud Infrastructure (OCI) Resource Manager est un service entièrement géré qui aide les équipes à gérer et à automatiser leur infrastructure en tant que code (IaC). Elle permet aux équipes de collaborer sur la configuration Terraform, de définir les droits d'accès sur diverses actions, de prévoir une verrouillage de l'état pour éviter toute altération, de stocker automatiquement tous les fichiers d'état dans un stockage persistant et de configurer le fournisseur Terraform. Pour la livraison et le déploiement de tous les logiciels, et pas seulement de Terraform, il existe OCI DevOps, une plate-forme d'intégration continue/de livraison continue de bout en bout pour les développeurs disposant de référentiels de code privés, de déclencheurs, de pipelines de build et de déploiement, etc.
OCI Resource Manager a intégré l'automatisation pour Terraform et les intégrations à plusieurs systèmes de contrôle de code source pour réaliser l'intégration continue et le déploiement continu de base. Dans ce tutoriel, nous allons voir comment utiliser OCI DevOps pour étendre ces fonctionnalités d'intégration continue et de déploiement continu en redéployant automatiquement les piles OCI Resource Manager sur les modifications de code Terraform.
Flux
Le processus commence par l'envoi d'une nouvelle configuration Terraform vers le référentiel de code, ce qui déclenche les pipelines de build et de déploiement. Cela entraîne la création d'un environnement shell qui utilise l'interface de ligne de commande OCI pour appliquer la pile OCI Resource Manager à la nouvelle configuration.
Objectifs
- Redéployez automatiquement une pile OCI Resource Manager lors des modifications de Terraform.
Tâche 1 : configuration du référentiel de code OCI DevOps
-
Connectez-vous à la console OCI, accédez à Services de développeur, à DevOps, à Projets et créez un projet DevOps qui contiendra toutes les ressources de votre workflow CI/CD.
-
Créez un référentiel de code et téléchargez la configuration Terraform. Vous pouvez utiliser de nombreux modèles fournis par Oracle. Dans ce tutoriel, Terraform modifie simplement la description d'une rubrique Notifications 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." }
Tâche 2 : créer un artefact de shell
Nous devons d'abord créer l'artefact utilisé dans le pipeline de déploiement. Comme nous allons exécuter un script shell pour exécuter l'interface de ligne de commande OCI, créez un artefact de type Spécification de commande. Dans ce tutoriel, nous allons utiliser la source d'artefact pour être en ligne avec les commandes suivantes :
version: 0.1
component: command
timeoutInSeconds: 1200
steps:
- type: Command
timeoutinSeconds: 900
name: Invoke RMS
command: |
echo "Running RM apply command"
Pour plus d'informations sur la syntaxe et les paramètres supplémentaires, reportez-vous à la documentation sur les spécifications de commande. Nous ajouterons plus de détails à ce script ultérieurement.
Tâche 3 : créer un pipeline de déploiement
Les pipelines de déploiement sont utilisés pour déployer des artefacts.
-
Créez un pipeline de déploiement et une phase de type Shell.
-
Cliquez sur Sélectionner un artefact et sélectionnez l'artefact créé dans la tâche 2. Sélectionnez la forme et la configuration réseau qui répondent à vos exigences.
Remarque : Stratégies : lors de la création de phases, la liste des stratégies recommandées sera liée. Veillez à les ajouter. En outre, notre pipeline de déploiement interagira avec OCI Resource Manager et OCI Notifications. Veillez donc à accorder à votre groupe dynamique l'accès à
ons-topics
,orm-stacks
etorm-jobs
. Pour plus d'informations sur la liste complète des droits d'accès pour chaque service, reportez-vous à Référence de stratégie.
Tâche 4 : création d'un pipeline de build
Bien que nous ne construisions aucun artefact, nous avons toujours besoin d'un pipeline de build pour déclencher notre pipeline de déploiement.
-
Créez un pipeline de build et une phase de type Déclencher le déploiement.
-
Cliquez sur Sélectionner un pipeline de déploiement et sélectionnez le pipeline que vous avez créé dans la tâche 3.
Tâche 5 : créer un déclencheur
Nous devons créer un déclencheur qui appelle lors des transmissions de code.
-
Accédez à Déclencheurs et cliquez sur Créer un déclencheur.
-
Sur la page Créer un déclencheur, saisissez les informations suivantes.
- Connexion source : entrez référentiel de code OCI.
- Sélectionner un référentiel de code : sélectionnez le référentiel créé dans la tâche 1.
-
Cliquez sur Ajouter une action et entrez les informations suivantes.
- Pipeline de build : sélectionnez le pipeline de build créé dans la tâche 4.
- Evénement : sélectionnez Push.
- Conditions d'exécution de build : entrez-les en fonction de votre cas d'emploi. Dans cet exemple, nous entrerons les informations suivantes.
- Branchement source : entrez main.
- Fichiers à inclure : entrez main.tf.
Tâche 6 : tester le flux
Voici le flux de travail que nous avons suivi jusqu'à présent dans le tutoriel.
- Transmission de code.
- Déclencheur.
- Pipeline de build.
- Pipeline de déploiement.
- Le script shell exécute
echo "Running RM apply command"
.
Confirmez le fonctionnement du workflow avant d'ajouter plus de complexité au script shell.
-
Propager le nouveau code.
-
Confirmez le déclenchement du pipeline de build.
-
Confirmez le déclenchement du pipeline de déploiement.
-
Confirmer l'exécution du script shell
Tout fonctionne comme prévu. La dernière tâche consiste à remodeler notre script shell pour déclencher la pile Resource Manager.
Tâche 7 : modification du script shell pour déclencher la pile Resource Manager
L'exécution d'image de conteneur de préparation de shell inclut des interpréteurs de shell, des utilitaires de shell, des CLI et bien d'autres outils. Pour plus d'informations, reportez-vous à Détails de l'exécution de l'image de conteneur de shell.
Nous tirerons parti de l'interface de ligne de commande OCI pour appeler Resource Manager. Notre script shell ressemble actuellement à ceci :
version: 0.1
component: command
timeoutInSeconds: 1200
steps:
- type: Command
timeoutinSeconds: 900
name: Invoke RMS
command: |
echo "Running RM apply command"
Pour modifier le script shell, procédez comme suit :
-
Créer un travail.
Le premier appel que nous allons faire est
create-apply-job
. Cela crée un travail d'application sur notre pile Resource Manager. Nous enregistrerons également le fichierjob_id
du travail en tant que variable pour référencer le travail à l'étape suivante.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)
Pour plus d'informations, reportez-vous à Référence de commande de l'interface de ligne de commande OCI : create-apply-job.
-
Obtenir le statut du travail.
Nous devons vérifier si le travail a réussi ou échoué. Pour ce faire, nous transmettons
job_id
àjob get
, qui renvoie les propriétés du travail. Plus précisément, nous prenons soin delifecycle-state
.job_state=$(oci resource-manager job get --job-id $job_id --raw-output --query 'data."lifecycle-state"')
Pour plus d'informations, reportez-vous à Référence de commande de l'interface de ligne de commande OCI : job get.
-
Analysez le statut du travail.
Ajoutez une logique pour modifier le code de sortie selon que le travail a réussi (0) ou échoué (1).
if [ $job_state == SUCCEEDED ]; then echo "Resource Manager job succeeded" exit 0 else echo "Resource Manager job failed" exit 1 fi
-
Après avoir agrégé les étapes précédentes et ajouté des instructions print supplémentaires, votre script shell doit ressembler à ceci :
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
Remarque : Il s'agit d'un exemple simple montrant les fonctionnalités de base. Vous pouvez personnaliser le script en fonction de vos besoins.
Tâche 8 : Test de bout en bout
Votre architecture et votre flux complets doivent ressembler à ceci :
Confirmer le fonctionnement de l'architecture.
-
Propager le nouveau code.
-
Confirmez que le script shell s'exécute correctement.
-
Vérifiez que Terraform a été appliqué.
Etapes suivantes
Ce tutoriel a montré comment automatiser les déploiements de pile OCI Resource Manager avec OCI DevOps. Voici un exemple simple montrant le flux de base. Nous vous encourageons à prendre en compte les concepts appris et à les développer, à les adapter à votre cas d'emploi et à les intégrer à vos pipelines CI/CD existants.
Liens connexes
-
Référence des commandes de l'interface de ligne de commande OCI : create-apply-job
-
Référence des commandes de l'interface de ligne de commande OCI : job get
Remerciements
- Auteurs - Cody Brinkman (architecte cloud), Qian Chen (membre du personnel technique, des outils et services de développement OCI) et Nandan Kandregula (responsable du développement logiciel, des outils et services de développement OCI)
Ressources de formation supplémentaires
Explorez d'autres ateliers sur docs.oracle.com/learn ou accédez à d'autres contenus de formation gratuits sur le canal Oracle Learning YouTube. De plus, visitez le site education.oracle.com/learning-explorer pour devenir un explorateur Oracle Learning.
Pour obtenir la documentation produit, consultez le site Oracle Help Center.
Use Oracle Cloud Infrastructure DevOps to Automate OCI Resource Manager Deployments
G16600-01
October 2024