Ansible循环哈希列表时如何正确引用变量添加用户?
Ansible循环中正确传递Vault加密密码变量
你的判断完全正确——问题出在loop字典里的password: x_myuser_password这一行:这里没有用**模板语法{{ }}**引用变量,Ansible会把x_myuser_password当作普通字符串处理,最终你是对字符串"x_myuser_password"做了SHA512哈希,而非Vault加密存储的真实密码值,自然导致用户无法登录。
解决方法很简单,在loop的字典里用{{ }}包裹变量名,让Ansible解析出变量的真实值:
- name: Add users user: name: "{{ item.name }}" uid: "{{ item.uid }}" comment: "{{ item.comment }}" home: "{{ item.home }}" shell: "{{ item.shell }}" group: "{{ item.group }}" password: "{{ item.password | password_hash('sha512') }}" groups: sudo append: yes loop: - { name: 'myuser', uid: '1000', comment: 'Myname', home: '/home/myuser', shell: '/bin/bash', group: 'mygroup', password: "{{ x_myuser_password }}" }
这样修改后,loop中的password字段会先解析出x_myuser_password对应的真实密码值,再传递给password_hash过滤器生成正确的哈希值,就能正常设置用户密码了。
如果你的loop里要添加多个用户,每个用户对应不同的密码变量,也可以用同样的方式在loop字典里用{{ }}引用对应的变量名即可。
内容的提问来源于stack exchange,提问作者Darwick
相关产品推荐
相关产品推荐

