如何在Ansible中执行用户创建任务

如何在Ansible中执行用户创建任务,ansible,ansible-playbook,Ansible,Ansible Playbook,我想通过Ansible自动化用户创建/维护。我希望每个新用户在第一次登录时都必须选择新密码 假设我在一个vars文件中有一个用户列表,其中包含他们的姓名、密码、组等。然后,我有一个角色可以做到这一点: --- - name: Add/maintain users user: name: "{{ item.name }}" password: "{{ item.password }}" update_password: on_create createhome:

我想通过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 }}"
我希望仅为新创建的用户触发第二个任务(“强制创建的用户更改密码”)。到目前为止,我发现最好的事情是检查它是否被
更改

不幸的是,如果用户没有SSH密钥,则会触发此操作。配置计算机时,运行此任务的用户没有SSH密钥。Ansible会使其密码过期,并且每个后续命令都会失败,因为它需要sudo

有人知道只有创建了用户才能使任务工作的方法吗?类似于在创建
选项上生成ssh密钥的

系统:布尔值 选择:否← 对 当创建帐户状态=present时,将其设置为yes将使用户成为系统帐户。 无法在现有用户上更改此设置

- 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 }}"

答案不正确,但您可以将
用户
分为两部分,一部分用于创建用户,另一部分用于添加ssh密钥。这样,您就可以注册第一个结果并对其执行操作。