python - 无法使用 ansible 用户模块为用户分配密码
问题描述
- name: Add new SFTP user (user provided by prompt)'
hosts: '{{ target }}'
vars:
pwd_alias: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
user_to_add: "{{ newuser }}"
tasks:
- set_fact:
my_pass: "{{ pwd_alias | password_hash('sha512') }}"
- name: Create user
user:
name: "{{ user_to_add }}"
password: "{{ my_pass }}"
shell: /bin/bash
create_home: yes
home: "/home/sftp/{{ user_to_add }}"
group: cgred
- debug:
msg: "{{ pwd_alias }},{{ my_pass }}"
当我运行它时,它会做它应该做的事情。它创建我指定的用户和主目录。它还会打印出密码和哈希值,但无论我做什么,我都无法记录对该用户的更改。
任何有关如何正确获取分配给该用户的密码的建议将不胜感激。
解决方案
问题是pwd_alias
,当放入 , 时vars
,每次引用都会被评估。比如下面的戏
vars:
pwd_alias: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
tasks:
- debug: var=pwd_alias
- debug: var=pwd_alias
- debug: var=pwd_alias
给
"pwd_alias": "RrhCtAFEHievoTY"
"pwd_alias": "TxHCsdKlpweqVJL"
"pwd_alias": "xbFLVvuMkkNkqIE"
解决方案很简单。将评估pwd_alias
放入任务中。例如
tasks:
- set_fact:
pwd_alias: "{{ lookup('password', '/dev/null length=15 chars=ascii_letters') }}"
- set_fact:
my_pass: "{{ pwd_alias | password_hash('sha512') }}"
推荐阅读
- jquery - 如何防止欧芹错误的表单提交
- android - Flutter iOS 不使用 pod
- sql - Python 2.7(sqlite3) 到 SQL Oracle,安全变量(防止 SQL 注入)
- reactjs - 这只是糟糕的错误陈述还是我的理解是错误的?
- android - svgLoader 在没有参考当前类的情况下无法工作
- r - 在 xpathSApply 中使用变量
- python - 使用 jupyterlab 设置系统路径
- python - 具有每月偏移量的 pandas rolling() 函数
- python - 从列表列表中创建每个唯一值的二进制矩阵
- elasticsearch-5 - 弹性搜索 - 查询不匹配