我尝试将凭证从jenkins pipline传递到ansible playbook,然后作为环境变量传递给docker。
jenkins pipline:
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方法“”$“”
发布于 2019-09-18 03:23:26
您可以将参数声明为变量,并将其用于构建ansible:
Jenkinsfile参数:https://jenkins.io/doc/book/pipeline/syntax/#parameters-example
可用参数解析:https://docs.ansible.com/ansible/latest/user_guide/playbooks_environment.html
发布于 2020-02-20 17:54:31
我也有同样的问题。
您使用了错误的语法。您忘记了"是正确的示例:
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 "
]
)
}
}https://stackoverflow.com/questions/57973910
复制相似问题