Note :
- Ce tutoriel nécessite l'accès à Oracle Cloud. Pour vous inscrire à un compte gratuit, voir Introduction à l' niveau gratuit d'Oracle Cloud Infrastructure.
- Il utilise des exemples de valeurs pour les données d'identification, la location et les compartiments Oracle Cloud Infrastructure. À la fin de votre laboratoire, remplacez ces valeurs par celles propres à votre environnement en nuage.
Utiliser Oracle Cloud Infrastructure DevOps pour automatiser les déploiements de gestionnaire de ressources pour OCI
Présentation
Le gestionnaire de ressources pour Oracle Cloud Infrastructure (OCI) est un service entièrement géré qui aide les équipes à gérer et à automatiser leur infrastructure en tant que code (IaC). Il permet aux équipes de collaborer sur la configuration Terraform, de définir des autorisations sur diverses actions, d'assurer le verrouillage d'état pour empêcher la corruption, 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, pas seulement de Terraform, il existe OCI DevOps, une plate-forme d'intégration et de déploiement continus (CI/CD) de bout en bout pour les développeurs avec des référentiels de code privés, des déclencheurs, des pipelines de compilation et de déploiement, etc.
Le gestionnaire de ressources OCI a intégré l'automatisation pour Terraform et les intégrations avec plusieurs systèmes de contrôle de code source pour l'intégration et le développement en continu de base. Dans ce tutoriel, nous verrons comment utiliser OCI DevOps pour développer ces capacités d'intégration et de développement en continu en redéployant automatiquement les piles du gestionnaire de ressources OCI sur les modifications de code Terraform.
Le Flux
Le processus commence par la poussée d'une nouvelle configuration Terraform vers le référentiel de code, qui déclenche les pipelines de compilation et de déploiement. Il en résulte la création d'un environnement d'interpréteur de commandes qui utilise l'interface de ligne de commande OCI pour appliquer la pile du gestionnaire de ressources OCI à la nouvelle configuration.
Objectifs
- Redéployer automatiquement une pile du gestionnaire de ressources OCI lors des modifications Terraform.
Tâche 1 : Configurer le référentiel de code OCI DevOps
-
Connectez-vous à la console OCI, naviguez jusqu'à Services de développement, DevOps, Projets et créez un projet DevOps qui contiendra toutes les ressources de votre flux de travail d'intégration et de développement en continu.
-
Créez un référentiel de code et chargez votre configuration Terraform. Il existe de nombreux modèles fournis par Oracle que vous pouvez utiliser. Dans ce tutoriel, Terraform modifie simplement la description d'un sujet d'avis 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 d'interpréteur de commandes
Nous devons d'abord créer l'artefact utilisé dans le pipeline de déploiement. Alors que nous allons exécuter un script d'interpréteur de commandes pour exécuter l'interface de ligne de commande OCI, créez un artefact de type Spécification de commande. Dans ce tutoriel, nous utiliserons la source d'artefact pour être insérée 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, voir la documentation sur la spécification de commande. Nous ajouterons plus de détails à ce script plus tard.
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 étape de type Shell.
-
Cliquez sur Sélectionner l'artefact et sélectionnez l'artefact créé dans la tâche 2. Sélectionnez la forme et la configuration de réseau qui répondent à vos besoins.
Note : Politiques : Lors de la création des étapes, une liste des politiques recommandées sera liée, assurez-vous de les ajouter. De plus, notre pipeline de déploiement interagira avec le gestionnaire de ressources OCI et les avis OCI. 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 autorisations pour chaque service, voir Informations de référence sur les politiques.
Tâche 4 : Créer un pipeline de compilation
Même si nous ne construirons aucun artefact, nous avons toujours besoin d'un pipeline de compilation pour déclencher notre pipeline de déploiement.
-
Créez un pipeline de compilation et une étape 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 sur les poussées de code.
-
Naviguez jusqu'à Déclencheurs et cliquez sur Créer un déclencheur.
-
Dans la page Créer un déclencheur, entrez les informations suivantes.
- Connexion source : Entrez le référentiel de code OCI.
- Sélectionner un référentiel de code : Sélectionnez un référentiel créé dans la tâche 1.
-
Cliquez sur Ajouter une action et entrez les informations suivantes.
- Pipeline de compilation : Sélectionnez le pipeline de compilation créé lors de la tâche 4.
- Événement : Sélectionnez Pousser.
- Conditions d'exécution de compilation : Entrez une valeur en fonction de votre cas d'utilisation. Dans cet exemple, nous allons entrer les informations suivantes.
- Branche source : Entrez principale.
- Fichiers à inclure : Entrez main.tf.
Tâche 6 : Tester le flux
Voici le flux de travail que nous avons suivi jusqu'à ce point dans le tutoriel.
- Code push.
- Déclenchement.
- Pipeline de compilation.
- Pipeline de déploiement.
- Le script d'interpréteur de commandes exécute
echo "Running RM apply command"
.
Confirmez le fonctionnement du flux de travail avant d'ajouter plus de complexité au script shell.
-
Pousser un nouveau code.
-
Confirmer le pipeline de compilation déclenché.
-
Confirmer le pipeline de déploiement déclenché.
-
Confirmer l'exécution du script d'interpréteur de commandes
Tout fonctionne comme prévu. La dernière tâche consiste à refaçonner notre script shell pour déclencher la pile du gestionnaire de ressources.
Tâche 7 : Modifier le script d'interpréteur de commandes pour déclencher la pile du gestionnaire de ressources
L'exécution de l'image de conteneur de l'étape d'interpréteur de commandes comprend des interpréteurs de commandes, des utilitaires d'interpréteur de commandes, des interfaces de ligne de commande et bien d'autres outils. Pour plus d'informations, voir Détails de l'environnement d'exécution de l'image de conteneur de l'interpréteur de commandes.
Nous utiliserons l'interface de ligne de commande OCI pour appeler le gestionnaire de ressources. 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 ferons est
create-apply-job
. Cela crée une tâche d'application dans la pile du gestionnaire de ressources. Nous enregistrerons également la valeurjob_id
de la tâche en tant que variable pour la référencer à 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, voir Informations de référence sur les commandes de l'interface de ligne de commande OCI : create-apply-job.
-
Obtenir le statut de la tâche.
Nous devons vérifier si la tâche a réussi ou échoué. Pour ce faire, nous transmettrons
job_id
àjob get
, qui retourne les propriétés de la tâche. Plus précisément, nous tenons àlifecycle-state
.job_state=$(oci resource-manager job get --job-id $job_id --raw-output --query 'data."lifecycle-state"')
Pour plus d'informations, voir Informations de référence sur les commandes de l'interface de ligne de commande OCI : obtention de tâche.
-
Analyser le statut du travail.
Ajoutez une logique pour modifier le code de sortie selon que la tâche a réussi (0) ou a é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 d'impression supplémentaires, votre script shell devrait 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
Note : Voici un exemple simple montrant les fonctionnalités de base. Vous pouvez personnaliser le script selon vos besoins.
Tâche 8 : Test de bout en bout
Votre architecture et votre flux complets doivent ressembler à ceci :
Confirmez le fonctionnement de l'architecture.
-
Pousser un nouveau code.
-
Confirmer l'exécution du script d'interpréteur de commandes.
-
Confirmez que Terraform a été appliqué.
Étapes suivantes
Ce tutoriel a montré comment automatiser les déploiements de pile du gestionnaire de ressources OCI avec OCI DevOps. Ceci est 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'utilisation et à les intégrer à vos pipelines d'IC/DC existants.
Liens connexes
-
Référence de commande de l'interface de ligne de commande OCI : create-apply-job
-
Référence de commande de l'interface de ligne de commande OCI : obtention de la tâche
Confirmation
- Auteurs - Cody Brinkman (architecte en nuage), Qian Chen (membre du personnel technique, outils et services pour développeurs OCI) et Nandan Kandregula (gestionnaire du développement de logiciels, outils et services pour développeurs OCI)
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.
Use Oracle Cloud Infrastructure DevOps to Automate OCI Resource Manager Deployments
G16599-01
October 2024