调用ansible playbook无法从Jenkins处运行

调用ansible playbook无法从Jenkins处运行,jenkins,ansible,Jenkins,Ansible,所附图片是Jenkins上的Ansible配置截图。尝试从Jenkins调用Ansible剧本时,出现以下错误: [test-ansible-on-remote] $ sshpass ******** /usr/bin/ansible- playbook /var/jenkins_home/workspace/test-ansible-on-remote/test.yml -i 40.68.3.120 -f 5 -u bmiadmin -k FATAL: command execution

所附图片是Jenkins上的Ansible配置截图。尝试从Jenkins调用Ansible剧本时,出现以下错误:

[test-ansible-on-remote] $ sshpass ******** /usr/bin/ansible- 
playbook /var/jenkins_home/workspace/test-ansible-on-remote/test.yml 
-i 40.68.3.120 -f 5 -u bmiadmin -k
FATAL: command execution failed
java.io.IOException: Cannot run program "sshpass" (in directory "/var/jenkins_home/workspace/test-ansible-on-remote"): error=2, No such file or directory
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at hudson.Proc$LocalProc.<init>(Proc.java:250)
at hudson.Proc$LocalProc.<init>(Proc.java:219)
at hudson.Launcher$LocalLauncher.launch(Launcher.java:937)
at hudson.Launcher$ProcStarter.start(Launcher.java:455)
at hudson.Launcher$ProcStarter.join(Launcher.java:466)
at org.jenkinsci.plugins.ansible.CLIRunner.execute(CLIRunner.java:49)
at org.jenkinsci.plugins.ansible.AbstractAnsibleInvocation.execute(AbstractAnsibleInvocation.java:290)
at org.jenkinsci.plugins.ansible.AnsiblePlaybookInvocation.execute(AnsiblePlaybookInvocation.java:31)
at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:261)
at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:232)
at hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79)
at hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonito
[远程测试ansible]$sshpass********/usr/bin/ansible-
playbook/var/jenkins_home/workspace/test-ansible-on-remote/test.yml
-i 40.68.3.120-f 5-u bmiadmin-k
致命:命令执行失败
java.io.IOException:无法运行程序“sshpass”(在目录“/var/jenkins\u home/workspace/test ansible on remote”中):错误=2,没有这样的文件或目录
位于java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
在hudson.Proc$LocalProc.(Proc.java:250)
在hudson.Proc$LocalProc.(Proc.java:219)
位于hudson.Launcher$LocalLauncher.launch(Launcher.java:937)
在hudson.Launcher$ProcStarter.start(Launcher.java:455)
在hudson.Launcher$ProcStarter.join(Launcher.java:466)
位于org.jenkinsci.plugins.ansible.CLIRunner.execute(CLIRunner.java:49)
在org.jenkinsci.plugins.ansible.AbstractAnsibleInvocation.execute上(AbstractAnsibleInvocation.java:290)
位于org.jenkinsci.plugins.ansible.AnsiblePlaybookInvocation.execute(AnsiblePlaybookInvocation.java:31)
位于org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:261)
位于org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:232)
在hudson.tasks.BuildStepCompatibilityLayer.perform(BuildStepCompatibilityLayer.java:79)
在hudson.tasks.BuildStepMonitor$1.perform(BuildStepMonito

我在配置中遗漏了什么吗?

sshpass需要作为主机Jenkins docker映像的一部分安装,Ansible使用该映像建立到主机的ssh连接。

您找到解决方法了吗?是的,已经排序。它需要作为Jenkins docker映像的一部分安装sshpass。谢谢您的回答,它对我有用:)