【问题标题】:How to execute ansible playbook in Jenkins如何在 Jenkins 中执行 ansible playbook
【发布时间】:2019-08-27 12:26:32
【问题描述】:

我想使用 Jenkins 运行剧本。我在 Windows 10 机器上安装了 Docker。通过 Docker,我建立了一个本地 Jenkins,并在其中安装了 GIT 和 Ansible 插件。

现在,如果 Jenkins 作业被触发,我的剧本将从 GIT 下载到我的 Jenkins 工作区。在我的工作区中,我正在尝试运行剧本。 当我触发构建作业时,我在从 GIT 结帐后面临如下问题:

[MyFirstJob] $ sshpass ******** /usr/bin/ansible-playbook /usr/bin -l "${group} /hostname" -f 5 -u dinesh -k
FATAL: command execution failed
java.io.IOException: Cannot run program "sshpass" (in directory "/var/jenkins_home/workspace/MyFirstJob"): error=2, No such file or directory
    at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
    at hudson.Proc$LocalProc.<init>(Proc.java:249)
    at hudson.Proc$LocalProc.<init>(Proc.java:218)

我的本​​地机器上没有安装 Ansible。我需要在本地安装它吗?或通过我当地的 Jenkins 运行我的 ansible playbook 的任何其他步骤。任何帮助,将不胜感激。谢谢!

【问题讨论】:

  • 看看this是否对你有帮助。您需要按照建议对 Dockerfile 中的 ENTRYPOINT 进行更改。

标签: windows docker jenkins ansible


【解决方案1】:

为了解释您看到的主要错误,您似乎没有在运行 Jenkins 的地方安装 sshpass 程序,听起来像是在容器中。

我说“Jenkins 在哪里运行”,因为您似乎将容器运行所在的执行空间与 docker 运行所在的本地系统的执行空间混淆了。

是的,您需要安装 ansible,但它需要安装在运行 Jenkins 的容器内。如果在容器内运行,Jenkins 将无法访问本地系统上运行的任何程序。您可以共享文件系统和一些进程,但本质上容器需要安装 Jenkins、sshpass ansible。

【讨论】:

  • 我没有找到通过搜索在 Windows 中安装 ansible 的正确方法。我可以在 Windows 10 docker 环境中安装 ansible 吗?
  • 安装 ansible 最简单的方法是使用 Python 的 pip 命令。安装 python 然后运行pip install ansible。您需要确保 ansible 在您的路径上,或者在脚本中调用它时使用安装位置的完整路径。但也要考虑安装 sshpass。
猜你喜欢
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-19
  • 1970-01-01
相关资源
最近更新 更多