web-dev-qa-db-fra.com

Ansible - Puis-je utiliser l'arithmétique pour définir une valeur de variable?

Je voudrais utiliser un fait système pour un hôte fois un nombre/pourcentage comme base pour une variable. Ce que j'essaie de faire spécifiquement est d'utiliser la valeur ansible_memtotal_mb et de la multiplier par .80 pour obtenir une taille de ram à utiliser ensuite pour définir une valeur de Couchbase. J'ai essayé différentes variantes de la ligne ci-dessous. Je ne suis pas toujours sûr que ce soit possible, mais toute aide serait la bienvenue.

vars:
  ramsize: '"{{ ansible_memtotal_mb }}" * .80'
43
AValenti

Tu es vraiment proche! J'utilise des calculs pour définir certaines tailles de mémoire par défaut Java, ce qui est similaire à ce que vous faites. Voici un exemple:

{{ (ansible_memtotal_mb*0.8-700)|int|abs }}

Cela montre quelques éléments - d’abord, il utilise jinja math , ainsi les calculs à l’intérieur du {{ jinja }}. Deuxièmement, int et abs font ce que vous attendez - assurez-vous que le résultat est un entier non signé.

Dans votre cas, le code correct serait:

vars:
  ramsize: "{{ ansible_memtotal_mb * 0.8 }}"
62
tedder42