Loading search data...

HomeLab - Mise à jour des versions dans les playbooks Ansible avec Renovate

Dans ma première utilisation de Renovate au sein de mon Home Lab Devops, je me limitais à la mise à jour des dépendances dans la construction des images docker. Mais voilà j’utilise pas mal de playbooks Ansible pour installer des applications sur des VM.

J’ai ajouté le repository du playbook de rundeck, mais pas d’issue crée. Mais comment gérer ce versionning avec renovate ?

Ajouter des fichiers non pris en charge par Renovate

Renovate possède un nombre impressionnant de paramètres, je vous envoie vers sa documentation pour vous en rendre compte.

En fouillant dans les configurations de renovate sur github, j’ai remarqué l’utilisation de l’option regexManagers. Cette option permet d’étendre l’analyse de fichier non pris en charge par Renovate.

J’ai donc testé ce mécanisme sur le playbook. Pour que cela fonctionne, il faut ajouter dans le playbook Ansible des informations indiquant à Renovate ou chercher les informations sur les versions.

  • datasource : la source du versioning les tags ou releases github mais il en existe d’autres
  • depName : dans le cas de github le nom du repository
  • currentValue : la version actuelle

Il faut absolument que la version que vous utilisez dans votre playbook Ansible corresponde à celle déclaré sur le repository.

Par exemple pour rundeck on doit télécharger une version 3.4.10-20220118 mais voila la release sur github est égale à v3.4.10. Il faudra donc ajouter une tache pour construire la version à télécharger. Je n’ai pas trouvé pour le moment le moyen de récupérer la date de la release, mais j’y travaille. Donc je traite manuellement cette mise à jour. Dans le playbook j’installe également Ansible sur la VM rundeck, je l’ajoute également.

    #datasource=github-releases depName=rundeck/rundeck
    rundeck_version: 3.4.10-20220118
    #datasource=github-tags depName=ansible-community/ansible-build-data
    ansible_version: 5.5.0

Maintenant je construis la configuration Renovate avec la regexp pour qu’il trouve les informations. Les informations se trouvent sur deux lignes. Pour construire la regex je suis allé sur le site regex101. Dans Text String j’ai copié le playbook.

regex renovate ansible

Je crée la configuration renovate.json pour le repository rundeck. Je pousse dans le repo.

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:base"],
  "regexManagers": [
    {
      "fileMatch": [".*yml$"],
      "matchStrings": [
        "datasource=(?<datasource>.*)\\sdepName=(?<depName>.*)\\n.*version:\\s(?<currentValue>.*)"
      ]
    }
}

Je lance renovate-bot depuis gitlab. Et oui ca fonctionne. Renovate me créé bien une issue pour renovate mais pas ansible.

Je décide de lancer renovate depuis ma machine en activant le mode Debug.

git clone git@gitlab.com:dockerfiles6/renovate-bot.git

docker run --rm -e LOG_LEVEL=debug -v $PWD/renovate-config.js:/usr/src/app/config.js -v /home/vagrant/.ssh:/home/ubuntu/.ssh -it renovate/renovate:31.90.2-slim

Je remarque dans les traces qu’il trouve bien la nouvelle version d'ansible 5.5.0 mais il n’en tient pas compte. En fouillant dans la documentation de renovate je vois qu’il faut lui indiquer que pour la configuration github-tags il faut prendre en compte les versions major, minor et patch avec l’option packageRules.

{
  "$schema": "https://docs.renovatebot.com/renovate-schema.json",
  "extends": ["config:base"],
  "regexManagers": [
    {
      "fileMatch": [".*yml$"],
      "matchStrings": [
        "datasource=(?<datasource>.*)\\sdepName=(?<depName>.*)\\n.*version:\\s(?<currentValue>.*)"
      ]
    }
  ],
  "packageRules": [
    {
      "datasources": ["github-tags"],
      "matchUpdateTypes": ["minor", "patch", "major"]
    }
  ]
}

Je relance et hop j’ai bien mes issues de créer :

regex renovate ansible

Renovate est un super produit mais compliqué à configurer, la documentation manque de cas d’exemple. En tout cas je sais désormais étendre l’analyse de tout types de dépendances à Renovate.


Si vous avez apprécié cet article de blog, vous pouvez m'encourager à produire plus de contenu en m'offrant un café sur   Ko-Fi  . Vous pouvez aussi passer votre prochaine commande sur amazon, sans que cela ne nous coûte plus cher, via   ce lien  . Vous pouvez aussi partager le lien sur twitter ou linkedin via les boutons ci-dessous. Je vous remercie de votre soutien


Mots clés :

devops tutorials homelab

Autres Articles


Commentaires: