Provisioning sur OCI : Utiliser Resource Manager (1/2)

Introduction

Resource Manager est un service OCI facilitant l’automatisation du process de provisioning de toutes vos ressources OCI.

Se basant sur Terraform, Resource Manager permet donc l’installation, la configuration et la gestion de vos ressources via des templates. Ce provisioning peut s’effectuer, soit en passant par l’interface d’OCI, soit en ligne de commande avec un client OCI (OCI CLI, REST API…).

Je vous propose, dans cet article, de découvrir le fonctionnement de Resource Manager et d’installer le « Oracle Cloud Development Kit » fourni par Oracle avec cet outil.

 

Que permet Resource Manager sur OCI ?

Voici les principales fonctionnalités de Resource Manager sur OCI :

  • Le déploiement de ressources : Resource Manager permet de déployer n’importe quel type de ressources OCI (Network, Compute, Security, …). Les déploiements peuvent s’effectuer de manière répétitive depuis un template (pour créer un ensemble de ressources de même type par exemple).
  • L’organisation des ressources à déployer : Il est possible de gérer le provisioning de différentes ressources dans un même job. Ainsi, vous pouvez déployer une « application » avec son réseau, ses règles de sécurité, ces instances de compute, … avec une seule action (pratique pour monter un environnement de A à Z).
  • La création de templates : Resource Manager permet de définir des templates pour chaque besoin. Cela facilite l’industrialisation de vos déploiements.
  • L’intégration avec Terraform : Resource Manager bénéficie de la puissance et les fonctionnalités du langage HashiCorp Configuration Language (HCL).
  • Pas de facturation : Resource Manager n’est pas payant. Il est également disponible pour des comptes « Free-Tier ». Bien évidemment, la facturation des ressources déployées ne change pas.
  • Service entièrement managé : Pas besoin de mettre en place une configuration particulière (installer des providers), Resource Manager s’intègre aux services déjà existant sur OCI (Tagging, IAM).

 

Quelques notions importantes

Voici des notions très importantes qu’il est nécessaire d’aborder dans le cadre de l’utilisation de Resource Manager :

    • Configuration : Une configuration Terraform codifie votre infrastructure et stocke la configuration sous la forme de fichiers au format HCL ou JSON.
    • Configuration source provider : Il s’agit du point d’entrée pour interagir avec l’infrastructure (accès à OCI).
    • Stack : Un stack est une collection de ressources OCI qui sont créées dans un compartiment. Chaque stack a sa propre configuration (sous formes de fichiers Terraform).
    • Drift : C’est la différence entre l’état actuel de l’infrastructure et la dernière exécution du stack.
    • Job : C’est un ensemble d’instruction jouées pour appliquer une configuration Terraform. Il ne peut y avoir qu’un seul job s’exécutant à la fois pour un stack. Il existe différents types de jobs :
      • Plan : Ce job analyse le fichier de configuration Terraform d’un stack et crée un plan d’exécution avec les instructions pour provisionner les ressources sur OCI.
      • Apply : Ce job applique le plan d’exécution pour créer les ressources sur OCI.
      • Destroy : Libère les ressources associées à un stack.
      • Import State : C’est un job utilisé pour migrer des environnements locaux Terraform vers Resource Manager.
      • Les jobs peuvent prendre également les états suivants (Accepted, In Progress, Failed, Succeeded, Canceling, Canceled).
  • Module : Il s’agit d’un groupe de ressources.
  • Package : C’est un fichier Zip contenant une configuration Terraform.
  • Resource discovery : C’est une fonctionnalité permettant la récupération des ressources déployées sous forme de configuration Terraform.
  • Sample solution : Ce sont des configurations Terraform déjà prédéfinies dans Resource Manager pour certains types de déploiements.

 

Workflow

Voici le workflow général d’un déploiement sous Resource Manager (source : Oracle) :

 

Installation du Oracle Cloud Development Kit

L’Oracle Cloud Development Kit est un kit de développement déjà préinstallé dans une instance et configuré pour votre tenant OCI.
Cette instance est fournie avec les outils ci-dessous :

  • OCI Command line interface (OCI CLI)
  • Terraform provider
  • Ansible & OCI modules
  • Go, Java, Python SDKs
  • Git

Dans cette instance, il y aura donc tout le matériel nécessaire pour créer, gérer, déployer des configurations Terraform.

Voyons comment installer cet kit via Resource Manager :

    • Connectez-vous sur l’interface OCI, ouvrez le menu « Resource Manager > Stacks » et cliquez sur « Create Stack« 
    • Sur la page « Stack Information« , choisissez l’option « SAMPLE SOLUTION« 
    • Dans la fenêtre « Stack Configuration« , cliquez sur « Select Solution« 
    • Dans l’onglet « Architecture« , choisissez « Oracle Cloud Development Kit« 

    • Renseignez le compartiment où vous souhaitez créer le stack, puis cliquez Sur « Next« .

    • Dans la fenêtre « Configure Variables« , choisissez le shape pour votre instance et générez les clefs SSH. Puis cliquez sur « Next« .

    • Dans la page « Review« , vérifiez les informations affichées puis cliquez sur « Create« .

    • Retournez sur la page « Stacks » pour vérifier que votre Stack a bien été créé.

    • Sur la page « Stack Details« , cliquez sur « Terraform Actions » puis sur « Apply » afin de lancer la création de l’instance.

    • Dans le détail du job associé à votre stack, vous pouvez vérifier qu’il va bien passer à l’état « Succeeded« .

    • Dans l’onglet « Application Information« , relevez bien l’adresse IP publique et la clef SSH privée qui servira à la connexion à l’instance.

Dans cette première partie, nous venons donc de réaliser l’installation du Oracle Cloud Development Kit via le Resource Manager dont nous avons pu voir le fonctionnement depuis l’interface OCI.

La prochaine fois, nous utiliserons le kit de développement de cette instance pour créer une nouvelle configuration Terraform et provisionner des ressources sur OCI.

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *