Jenkins 2.0:ansiblePlaybook插件

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

我想执行一个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).\r\n", "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命令?

谢谢!

jenkins ansible jenkins-pipeline
1个回答
0
投票

对我有用的是:

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

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

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