Angenommen, ich habe eine Rolle namens "Apache"
Jetzt möchte ich diese Rolle auf Host 192.168.0.10 über die Befehlszeile von Ansible Host ausführen
ansible-playbook -i "192.168.0.10" --role "path to role"
Gibt es eine Möglichkeit, das zu tun?
ansible
ansible-role
Karl
quelle
quelle
'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
-a "name=<role_name> public=yes"
, aber das hat nicht geholfen.In Ansible gibt es so etwas nicht, aber wenn dies ein häufiger Anwendungsfall für Sie ist, probieren Sie dieses Skript aus.
Fügen Sie es irgendwo in Ihren durchsuchbaren Pfad unter dem Namen ein
ansible-role
:quelle
ansible localhost -m include_role -a name=myrole
- funktioniert für mich!ansible localhost -m include_role -a name=myrole
ist kaputt seit ansible 2.8. Es protokolliert nur kryptische Fehlermeldungen wie'ERROR! 'async_val' is not a valid attribute for a IncludeRole'.
Sie können auch das Ansible-Toolbox- Repository überprüfen . Es wird Ihnen ermöglichen, so etwas wie zu verwenden
quelle
Ich habe ein kleines Ansible-Plugin namens geschrieben
auto_tags
, das für jede Rolle in Ihrem Playbook dynamisch ein gleichnamiges Tag generiert. Sie finden es hier .Nach der Installation (Anweisungen finden Sie oben) können Sie eine bestimmte Rolle ausführen mit:
ansible-playbook -i "192.168.0.10" --tags "name_of_role"
quelle
Hast du das versucht? Es ist super cool. Ich verwende 'update-os' anstelle der Rolle 'apache', um ein aussagekräftigeres Beispiel zu geben. Ich habe eine Rolle Sagen wir mal genannt
./roles/update-os/
in meine./
ich eine Datei hinzufügen genannt ,./role-update-os.yml
die wie folgt aussieht:Machen Sie diese Datei ausführbar (
chmod +x role-update-os.yml
). Jetzt können Sie das Limit ausführen und auf das beschränken, was Sie in Ihrem Inventar haben../update-os.yml -i inventory-dev --limit 192.168.0.10
Sie können auch die Gruppennamen übergeben.--limit web,db
> web und db ist die in Ihrem Inventar definierte Gruppe--limit 192.168.0.10,192.168.0.201
Beachten Sie, dass Sie die ssh-keys- und sudoers-Richtlinie so konfigurieren können, dass sie ausgeführt werden kann, ohne dass ein Kennwort eingegeben werden muss - ideal für die Automatisierung, da dies Auswirkungen auf die Sicherheit hat. Daher müssen Sie Ihre Umgebung analysieren, um festzustellen, ob sie geeignet ist.
quelle
in ansible 2.8 funktioniert es etwas anders
quelle