2015-11-03 2 views
23

ホストのシステムファクトを、変数のベースとして数値/パーセントを乗算して使用したいと考えています。私が具体的に何をしようとしているのは、ansible_memtotal_mbの値を使って、.80でそれを掛けてramsizeを取得し、Couchbaseの値を設定することです。私は下の行のさまざまなバリエーションを試しています。私はそれが可能であるとは確信していませんが、どんな助けも高く評価されます。不可能 - 変数値を設定するときに算術演算を使用できますか?

vars: 
    ramsize: '"{{ ansible_memtotal_mb }}" * .80' 
+1

?それがテンプレートの中にある場合は、Jinjaフィルタリングを直接使用してこれを行うことができます。残念なことに、テンプレートの外部は、Jinjaフィルタのリストを削除してサポートしているだけで、乗算はそれでカバーされていないと思います。 – ydaetskcoR

+0

これは、プレイブックにあります。別のテンプレートにはありません。 – AValenti

+0

はい、どのように変数を使用しますか? – ydaetskcoR

答えて

38

あなたは本当に近いです!計算を使っていくつかのデフォルトのJavaメモリサイズを設定します。これはあなたがやっているのと似ています。ここでは例です:

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

THINGS-最初のカップルを示すこと、それはjinja mathを使用しますので、{{ jinja }}内部の計算を行います。次に、intabsは、結果が符号なし整数であることを保証します。あなたのケースでは

、正しいコードは次のようになります。

あなたがこれを使用しようとしている
vars: 
    ramsize: "{{ ansible_memtotal_mb * 0.8 }}" 
+2

助けてくれてありがとう。私の最終的な解決策はあなたの例に非常によく似ていました。私は10進数の前に0を入れなければなりません。また、変数定義は二重引用符で囲む必要がありました。私は整数値が欲しかったし、それが絶対値であることを確認するために傷ついていません。 ramsize: "{{(ansible_memtotal_mb * 0.8)| int | abs}}" – AValenti

関連する問題