Ansible-puis-je utiliser l'arithmétique lors de la définition d'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 pour définir une valeur Couchbase. J'ai essayé différentes variantes de la ligne ci-dessous. Je ne suis jamais sûr que ce soit possible, mais toute aide serait appréciée.

vars:
  ramsize: '"{{ ansible_memtotal_mb }}" * .80'
33
demandé sur tedder42 2015-11-03 20:30:43

1 réponses

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

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

Cela montre quelques choses-d'abord, il utilise Jinja math , alors faites 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 }}"
49
répondu tedder42 2017-10-13 18:18:36