Jenkins Pipeline 脚本调用 ansible playbook

问题描述 投票:0回答:1

我正在尝试从 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 jenkins-pipeline pipeline
1个回答
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 '='”, startAtTask:“行动”, 彩色:真实, 主机密钥检查:假 ) } } }

哪里, CRED:- jenkins 中的信用 ID(例如 ssh 凭据),您可以从中执行 playbook。 ANS_VARIABLE:- ansible playbook 中定义的变量名称。 JENKINS_VAR:- jenkins 中定义的变量名称。 操作: - 您想要开始执行 playbook 的位置的任务名称。

© www.soinside.com 2019 - 2024. All rights reserved.