在我的开发机器上,一切都很好。只是当 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 测试准备环境(创建预期的资源,例如属性文件)。