【问题标题】:Ansible: restrict list to unique elementsAnsible:将列表限制为唯一元素
【发布时间】:2018-07-26 08:12:15
【问题描述】:

我正在编写一个剧本来管理我们在 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: ???

推荐的行动方案是什么?我应该创建另一个列表来跟踪已处理的登录,还是有更好的方法?

【问题讨论】:

    标签: ansible unique user-management


    【解决方案1】:

    使用assertion 任务在剧本的最开始进行预检:

      - name: Safety check
        assert:
          that: >
                users | map(attribute='login') | list | count
                ==
                users | map(attribute='login') | list | unique | count
    

    在这种情况下,我们检查原始登录列表的长度是否与具有唯一登录的列表的长度相同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      相关资源
      最近更新 更多