Renovate gère les dépendances d'Ansible
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.
Maintenant je construis la configuration Renovate avec la [regex](/docs/developper/expressions-regulieres/ 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.
Je crée la configuration renovate.json pour le repository rundeck. Je pousse dans le repo.
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.
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
.
Je relance et hop j’ai bien mes issues de créer :
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.