jenkins Ansible:如何在“shell”中隐藏密码?

x7rlezfr  于 2023-10-17  发布在  Jenkins
关注(0)|答案(1)|浏览(170)

我正在Jenkins中运行一个运行Ansible剧本的作业。Ansible playbook获取了一些凭据,我不希望它被打印在Jenkins的控制台日志中。这些凭据在同一剧本中用于curl命令。
有没有一种方法可以通过 * 来混淆密码部分?如果没有,可以隐藏curl <...>并在日志中打印其输出吗?
我的代码是这样的

- name: curl
  shell: "curl -u '{{ user }}:{{ password }}'"
fivyi3re

fivyi3re1#

在详细(-vvv)模式下运行playbook时,no_log: true选项不会阻止输出。
我想更好的方法是将此命令存储在shell脚本中,比如do_curl.sh,使用templatecopy模块将其上传到远程机器,并使用shellcommand模块运行它。
例如

#!/bin/env bash
curl -u '{{ user }}:{{ password }}' "$@"

因此,您可以将其用于多个请求:

shell: "do_curl.sh {{url}}"

如果您不想将脚本(以及凭据)留在目标计算机上,您可以在运行脚本后立即使用filestate: absent删除该脚本。(还可以在复制/模板任务中限制其文件权限。)
如果您不希望此脚本与您的Ansible控制机器上的凭据(和/或在playbooks(git)存储库),请将其存储在目标机器上的正确权限。或者使用来自Ansible vault的凭证示例化为模板。

相关问题