ansible - 通过ansible-playbook执行InstallHalyard.sh脚本时没有任何反应

时间:2017-11-21 04:39:59

标签: linux bash ansible

我试图制作一个剧本,使用ansible-playbook在远程主机上安装升降索。其中一项任务是执行" InstallHalyard.sh"包装脚本到实际的安装程序(参考:https://www.spinnaker.io/setup/install/halyard/)。

没有错误/失败,但也没有任何更改,就像没有执行InstallHalyard.sh脚本一样。但是,如果我通过输入手动命令来完成它会很好。另一个类似的任务完美无缺。

您可以看到InstallHalyard.sh脚本实现:here

对发生的事情有什么看法?

以下是我的剧本中的任务:

name: Run InstallHalyard.sh
  become: yes
  become_user: sudo
  shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh"

非常感谢任何帮助,非常感谢:)

修改

已经尝试过使用脚本,命令和shell模块。

仅供参考,InstallHalyard.sh脚本将通过传递env变量来调用自身,并且需要执行curl -O

我怀疑"出口"由于Ansible对环境变量有不同的理解,因此脚本内部的操作并不起作用。 (例如,ansible不会识别" $ HOME"而是使用" {{ansible_env.HOME}}"。)

修改

我发现脚本执行的操作是一个fork,是否可以处理这种操作?

在localhost上测试,得到了相同的结果。

这是因为对安赛的环境变量的不同解释。如果我手动执行脚本,则包装器会设置环境变量并将其传递给下一个脚本调用,这些调用无法进行。所以我要做的是在执行脚本之前用ansible模块手动设置环境var(只添加2行)

这是我修改过的任务:

name: Run InstallHalyard.sh
  become: yes
  become_user: sudo
  environment:
    HAL_USER: "{{ ansible_env.USER }}"
  shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh"

1 个答案:

答案 0 :(得分:0)

问题是我如何调试失败命令的输出。我猜测命令失败并显示有用的错误消息,但该消息未在任何地方显示。

以下是帮助调试此失败脚本的示例:

-name: Run InstallHalyard.sh
   become: yes
   become_user: sudo
   shell: "{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh"
   register: output

- debug: msg="{{ output.stdout }}"

- debug: msg="{{ output.stderr }}"

试试看看它给你的错误信息。