Referenzieren der aktuellen Variablen in der bedingten Ansible-Anweisung?

7

Ich verwende die Rolle willshersystems.users von ansible galaxy, um Benutzer auf Ubuntu-Servern zu erstellen. Jetzt, da es konsistent funktioniert, versuche ich, das Statusattribut basierend darauf festzulegen, ob der Benutzer über eine Liste Zugriff auf einen bestimmten Server haben soll.

Ist so etwas wie das Folgende möglich? Mein Google Fu scheint mir im Moment zu scheitern, jeder Rat wäre sehr dankbar!

vars:
  user_servers:
    user1:
      - testing1

  users:

    - name: user1
      groups: '{{ user_groups }}'
      state: "{{ ( inventory_hostname_short in user_servers[self.name] ) | ternary('present','absent') }}"

roles:
  - role: willshersystems.users
Bradym
quelle

Antworten:

3

Wie wäre es mit so etwas:

hosts: all

vars:
  user_servers:
    user1:
      - testing1

  users:
    -name: user1
    -groups: '{{ user_groups }}'
    -state: present

roles:
  - name: Add filtered users
    tasks:
      - name: Filter users 
        debug: User {{ item }}
        with_items: "{{ users | default([]) }}"
        when: {{ inventory_hostname_short }} in user_servers[item]
        register: filtered_users  

      - name: Add filtered users
        include_role: wilshersystems.users
        with_items:
        - {{ filtered_users }}
        loop_control:
        - loop_var: users
Jiri Klouda
quelle