首页 文章

在Jenkins中运行Ansible playbooks无法解密

提问于
浏览
0

在我的开发机器上,一切都很棒 . 只是当Jenkins尝试运行与保险库加密文件相关的剧本时,我看到错误:

ERROR! Decryption failed on /data/jenkins/workspace/.../secrets.yml 
FATAL: command execution failed hudson.AbortException: Ansible playbook execution failed

从Jenkins作业执行的命令是:

/usr/bin/ansible-playbook playbook.yml -i prod/inventory -l localhost -s -f 1 --vault-password-file /etc/ansible/vault_password

保证库密码文件存在于具有以下权限的位置:

-rw-r--r--. 1 root root 35 Dec 18 13:23 /etc/ansible/vault_password

如果我运行相同的命令但要求输入密码(交互式),一切运行正常 . 然而,这不是理想的工作流程:我希望Jenkins能够独立运行这些剧本,而无需用户交互 .

我应该提一下,该剧本是为了在本地运行任务,主要是为Maven测试准备环境(创建预期的资源,如属性文件) .

1 回答

  • 0

    事实证明,创建包含内容的文件和使用内容复制文件之间存在巨大差异,即使最终结果是具有相同内容的文件也是如此 .

    让我解释一下:我的配置手册一直是通过将密码写入远程机器上的文件来创建我的密码文件,如下所示:

    copy: content="{{ ansibl_vault_password }}", dest="{{ ansibl_vault_password_file }}"
    

    我所做的更改是将密码文件从我的机器复制到远程机器,如下所示:

    copy:
        src: "{{ ansibl_vault_password_file }}"
        dest: "{{ ansibl_vault_password_file }}"
        mode: "u=rw,g=r,o=r"
    

    因此,即使在宏观方案中我最终得到了包含第一行密码的文件,早期的方法仍然无法解密内容,而第二种方法工作得很好 .

相关问题