マウントポイントが/ dev / backboot> 70%の場合は「High」に設定し、< 70%の場合は「Normal」に設定し、マウントポイントがまったくない場合は「Unavailable」に設定します。
以下の例は2つのオプションで動作しますが、3つのオプションが必要です。提案してもらえますか?
- 名前:使い方インポート
コマンド:df -k | grep -i /dev/backboot | grep -i /dev/backboot
| :
たとえば、登録された値 'usage.stdout'を使用した出力は67%です。
- 名前: 値の設定
set_fact:
mspace: "{{ (usage.stdout | int < 80) | ternary('Normal','High') }}"
答え1
intに変換しても67%
生成されません67
。なぜなら、出力からそれを削除する必要がある0
からです。%
not available
あなたの質問については、/ dev / backbootが存在しない場合に変数を設定する条件を設定できます。
- stat:
path: /dev/backboot
register: backboot
- set_fact:
mspace: 'not available'
when: backboot.stat.exists != true
- block:
- command: df -k | grep -i /dev/backboot | awk '{print $5}'
register: usage
- set_fact:
mspace: "{{ (usage.stdout | int < 80) | ternary('Normal','High') }}"
when: backboot.stat.exists == true
答え2
Ansible 2.8にはnullの3番目のオプションがあります。私はまだ試していませんが、マウントポイントがないときにsetfactにエラーがないことに少し驚きました。
別のオプションは、2番目のsetfactを追加し、既存のsetfactと新しいsetfactの両方にwhenを追加して、マウントポイントのAnsible事実を確認することです。元のセットは mspace があれば設定し、他のセットは mspace を設定します。存在しません。これと似ています(ansibleバージョンと実行中のシステムによっては若干変更されることがあります)。
set_fact: mspace: "使用できません" 次の場合: (ansible_devices.backboot が定義されていません)
元のセットファクトに追加されました。
タイミング:(ansible_devices.backbootが定義されています)
利用可能な事実がある場合、ansibleはdfコマンドを実行しなくても使用できます。