我想通过Ansible自动创建/维护用户。我希望每个新用户在第一次登录后都必须选择新密码。
想象一下,我在vars文件中有一个用户名列表,密码,组等。然后,我有一个角色,这样做:
---
- name: Add/maintain users
user:
name: "{{ item.name }}"
password: "{{ item.password }}"
update_password: on_create
createhome: true
generate_ssh_key: true
groups: "{{ item.groups}}"
shell: /bin/bash
state: present
register: users_added
with_items: "{{ users }}"
- name: Force created users to change password
shell: "chage -d 0 {{ item.name }}"
when: "{{ item.changed }}"
with_items: "{{ users_added.results }}"
- name: Set authorized keys
authorized_key:
user: "{{ item.name }}"
key: "{{ item.item.authorized_key }}"
manage_dir: yes
when: "{{ item.changed }}"
with_items: "{{ users_added.results }}"
我希望仅为新创建的用户触发第二个任务(“强制创建的用户更改密码”)。到目前为止,我发现的最好的事情是检查它是否为changed
。
不幸的是,如果用户没有SSH密钥,则会触发此操作。运行此任务的用户在配置计算机时没有SSH密钥。 Ansible将其密码过期,并且每个后续命令都会失败,因为它需要sudo。
任何人都知道只有在创建用户后才能使任务工作?类似于generate_ssh_key
的{{1}}选项。
答案 0 :(得分:0)
system:布尔值 选择:否←是 创建帐户状态=存在时,将其设置为“是”会使用户成为系统帐户。 无法在现有用户上更改此设置。
- name: Force created users to change password
shell: "chage -d 0 {{ item.name }}"
when: **item.changed and item.system is defined and not item.system**
with_items: "{{ users_added.results }}"