【问题标题】:Launch Ansible playbook containing vault file reference from jenkinsfile启动包含来自 jenkinsfile 的 Vault 文件引用的 Ansible playbook
【发布时间】:2017-10-11 14:57:25
【问题描述】:

我有一个 Jenkinsfile 试图启动一个 Ansible playbook,它引用了一些存储在 Ansible vault 加密文件中的参数。

Ansible 安装在 2.4.0.0 版本中

这是我的 jenkins 文件的 sn-p:

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

本手册包含包含加密值的保管库文件。 当 Jenkins 执行 Jenkinsfile 时,我收到以下错误:Attempting to decrypt but no vault secrets found

为什么 ansible 不使用我在 Jenkinsfile 中传递给他的 credentialId 以及传递此凭据的好方法是什么?

【问题讨论】:

    标签: jenkins ansible jenkins-pipeline ansible-2.x ansible-vault


    【解决方案1】:
    1. 请使用“vaultCredentialsId”而不是“credentialsId”作为保管库令牌。
    2. 删除“withCredentials”部分并直接写入 vaultCredentialsId:'vault_token' Ansible Plugin link

    【讨论】:

      【解决方案2】:

      试试下面的

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

      你需要添加

      附加:“--vault-password-file ${VAULT_TOKEN}”

      并将 credentialsId 留空。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-19
        • 2015-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多