我试图像这样注册变量:
- 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
当我在shell中运行此命令时,它工作正常,但从ansible运行它会返回错误:
"stderr": "/bin/sh: 1: [[: not found"
我应该如何逃脱它?
答案 0 :(得分: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
然而正如康斯坦丁指出的那样,这不是处理你想要做的事情的理想方式。