如何让Ansible vars_prompt为含特殊字符的密码添加双引号?
解决Ansible vars_prompt密码自动添加双引号的问题
直接给你两个实测可行的解决办法:
方法一:用Ansible自带的quote过滤器(推荐)
这个过滤器专门处理字符串转义,能自动给密码加上双引号,还会对密码里的特殊字符(比如双引号、空格、$符号等)做转义,避免对接LDAP或数据库时出问题。
vars_prompt部分保持不变:
vars_prompt: - name: my_password prompt: Enter password
在调用密码的地方加上| quote过滤器即可:
--password={{ my_password | quote }}
比如输入密码P@ssw0rd"123,经过处理后会变成"P@ssw0rd\"123",完全符合命令行的格式要求。
方法二:用set_fact手动给密码套双引号
如果需要在变量层面就把密码变成带双引号的格式,可以在tasks里用set_fact处理:
vars_prompt: - name: my_password_raw prompt: Enter password tasks: - name: 给密码添加双引号 set_fact: my_password: '"{{ my_password_raw }}"'
之后直接使用{{ my_password }}即可,比如--password={{ my_password }}。注意:这个方法如果遇到密码本身包含双引号的情况,会触发语法错误,不如第一种方法省心。
内容的提问来源于stack exchange,提问作者Jon
相关产品推荐
相关产品推荐

