2017-10-11 47 views
0

我有一个Jenkinsfile试图启动一个Ansible手册,其中引用了存储在Ansible Vault加密文件中的一些参数。从jenkinsfile启动包含Vault文件参考的Ansible手册

Ansible安装在版本2.4.0.0

这里是我的詹金斯文件的一个片段:

withCredentials([[$class: 'StringBinding', credentialsId: 'vault_token', variable: 'VAULT_TOKEN']]) { 

        ansiblePlaybook(
          playbook: "./ansible/playbooks/deploy.yml", 
          inventory: "./ansible/hosts/hosts", 
          credentialsId: "$VAULT_TOKEN" 
       } 

还有就是剧本:

--- 
- hosts: managers 
    become: true 
    tasks: 
    - include_vars: ../vaults/passwords.yml 
    - name: Log into Docker repository 
    docker_login: 
     registry: my.registry.org 
     username: "{{ reg_user }}" 
     password: "{{ reg_password }}" 

这个剧本包括金库包含加密值的文件。 当詹金斯执行Jenkinsfile,我得到以下错误:试图解密,但没有金库的秘密发现

为什么不使用ansible的credentialId我已经传给了他在Jenkinsfile,什么是好的如何通过此凭证?

回答

0

尝试以下

withCredentials([file(credentialsId: 'vault_token', variable: 'VAULT_TOKEN')]) { 
     ansiblePlaybook colorized: true, credentialsId: '', forks: 10, inventory: 'ansible/hosts/hosts', limit: '', playbook: 'ansible/playbooks/deploy.yml', sudoUser: null, extras: "--vault-password-file ${VAULT_TOKEN}" 
     } 

你需要添加

extras: "--vault-password-file ${VAULT_TOKEN}"

,并留下credentialsId空白。