首页 文章

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

提问于
浏览
0

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

没有错误/故障,但也没有任何改变,就像没有执行InstallHalyard.sh脚本一样 . 但是,如果我通过输入手动命令来做到这一点很好 . 其他类似的任务完美无缺 .

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

Any idea about what is happening?

这是我的剧本中的任务:

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

任何帮助将不胜感激,非常感谢:)

EDIT:

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

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

我怀疑脚本中的“导出”操作不起作用,因为Ansible对环境变量有不同的理解 . (例如,ansible不会识别“$ HOME”而是使用“{}” . )

EDIT:

我发现脚本做了一个fork的操作,ansible处理这种操作吗?

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

SOLUTION

这是因为对安赛的环境变量的不同解释 . 如果我手动执行脚本,则包装器会设置环境变量并将其传递给下一个脚本调用,这些调用无法进行 . 所以我要做的是在执行脚本之前用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

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

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

    -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 }}"
    

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

相关问题