将jenkins的证书从pipline传给ansible playbook

将jenkins的证书从pipline传给ansible playbook,jenkins,ansible,jenkins-pipeline,Jenkins,Ansible,Jenkins Pipeline,我试图将jenkins pipline到ansible playbook的凭证作为环境变量传递给docker 詹金斯·皮普林: steps { withCredentials([usernamePassword(credentialsId: 'creds', passwordVariable: 'pass', usernameVariable: 'usr')]) { ansiblePlaybook( playbook: 'AnsiblePlaybook.yml',

我试图将jenkins pipline到ansible playbook的凭证作为环境变量传递给docker

詹金斯·皮普林:

steps {
  withCredentials([usernamePassword(credentialsId: 'creds', passwordVariable: 'pass', usernameVariable: 'usr')]) {
    ansiblePlaybook(
      playbook: 'AnsiblePlaybook.yml',
      inventory: 'AnsibleInventory.ini',
      installation: 'ansible-latest',
      disableHostKeyChecking: true,
      become: 'yes',
      extras: '-vvv',
      extraVars: [
        usr: ${usr},
        pass: ${pass}
      ]
    )
  }
}
AnsiblePlaybook.yml:

docker_container:
  name: mysql
  image: mysql:5.6
  state: started
  env:
    MYSQL_USER: "{{ usr }}"
    MYSQL_PASSWORD: "{{ pass }}"
    MYSQL_RANDOM_ROOT_PASSWORD: "yes"
我得到一个错误:


java.lang.NoSuchMethodError:在步骤中找不到此类DSL方法“$”

您可以将参数声明为变量,并使用它来构建ansible:

Jenkins文件参数:


Ansible with args:

您可以将参数声明为变量,并使用它来构建Ansible:

Jenkins文件参数:

回答args:

我也有同样的问题。
你使用了错误的语法。 您忘记了
下面是一个正确的例子:

steps {
  withCredentials([usernamePassword(credentialsId: 'creds', passwordVariable: 'pass', usernameVariable: 'usr')]) {
    ansiblePlaybook(
      playbook: 'AnsiblePlaybook.yml',
      inventory: 'AnsibleInventory.ini',
      installation: 'ansible-latest',
      disableHostKeyChecking: true,
      become: 'yes',
      extras: '-vvv',
      extraVars: [
        usr: "${usr}",  // <================ Here you need extra "
        pass: "${pass}" // <================ Here you need extra "
      ]
    )
  }
}

步骤{
withCredentials([usernamePassword(credentialsId:'creds',passwordVariable:'pass',usernameVariable:'usr')])){
ansiblePlaybook(
剧本:“AnsiblePlaybook.yml”,
库存:“AnsibleInventory.ini”,
安装:“ansible最新版本”,
disableHostKeyChecking:为true,
变成‘是’,
附加条款:'-vvv',
外部变量:[
usr:“${usr}”,我也有同样的问题。
你使用了错误的语法。 您忘记了
下面是一个正确的例子:

steps {
  withCredentials([usernamePassword(credentialsId: 'creds', passwordVariable: 'pass', usernameVariable: 'usr')]) {
    ansiblePlaybook(
      playbook: 'AnsiblePlaybook.yml',
      inventory: 'AnsibleInventory.ini',
      installation: 'ansible-latest',
      disableHostKeyChecking: true,
      become: 'yes',
      extras: '-vvv',
      extraVars: [
        usr: "${usr}",  // <================ Here you need extra "
        pass: "${pass}" // <================ Here you need extra "
      ]
    )
  }
}

步骤{
withCredentials([usernamePassword(credentialsId:'creds',passwordVariable:'pass',usernameVariable:'usr')])){
ansiblePlaybook(
剧本:“AnsiblePlaybook.yml”,
库存:“AnsibleInventory.ini”,
安装:“ansible最新版本”,
disableHostKeyChecking:为true,
变成‘是’,
附加条款:'-vvv',
外部变量:[

usr:“${usr}”,//这里可能还有其他一些问题,但首先引发的问题是,当没有要插值的字符串时,您正在使用变量字符串插值语法。请更改
${usr}
$usr
,对于pass也是如此。这里可能还有一些其他问题,但第一个问题是,当没有要插值的字符串时,您正在使用变量字符串插值语法。将
${usr}
更改为
$usr
,对于pass也是如此。