如何在詹金斯执行Ansible剧本

时间:2019-08-27 12:26:32

标签: windows docker jenkins ansible

我想用詹金斯玩一本剧本。我在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剧本。任何帮助,将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

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

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

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