Aller au contenu

Gérer les projets rundeck avec Terraform

logo terraform

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.

terraform rundeck token

Ç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].

terraform rundeck token

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 :

Terminal window
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.

terraform rundeck project

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 :

Terminal window
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.

terraform rundeck project

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.