2017-05-19 5 views
2

私は新しく、現在リモートマシンのディスクスペースが70%のしきい値に達しているかどうかを確認するプレイに取り組んでいます。彼らがそれに達しているなら、それは誤りを投げるべきです。変数として言及されたマウントについてディスクスペースを確認することができます

私はで良い例が見つかりました:Using ansible to manage disk space

が、この例では、マウント名は、ハードコーディングされています。そして、私の要件はそれらを動的に渡すことです。だから私は動作しないように思われたコードの下に書いている:私が使用している場合

name: test for available disk space 
    assert: 
    that: 
    - not {{ item.mount == '{{mountname}}' and (item.size_available < 
    item.size_total - (item.size_total|float * 0.7)) }} 
    with_items: '{{ansible_mounts}}' 
    ignore_errors: yes 
    register: disk_free 

    name: Fail the play 
    fail: msg="disk space has reached 70% threshold" 
    when: disk_free|failed 

この遊びは動作します:

item.mount == '/var/app' 

は、動的にmountnameを入力する方法はありますか?複数のマウント名を入力できますか?

私は事前にansible 2.3

RHELに感謝を使用しています:)

答えて

2

これを試してみてください:

name: Ensure that free space on {{ mountname }} is grater than 30% 
assert: 
    that: mount.size_available > mount.size_total|float * 0.3 
    msg: disk space has reached 70% threshold 
vars: 
    mount: "{{ ansible_mounts | selectattr('mount','equalto',mountname) | list | first }}" 
  1. thatは、生Jinja2の式で、中括弧を使用しないでくださいその中に。

  2. なぜassertがメッセージで失敗する場合は、別のfailタスクを使用しますか。

+0

こんにちは、あなたの助けに感謝が、それは以下のエラーで失敗しました: **ファイル "/usr/lib/python2.7/site-packages/jinja2/environment.py"、ライン 438、中call_test raise TemplateRuntimeError( '%r'%nameという名前のテストなし) TemplateRuntimeError: 'equalto'という名前のテストなし** _ fatal:[10.0.230.188]:FAILED! " "失敗 ":true、 msgstr"モジュール実行中に予期しないエラーが発生しました "、 " stdout ":" " } _ –

+0

私のシステムのデフォルトのpythonは2.7です。私はいくつかのチェックを行ったが、ジンジャの問題ではないと思われたが、この[link](https://github.com/ansible/ansible/issues/10123) –

+0

を修正してjina2を修正しました。あなたの助けを借りてありがとう:コミュニティーの他の人々のために**私はジンジャー2のバージョンを** sudo pip install Jinja2 == 2.8 **を使って修正しました –

関連する問題