Sie können es auf diese Weise nicht tun. with_
Schleifen sind nicht für Rollen gültig.
Wenn überhaupt, müssen Sie der roles:
-Direktive eine Liste mit Rollen bereitstellen, sodass die Syntax genau wie für die Liste der Hostgruppen hosts: '{{ host }}'
lautet. Das Problem ist: Ansible löst die Variable für Rollen nicht auf, daher funktioniert roles: '{{ roles }}'
nicht.
Was Sie tun können, ist jedoch
include_role module, in denen verwenden Sie die Variablen zugreifen können.
Nein, include_role Modul nimmt nicht {{ item }}
vom with_items
als Wert für name
entweder.
So ist die einzige Abhilfe, die ich mir vorstellen kann (vorausgesetzt, Sie wollen nicht die JSON vorher verarbeiten) sind der umfassen die Rollen statisch:
tasks:
- include_role:
name: "mysql"
when: "'mysql' in roles"
- include_role:
name: "apache"
when: "'apache' in roles"
Die Rollen müssen auf der Steuer Maschine existieren trotzdem sind alle ihre Namen vordefiniert.
Danke für die Antwort, eigentlich möchte ich die Rollen zählen dynamisch weitergegeben werden. Manchmal brauche ich vielleicht nur eine Rolle und manchmal mehrere Rollen. In Zukunft werden auch mehr Rollen hinzugefügt, also möchte ich es flexibel machen. Gibt es noch andere alternative Möglichkeiten? – Md134