【问题标题】:ansible - Nothing happens when executing InstallHalyard.sh script via ansible-playbookansible - 通过 ansible-playbook 执行 InstallHalyard.sh 脚本时没有任何反应
【发布时间】:2017-11-21 04:39:58
【问题描述】:

我正在尝试制作一个使用 ansible-playbook 在远程主机上安装 halyard 的剧本。其中一项任务是对实际安装程序执行“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 脚本将通过传递一个环境变量来调用自身,并且需要执行 curl -O

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

编辑:

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

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

解决方案

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

这是我修改后的任务:

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

【问题讨论】:

  • 您应该检查基本路径目录,您可以将相对路径替换为InstallHalyard.sh脚本中可执行文件的绝对路径。并注意 sudo 意味着用户是 root 用户。它的环境变量是基于root的。
  • 你可以尝试使用:命令:“{{ ansible_env.HOME }}/.spinnaker/InstallHalyard.sh”
  • @Daein {{ ansible_env.HOME }} 给当前用户 $HOME 环境变量是 /home/user,这意味着它意味着绝对路径,我也尝试通过手动输入绝对路径,仍然不工作。感谢您的回答
  • @abhishekphukan 已经尝试过了,没有任何反应。谢谢你的回答
  • 仅供参考,InstallHalyard.sh 脚本将通过传递一个环境变量来调用自身,并且需要执行 curl -O

标签: linux bash ansible


【解决方案1】:

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

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

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

试试看它给了你什么错误信息。

【讨论】:

  • 是的。在调用 ansible-playbook 时,我实际上通过查看任务详细 (-v) 得到了错误。感谢您的回答
猜你喜欢
  • 2022-01-12
  • 1970-01-01
  • 2021-10-14
  • 1970-01-01
  • 1970-01-01
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
相关资源
最近更新 更多