2017-09-07 18 views
1

oswatcherがインストールされているかどうかを確認するためのansibeプレイブックを作成しました。インストールされていない場合は、インストールします。ソフトウェアをチェックするいつでもエラーが発生する可能性があります

シェルスクリプトは

#!/bin/bash 

#Validation check that checks if oswatcher is installed 
oswatcher=$(rpm -qa | grep "^oswatcher*" || echo "not_installed") 
echo "$oswatcher" 

この劇インストールされている、ここでシェルスクリプトの出力をチェックし、出力を確認してくださいプレイをインストールするかどうか

- name: Execute script to check if oswatcher is installed 
    script: "{{ oswatch_home }}/version_details.sh" 
    register: oswatcher 

- name: Print the Output 
    debug: 
    msg: "You can think the Application is installed, it is {{ oswatcher.stdout }}" 

- include: oswatch-install.yml 
    when: oswatcher.stdout == "not_installed" 

実行しなければならない場合を検証

PLAY [integration] ******************************************************************************************************************* 

TASK [Gathering Facts] *************************************************************************************************************** 
ok: [xxxxxx] 
ok: [xxxxxx] 

TASK [app/oswatch : Execute script to check if oswatcher is installed] *************************************************************** 
changed: [xxxxx1] 
changed: [xxxxx2] 

TASK [app/oswatch : Print the Output] ************************************************************************************************ 
ok: [xxxxxx1] => { 
    "changed": false, 
    "msg": "You can think the Application is installed, it is oswatcher-7.3.3-2.el6.noarch\r\n" 
} 
ok: [xxxxxx2] => { 
    "changed": false, 
    "msg": "You can think the Application is installed, it is not_installed\r\n" 
} 

TASK [app/oswatch : create project directory "/tmp/oswatch"] ************************************************************************* 
skipping: [xxxxxx1] 
skipping: [xxxxxx2] 

論理がnot_installedと一致し、inを実行するかどうかが検証されます。ストール・プレイかどうかは、それが厄介なことを理解することができない完璧なものを印刷します。

答えて

0

タスクを以下のように変更し、目的を果たしているかどうかを確認してください。まだ動作していない場合は、-vvvでプレーブラを実行して出力を完了してください。

- include: oswatch-install.yml 
     when: "not_installed" in oswatcher.stdout 
+0

あなたが正しい は、それは、次のような動作しますが、YAMLのsyntaxingはこの ように書きます:トン「oswatcher.stdoutに 『NOT_INSTALLED』」感謝を!まだ私が使用していない状態がなぜ働かないのかは分かりません。 –

+0

ありがとうございます。私はそれに応じて私の答えの引用符を変更しました。 初期状態では、 'not_installed'が変数 'oswatcher'の値であるかどうかを検証していました。私の条件は、 'not_installed'がこの変数の一部であるかどうかをチェックします。 「oswatcher」を印刷すると、わかりやすく理解できます。 –

+0

@BinnyThomas '\ r \ n'に注意してください。それは変数値にあります。それはあなたがそれを比較した文字列にはありません。 – techraf

関連する問題