2016-09-28 51 views
0

我想這樣註冊變量:如何從包含測試語句的shell命令註冊變量? (雙括號)

- 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'不是你目標主機上的默認shell,所以'[[''不可用。說實話,這個任務是Ansible的反模式。 –

回答

0

sh是shell模塊的默認shell。你需要做到以下幾點:

- 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 

然而,隨着康斯坦丁指出,這不是處理你正在嘗試做一個理想的方式。

相關問題