我正在Jenkins中运行一个运行Ansible剧本的作业。Ansible playbook获取了一些凭据,我不希望它被打印在Jenkins的控制台日志中。这些凭据在同一剧本中用于curl命令。有没有一种方法可以通过 * 来混淆密码部分?如果没有,可以隐藏curl <...>并在日志中打印其输出吗?我的代码是这样的
curl
curl <...>
- name: curl shell: "curl -u '{{ user }}:{{ password }}'"
fivyi3re1#
在详细(-vvv)模式下运行playbook时,no_log: true选项不会阻止输出。我想更好的方法是将此命令存储在shell脚本中,比如do_curl.sh,使用template或copy模块将其上传到远程机器,并使用shell或command模块运行它。例如
-vvv
no_log: true
do_curl.sh
template
copy
shell
command
#!/bin/env bash curl -u '{{ user }}:{{ password }}' "$@"
因此,您可以将其用于多个请求:
shell: "do_curl.sh {{url}}"
如果您不想将脚本(以及凭据)留在目标计算机上,您可以在运行脚本后立即使用file和state: absent删除该脚本。(还可以在复制/模板任务中限制其文件权限。)如果您不希望此脚本与您的Ansible控制机器上的凭据(和/或在playbooks(git)存储库),请将其存储在目标机器上的正确权限。或者使用来自Ansible vault的凭证示例化为模板。
file
state: absent
git
1条答案
按热度按时间fivyi3re1#
在详细(
-vvv
)模式下运行playbook时,no_log: true
选项不会阻止输出。我想更好的方法是将此命令存储在shell脚本中,比如
do_curl.sh
,使用template
或copy
模块将其上传到远程机器,并使用shell
或command
模块运行它。例如
因此,您可以将其用于多个请求:
如果您不想将脚本(以及凭据)留在目标计算机上,您可以在运行脚本后立即使用
file
和state: absent
删除该脚本。(还可以在复制/模板任务中限制其文件权限。)如果您不希望此脚本与您的Ansible控制机器上的凭据(和/或在playbooks(
git
)存储库),请将其存储在目标机器上的正确权限。或者使用来自Ansible vault的凭证示例化为模板。