Note :

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

Diagramme de 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

Tâche 1 : Configurer le référentiel de code OCI DevOps

  1. 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.

  2. 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."
    }
    

    Configuration de l'avis initial

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"

Créer un artefact d'interpréteur de commandes

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.

  1. Créez un pipeline de déploiement et une étape de type Shell.

    Créer une étape d'interpréteur de commandes

  2. 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.

    Sélectionner un artefact

    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 et orm-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.

  1. Créez un pipeline de compilation et une étape de type Déclencher le déploiement.

    Créer une étape de création

  2. Cliquez sur Sélectionner un pipeline de déploiement et sélectionnez le pipeline que vous avez créé dans la tâche 3.

    Sélectionner un pipeline de déploiement

Tâche 5 : Créer un déclencheur

Nous devons créer un déclencheur qui appelle sur les poussées de code.

  1. Naviguez jusqu'à Déclencheurs et cliquez sur Créer un déclencheur.

  2. 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.
  3. 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.

    Créer un déclencheur

Tâche 6 : Tester le flux

Voici le flux de travail que nous avons suivi jusqu'à ce point dans le tutoriel.

  1. Code push.
  2. Déclenchement.
  3. Pipeline de compilation.
  4. Pipeline de déploiement.
  5. 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.

  1. Pousser un nouveau code.

    Code poussé

  2. Confirmer le pipeline de compilation déclenché.

    Compilation en cours

  3. Confirmer le pipeline de déploiement déclenché.

    Déploiement en cours

  4. Confirmer l'exécution du script d'interpréteur de commandes

    Succès du flux de test

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 :

  1. 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 valeur job_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.

  2. 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.

  3. 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
    
  4. 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 :

Diagramme de flux

Confirmez le fonctionnement de l'architecture.

  1. Pousser un nouveau code.

    Code poussé

  2. Confirmer l'exécution du script d'interpréteur de commandes.

    Succès de Shell

  3. Confirmez que Terraform a été appliqué.

    Sujet d'avis mis à jour

É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.

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.