我有一个deploy.sh
脚本,我调用它来触发使用ansible的部署任务。在简化形式中,这是由deploy.sh
DEPLOY_CMD="ansible-playbook -i hosts/$1 deploy.yml --extra-vars="site=$2 theme=$3""
这是任务的一个片段:
project_pre_build_commands_local:
- path: "{{ project.local_path }}/web/app/themes/{{ theme }}"
cmd: npm install
- path: "{{ project.local_path }}/web/app/themes/{{ theme }}"
cmd: bower install
- path: "{{ project.local_path }}/web/app/themes/{{ theme }}"
cmd: gulp --production
不幸的是,shell出错了:
msg:无法更改到目录 “/家/ ltarasiewicz的/ dev /基岩堆栈/基岩ansible / {# project.local_path#} / web / app / themes / {#theme#}':path确实如此 不存在
我传递给theme
的{{1}}变量是'cpkg'。指定的目录存在。更重要的是,如果我定义路径,如:
deploy.sh
(摆脱- path: "{{ project.local_path }}/web/app/themes/cpkg"
变量),一切顺利 - 过程完成且没有错误。
我真的很困惑。非常感谢您的建议。
答案 0 :(得分:3)
DEPLOY_CMD
中的引号存在问题。
当您在echo $DEPLOY_CMD
脚本中deploy.sh
时,您会看到类似这样的内容:
ansible-playbook -i hosts/ deploy.yml --extra-vars=site=
变量不包含您的参数。
要解决此问题,您可以改为使用单引号:
DEPLOY_CMD="ansible-playbook -i hosts/$1 deploy.yml --extra-vars='site=$2 theme=$3'"