繁体   English   中英

Jenkins Pipeline ansible 插件:Ansible-playbook 失败

[英]Jenkins Pipeline ansible plugin: Ansible-playbook fails

我有一个 Ansible 剧本,我试图从 Jenkins 管道运行。 我从源代码运行 Ansible,我使用 Ansible 插件调用它。 这是我的管道脚本中的一点:

withEnv(["PYTHONPATH=/home/ec2-user/ansible/lib"]) {
                ansiblePlaybook([
                    colorized: true,
                    credentialsId: 'my-creds',
                    installation: 'ansible-2-2-0',
                    inventory: 'staging',
                    playbook: 'deploy.yml',
                    extras: "--extra-vars 'app_build_id=${git_commit}'"
                ])

            }

我已经验证 Ansible 可执行文件的路径是正确的,$PYTHONPATH 也是如此。 但这是我运行管道时的作用:

[Pipeline] ansiblePlaybook
[planet-healthcare-pipeline] $ /home/ec2-user/ansible/bin/ansible-playbook deploy.yml -i staging -f 5 --private-key /home/ec2-user/jenkins/workspace/REDACTED.key -u ec2-user --extra-vars app_build_id=24a6431
Traceback (most recent call last):
  File "/home/ec2-user/ansible/bin/ansible-playbook", line 43, in <module>
    import ansible.constants as C
ImportError: No module named ansible.constants
FATAL: command execution failed
hudson.AbortException: Ansible playbook execution failed
    at org.jenkinsci.plugins.ansible.AnsiblePlaybookBuilder.perform(AnsiblePlaybookBuilder.java:227)
    at org.jenkinsci.plugins.ansible.workflow.AnsiblePlaybookStep$AnsiblePlaybookExecution.run(AnsiblePlaybookStep.java:290)
    at org.jenkinsci.plugins.ansible.workflow.AnsiblePlaybookStep$AnsiblePlaybookExecution.run(AnsiblePlaybookStep.java:226)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1$1.call(AbstractSynchronousNonBlockingStepExecution.java:52)
    at hudson.security.ACL.impersonate(ACL.java:221)
    at org.jenkinsci.plugins.workflow.steps.AbstractSynchronousNonBlockingStepExecution$1.run(AbstractSynchronousNonBlockingStepExecution.java:49)
    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)
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // stage
[Pipeline] mail
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: Ansible playbook execution failed
Finished: FAILURE

知道我在这里做错了什么吗? 为什么 Ansible 不能加载自己的常量?

尝试以用户 jenkins 运行它

sudo su -s /bin/bash jenkins

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM