Ansible:将列表限制为唯一元素
我正在编写一个剧本,以管理users.yml中定义的服务器上的用户:Ansible:将列表限制为唯一元素,ansible,unique,user-management,Ansible,Unique,User Management,我正在编写一个剧本,以管理users.yml中定义的服务器上的用户: --- users: - login: ab full_login: abcdef name: Aaaa Bbbb,,, admin_on: server1, server2 regular_on: server3 active: yes 我想包括一些保护措施,防止两个不同的用户定义了相同的登录名。剧本如下所示: --- - name: Provision users on servers hosts
---
users:
- login: ab
full_login: abcdef
name: Aaaa Bbbb,,,
admin_on: server1, server2
regular_on: server3
active: yes
我想包括一些保护措施,防止两个不同的用户定义了相同的登录名。剧本如下所示:
---
- name: Provision users on servers
hosts: all
remote_user: morty
become: yes
vars_files:
- users.yml
tasks:
- name: Create users
user:
name: "{{ item.login }}"
comment: "{{ item.name }}"
update_password: on_create
with_items:
- "{{ users }}"
when: ???
建议采取什么行动?我应该创建另一个列表来跟踪已处理的登录,还是有更好的方法?在游戏手册的最开始使用task进行飞行前检查:
- name: Safety check
assert:
that: >
users | map(attribute='login') | list | count
==
users | map(attribute='login') | list | unique | count
在这种情况下,我们检查原始登录列表的长度是否与具有唯一登录的列表的长度相同