Aller au contenu principal

Gérer les projets rundeck avec Terraform

· 3 minutes de lecture
Stéphane ROBERT
Consultant DevOps

On trouve des providers Terraform pour pas mal de produits, mais j'ai été surpris d'en trouver un pour gérer les projets Rundeck. Ce provider permet de gérer les acls, les projets, les jobs et les clés SSH.

Je vous propose de le tester sur le rundeck de mon home lab Devops.

Création du token sur Rundeck

La première chose a créé est le token autorisant terraform à se connecter à rundeck. Là on n'a pas d'autre choix que de le créer via l'interface d'administration de rundeck.

Ça se passe dans le profil de l'utilisateur, cliquer en haut à droite de l'UI de rundeck sur l'icône en forme de personne puis profil. Maintenant cliquez sur le signe [+] à côté de [Jetons d'API Utilisateur]. Laissez tout par défaut et cliquer sur le bouton [Générer un nouveau jeton].

Copiez le token et conservez-le quelque part au chaud.

Gestion d'un projet Rundeck avec Terraform

Création d'un job rundeck avec Terraform

Dans un dossier vide, créer un fichier main.tf avec ceci :

terraform {
  required_providers {
    rundeck = {
      source  = "rundeck/rundeck"
      version = "0.4.2"
    }
  }
}

provider "rundeck" {
  url         = "https://rundeck.robert.local/"
  api_version = "38"
  auth_token  = "NAhiP4ProOdzPE81F0oJWJwkwQc8eMUJ"
}

resource "rundeck_private_key" "terraform" {
  path         = "terraform/id_ed25519"
  key_material = file("~/.ssh/id_ed25519")
}

resource "rundeck_project" "terraform" {
  name        = "terraform"
  description : "Sample Project Created with Terraform"
  ssh_key_storage_path = "${rundeck_private_key.terraform.path}"
    resource_model_source {
    type = "local"
    config = {
      description : "Rundeck server node"

    }
  }
  extra_config = {
    "project.label" = "Terraform Project"
  }
}

On teste la connection :

terraform init

Initializing the backend...

Initializing provider plugins...
- Finding rundeck/rundeck versions matching "0.4.2"...
- Installing rundeck/rundeck v0.4.2...
- Installed rundeck/rundeck v0.4.2 (signed by a HashiCorp partner, key ID 685E39BEDBC13E42)

....

terraform apply -auto-approve                                          Py ansible2 3.9.7 vagrant@devbox 14:26:33

Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  # rundeck_private_key.terraform will be created

...

Plan: 2 to add, 0 to change, 0 to destroy.
rundeck_private_key.terraform: Creating...
rundeck_private_key.terraform: Creation complete after 1s [id=terraform/id_ed25519]
rundeck_project.terraform: Creating...
rundeck_project.terraform: Creation complete after 2s [id=terraform]

Apply complete! Resources: 2 added, 0 changed, 0 destroyed.

Un petit tour dans l'interface de rundeck.

On a bien un projet terraform créé.

Création d'un job rundeck avec Terraform

Maintenant essayons de créer un job dans ce projet. A la fin de votre fichier Terraform ajoutez-y ceci :

resource "rundeck_job" "testjob" {
  name              = "Job Test"
  project_name      = "${rundeck_project.terraform.name}"
  description       = "A simple commande"

  command {
    shell_command = "ls /etc"
  }
}

On applique :

terraform apply -auto-approve

rundeck_job.testjob: Creating...
rundeck_job.testjob: Creation complete after 4s [id=523bf123-914d-4fbd-b965-bab692592be5]

Petit tour dans l'interface de Rundeck. Le job a bien été créé. On teste, ça fonctionne.

Je fais un petit tour dans la documentation et c'est plutôt succinct. Y a du travail pour découvrir toutes les possibilités offertes par ce provider.