Ist es möglich, eine Rolle in einer Rolle wiederzuverwenden? Damit meine ich nicht eine Abhängigkeit in der meta / main.yml Datei einer Rolle über die Definition aber einschließlich der Rolle in den Aufgaben / main.yml einer anderen Rolle direkt?
Zum Beispiel definiere ich einige grundlegende Rollen in Rollenbüchern und einige übergeordnete Rollen in Rollen. Ich möchte, dass die übergeordneten Rollen neben bestimmten Aufgaben auch einige der grundlegenden Rollen enthalten.
playbooks/
rolebooks/
some_role/
roles/
webtier/
tasks/
main.yml
In Playbooks / Rollen / Webtier / Tasks / main.yml:
- shell: echo 'hello'
- { role: rolebooks/some_role }
- shell: echo 'still busy'
Vielen Dank
ansible
ansible-playbook
Michael
quelle
quelle
rolebooks
?Antworten:
Alte Frage, ABER fürs Protokoll : Verwenden Sie Ansible 2.2+ und Sie können loslegen
include_role
. Genau zu diesem Zweck ... siehe Dokumentation hier .Schauen Sie sich
import_role
auch an ... siehe Dokumentation hierquelle
AFAIK, das kannst du nicht. Dafür sind Abhängigkeiten da.
Wenn Sie Abhängigkeiten vermeiden möchten (weil beispielsweise "Rolle X" zwischen zwei Aufgaben ausgeführt werden soll), können Sie dies im Playbook selbst tun, wenn Sie der Meinung sind, dass die Aufgaben zusammenhängen:
rollen / webtier / aufgaben / main.yml:
Alles in allem kommt es darauf an, was Sie genau versuchen. In Ihrem Beispiel scheint "noch beschäftigt" zu bedeuten, dass das
rolebooks/some_role
noch läuft, was nicht möglich ist (hier gibt es keine Parallelität).Natürlich können Sie Rollen auch in einem Master-Playbook sequenzieren (was Sie wahrscheinlich bereits tun):
quelle
Sie können nicht, aber Sie können etwas Ähnliches tun.
Für ein Layout von:
In
nginx/tasks/main.yml
können Sie Ihre allgemeine Aufgabe aufrufen:Beachten Sie, dass Sie, da Sie nicht die typische Importstruktur verwenden, möglicherweise auf eine "Verrücktheit" stoßen, z. B. auf Rollenstandardvariablen, auf die nur zugegriffen werden kann, wenn Sie die Rolle zuvor in die Standardmethode aufgenommen haben.
quelle
meta/main.yml
sollen die Einheit der Struktur sein, obwohl einige von uns denken, dass Rollen diesen Zweck besser erfüllen.template: src=../../common/templates/src.template dest=dest.file