如何在自定义Ansible模块中隐藏jira_token等敏感变量不输出?
解决Ansible自定义模块敏感变量不输出的问题
当然有办法!Ansible内置了专门的敏感数据处理机制,能让jira_token这类敏感变量彻底不被输出,不管模块执行成功还是失败,完全不用担心泄露。
方法1:给单个敏感参数标记no_log=True
这是最常用也最精准的方式,直接在参数定义里给敏感字段添加no_log=True属性,Ansible会自动屏蔽该参数的真实值,输出时用占位符替代。
修改你的参数定义代码如下:
ansible_args= dict( jira_user=dict(type='str',required=True), jira_token=dict(type='str',required=True, no_log=True) # 添加no_log=True标记 ) module = AnsibleModule( argument_spec=ansible_args )
这样配置后,模块执行的输出里,jira_token会被替换成类似VALUE_SPECIFIED_IN_NO_LOG_PARAMETER的占位文本,真实的token值不会出现在任何输出或日志中。
方法2:全局屏蔽模块所有参数输出(不推荐)
如果你模块里的所有参数都是敏感数据,可以在初始化AnsibleModule时设置全局的no_log=True,但这种方式会屏蔽所有参数的输出,灵活性较低,一般不建议使用:
module = AnsibleModule( argument_spec=ansible_args, no_log=True )
这两种方式都是Ansible官方推荐的敏感数据保护方案,能确保在模块调用的invocation信息、执行日志等任何场景下,敏感变量都不会被泄露。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

