2016-09-28 5 views
0

私はこのような変数を登録しようとしている:test文を含むシェルコマンドから変数を登録するには? (二重の角括弧)は

- name: create database password 
    shell: chdir=/var/www/website if [[ -n "$WEBSITE_DATABASE_PASSWORD" ]]; then echo "$WEBSITE_DATABASE_PASSWORD";else bundle exec rake secret;fi 
    register: db_password 

私はシェルでこのコマンドを実行すると、それが正常に動作しますが、ansibleから、それを実行すると、エラーが返されます。

"stderr": "/bin/sh: 1: [[: not found"

どのように私はそれをエスケープする必要がありますか?

+1

私は 'bash'があなたのターゲットホストのデフォルトシェルではないと思うので、' [['is not available。そして、正直なところ、この作業はAnsibleのパターンに反しています。 –

答えて

0

shは、シェルモジュールのデフォルトのシェルです。あなたは次のことを実行する必要があります。

- name: create database password 
    shell: chdir=/var/www/website if [[ -n "$WEBSITE_DATABASE_PASSWORD" ]]; then echo "$WEBSITE_DATABASE_PASSWORD";else bundle exec rake secret;fi 
    args: 
    executable: /bin/bash 
    register: db_password 

コンスタンチンが指摘するようにしかし、これはあなたがやろうとしているものを処理するための理想的な方法ではありません。

関連する問題