2017-09-20 6 views
0

J'utilise le template jinja2 pour installer/mettre à jour les paquets.Comparer les numéros de version en utilisant jinja2

La logique définissait une variable pour la version installée actuelle et la comparait avec la version disponible. Cela fonctionnait bien mais une fois que nous sommes passés à 10.x, la comparaison a cessé de fonctionner.

Est-il possible de lancer la variable afin qu'elle puisse identifier correctement 10.9.8 est supérieur à 9.8.7?

Merci

current_version=['9.8.7']

{% if current_version < '10.9.8' %}

+0

Je suppose que je peux essayer d'enlever les points et les jeter en entier, puis comparer. Comment procéder pour supprimer des points dans jinja2? – BBDG

+0

J'ai fini par utiliser! = Pour comparer la chaîne de version installée à la version que je veux installer sur le serveur. – BBDG

+0

Copie possible de [Comment comparer les chaînes de version dans les fichiers SLS salt] (https://stackoverflow.com/questions/45701907/how-to-compare-version-strings-in-salt-sls-files) – ceving

Répondre

3

Il y a un test spécial version_compare:

{% if current_version | version_compare('10.9.8', '<') %} 

current_version doit être une chaîne (il est une liste dans votre exemple).

+0

Très bien à connaître. Ce cas d'utilisation spécifique est déployé avec salt-stack. Apparemment, le filtre "version_compare" n'est pas implémenté dans salt-stack. Merci pour votre réponse. – BBDG

+4

Pourquoi avez-vous mis la balise 'ansible' dans ce cas? –