Jenkins 2.0:ansiblePlaybook插件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins 2.0:ansiblePlaybook插件相关的知识,希望对你有一定的参考价值。

我想执行一个Jenkins管道:

stage('Deploy watchers') {
          ansiblePlaybook(
            playbook: "watcher-manage.yml",
            extraVars: [
              target: 'dev-dp-manager-1'
            ]
          )
        }

这会产生ansible-playbook watcher-manage.yml -e target=dev-dp-manager-1

执行导致:

fatal: [dev-dp-manager-1]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).
", "unreachable": true}

根据文档,我需要添加sudo: true以使ansible命令以root权限执行。如果我这样做:

stage('Deploy watchers') {
          ansiblePlaybook(
            sudo: true,
            playbook: "watcher-manage.yml",
            extraVars: [
              target: 'dev-dp-manager-1'
            ]
          )
        }

这会产生ansible-playbook watcher-manage.yml -s -U root -e target=dev-dp-manager-1。不过我得到了同样的错误。

如果我试着说sudo ansible-playbook ...我的命令成功了。我的问题是我是否可以通过使用插件实现所需的执行,或者我必须手动编写ansible命令?

谢谢!

答案

对我有用的是:

stage('Deploy watchers') {
  sh 'sudo ansible-playbook watcher-manage.yml --extra-vars="target=dev-dp-manager-1"'
}

由于Jenkins的linux用户不需要访问ssh密钥,因此只需提升其对这一命令的权限即可完成。

以上是关于Jenkins 2.0:ansiblePlaybook插件的主要内容,如果未能解决你的问题,请参考以下文章

Jenkins 2.0:ansiblePlaybook插件

最佳实践Jenkins 2.0多分支Pipeline改造

技术漫谈 | Jenkins X 还是 2.0?

Centos7 & Docker & Jenkins & ASP.NET Core 2.0 自动化发布和部署

ASP.NET Core 2.0 自动化发布和部署(Centos7 & Docker & Jenkins )

Jenkins