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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.