2016-09-28 44 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 

然而,随着康斯坦丁指出,这不是处理你正在尝试做一个理想的方式。

相关问题