2017-10-11 10 views
0

J'ai un fichier Jenkins essayant de lancer un playbook Ansible qui fait référence à certains paramètres stockés dans un fichier crypté Vault Ansible.Lancement d'un playbook Ansible contenant une référence de fichier de coffre-fort à partir de jenkinsfile

Ansible est installé dans la version 2.4.0.0

Voici un extrait de mon fichier jenkins:

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

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

Et il y a le livre de jeux:

--- 
- 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 }}" 

Ce Playbooks comprend la voûte fichier contenant les valeurs cryptées. Lorsque Jenkins exécuter le Jenkinsfile, je reçois l'erreur suivante: tentative de déchiffrer, mais pas de secret de voûte trouvé

Pourquoi ansible n'utilise pas le credentialId je l'ai passé à lui dans le Jenkinsfile et quel est le bon moyen de passer ce titre de compétence?

Répondre

0

essayer la

suivante
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}" 
     } 

vous devez ajouter le

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

et laissez credentialsId blanc.