我正在尝试从 Jenkins 管道脚本调用 Ansible 剧本。 为此,我尝试了以下方法:
def invokeAnsiblePlaybook() {
echo ("Start invokeAnsiblePlaybook")
ansiblePlaybook becomeUser: 'user01', credentialsId: 'user01_ssh_pwd', installation: 'ansible 2.9.0', inventory: '/home/user01/repo/MISC/playbooks/inventory_v1.ini', limit: '198.168.11.22', playbook: '/home/user01/repo/MISC/playbooks/Query.yml', sudo: true, sudoUser: 'user01', tags: 'CheckTime'
echo ("End invokeAnsiblePlaybook")
}
我已将 Ansible 远程 Linux 服务器的 ssh 用户名/密码配置到 Jenkins 中。 在上面的代码中,'198.168.11.22'是安装Ansible的远程Linux服务器IP。 当我运行该作业时,出现以下错误。
[JobName] $ sshpass ******** ansible-playbook /home/user01/repo/MISC/playbooks/IAM-Query.yml -i /home/user01/repo/MISC/playbooks/inventory_v1.ini -l 198.168.11.22 -t CheckTime -s -U user01 -u user01 -k
ERROR! the playbook: /home/user01/repo/MISC/playbooks/IAM-Query.yml could not be found
FATAL: command execution failed
hudson.AbortException: Ansible playbook execution failed
at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:262)
at org.jenkinsci.plugins.ansible.workflow.AnsiblePlaybookStep$AnsiblePlaybookExecution.run(AnsiblePlaybookStep.java:400)
at org.jenkinsci.plugins.ansible.workflow.AnsiblePlaybookStep$AnsiblePlaybookExecution.run(AnsiblePlaybookStep.java:321)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:47)
at hudson.security.ACL.impersonate(ACL.java:367)
at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:44)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
我正在使用 Jenkins 2.249.1 和 Ansible 2.9.0。
您可以在 Jenkins 中安装 ansible 插件,并可以尝试使用下面的示例代码。我已使用此代码进行 EBS R12.2 克隆。这有助于我在 Jenkins 中单击一下即可将 EBS 实例从源刷新到目标。 注意: - 此代码支持片段用于脚本化管道。
stage(“EBS R12.2 - EBS 克隆”) {
echo“正在此处执行 ebs 克隆脚本。”
ws("/DATA MIGR/ebs/scripts") {
ansiColor('xterm') {
ansiblePlaybook(
凭证 ID: "",
剧本:“/.yml”,
库存:“/.yml”,
附加:“-e '
哪里, CRED:- jenkins 中的信用 ID(例如 ssh 凭据),您可以从中执行 playbook。 ANS_VARIABLE:- ansible playbook 中定义的变量名称。 JENKINS_VAR:- jenkins 中定义的变量名称。 操作: - 您想要开始执行 playbook 的位置的任务名称。