2017-09-22 4 views
0

ansible_mountsのカスタム最小サイズで存在するようなので、辞書の配列である -最も簡単な非シェルウェイ各

"ansible_mounts": [ 
     { 
      "device": "/dev/mapper/vg_centos67template-lv_root", 
      "fstype": "ext4", 
      "mount": "/", 
      "options": "rw", 
      "size_available": 8806977536, 
      "size_total": 37458894848, 
      "uuid": "N/A" 
     }, 
     { 
      "device": "/dev/sda1", 
      "fstype": "ext4", 
      "mount": "/boot", 
      "options": "rw", 
      "size_available": 369055744, 
      "size_total": 499355648, 
      "uuid": "N/A" 
     }, 
    ], 

Iの特定のセットを確認する必要があります最小サイズのマウントポイントが存在します。私はこのためのデータ構造の制御を持っていますが、今も同様に、それを構造化しているため -

requiredMounts: 
- { mount: /tmp,  size_min: 2147483648, } 
- { mount: /dev/shm, size_min: 204010946560, } 

を私はgrepのようなselectattr()フィルタを使用することを期待していたが、それは利用できません。

致命的:[tstServer]:FAILED!テンプレートの文字列中にテンプレートエラー: 'selectattr'という名前のフィルタがありません。文字列:{{ansible_mounts | selectattr( 'mount'、 'equalto'、item.mount)}} "=" {"failed" }

ジンジャ2.6を使用しています。 selectattr()がそこにない理由は考えられません。
(誰もが気にならばそれは、ジェンキンス出力です。)、に失敗したときにを使用する

ハッピー、アサートwith_items、および/または他の何か)は(コンバイン、をwith_nested ;ちょうどそれをきちんとするためにかなり適切な組み合わせを見つけていない。私はむしろダースステップをとらないでください - 1つは理想的でしょう。

提案?

補遺:私は、興味深いですfail: ... when: not item.mount|is_mount

と一歩...で、かなり簡単にマウントポイントを確認することができ のでしばらくマウントポイントとして/dev/shmショーこうして(およびコマンドからdf & mountなど) ansible_mountsには含まれていません。

つまり、ファイルサイズを確認するのにansible_mountsを使用することはできません。つまり、別のwith_nested/dev/shmを使用することはできません。これは私に悲しいパンダになります。

さらに補遺:

が、私はいつものファイルシステムを通じて一般に利用可能であるポイント(/ tmp)にマウント1をチェックする必要が判明 - 最良の選択肢のansible_mountsを! - tempfs - 最も簡単なもの(/ dev/shm)はdfと思われます。これは/ tmpとoracleが管理する束を扱うこともできるので、fdiskでしか利用できません。

最後に、システムごとに12個のドライブをチェックする必要がありますが、/ tmpはansible_mountsで利用できる唯一のドライブです。それが言われている、私の質問は、私がそれを尋ねたやりかたには疑問になる。...

ありがとう。

答えて

0

なぜJinja2を更新しないのですか?documentationから

:バージョン2.7で

selectattr()新しいです。

+0

他のさまざまな取り組みの中で試しました。どのようにこの環境で正確に把握していない。 '要件は既に​​満たされています:/ usr/lib/python2.6/site-packages/Jinja2-2.6-py2.6.egg' 012jaのJinja2' –

+1

'pip install Jinja2 == 2.8'? –

+0

あなたは知っている、私はその特定の構文を見つけようと少なくとも1時間を費やし、ちょうどサークルに入っていました。ありがとう! :) '{{ansible_mounts}}はまだ私の'/dev/shm'マウントを表示していないので、サイズを確認する別の方法を見つける必要があります。 :( –

0

最初の部分への回答があります。

- name: testing for required mount points 
    fail: 
    msg: "{{ item.mount }} must be a mount point" 
    when: not item.mount|is_mount 
    with_items: "{{ requiredMounts }}" 

しかし、マウントポイントサイズをgitするには、シンプルで信頼できるスクリプト以外の方法があります。 {{ ansible_mounts }}は私の共有メモリ/dev/shmマウントを表示せず、他にサイズを与えてくれません。

マウントがdfに表示されていないのはなぜですか?

シェル呼び出しなしでマウントポイント割り当てにアクセスする別の方法はありますか?短いスクリプトを使用して

は、私はこれを行うことができます -

- name: check mount point space allocation 
    shell: df -B 1 {{ reqMount.mount }} | grep {{ reqMount.mount }} | { read x siz x; echo $siz; } 
    register: mountStat 

- name: Confirm mount point minimum size 
    fail: 
    msg: "mountpoint '{{ reqMount.mount }}' of {{ mountStat.stdout }} bytes must be at least {{ reqMount.size_min }} bytes." 
    when: mountStat.stdout|int < reqMount.size_min|int 

...しかし、私は、私はおそらくがへのコメントのいくつかのラインを持っているべきだと思うのスクリプトのビットを使用する必要が好きではありません説明する。 (私はawkのを言及する気になら私は汚い感じさせる?)

はまたpartedモジュールを試してみましたが、私の論理的なマウントポイントは、ファイルシステムのディレクトリです、と私は簡単に私のディレクトリごとにパーティションを与えるdfが、何も表示されません。とにかく私がそれを呼んでいるならば、ステップを追加する理由はほとんどありません。

補足として、ansible_mountsが表示されない理由は、おそらくtmpfsのためです。少なくとも誰かを助けてくれることを願っています。

関連する問題