我正在编写一本剧本来管理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: 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: ???
建议的行动方案是什么?我应该创建另一个列表来跟踪已经处理过的登录还是有更好的方法?
答案 0 :(得分:6)
使用assertion任务在游戏手册的最开始进行预检检查:
- name: Safety check
assert:
that: >
users | map(attribute='login') | list | count
==
users | map(attribute='login') | list | unique | count
在这种情况下,我们检查原始登录列表的长度是否与具有唯一登录的列表的长度相同。