2017-10-11 1 views
0

Das ist eine ziemlich weit gefasste Frage, da ich keine spezifische Dokumentation oder Beispiele von Leuten finden kann, die das verwenden, was ich fragen werde, also bitte vergib mir.Verwenden von Azure-Tags in Ansible für Playbooks

Ich habe eine Azure ARM-Vorlage und erfolgreich in der Lage zu implementieren es über ansible mit dem azure_rm.py dynamischen Inventar erstellt: https://github.com/ansible/ansible/blob/devel/contrib/inventory/azure_rm.py

ich auf der ansible docs Seite gelesen habe, dass ich in der Lage bin AZURE_TAGS = zu verwenden, Was ich annehmen kann, verwende die Azure-Tags, die beim Bereitstellen einer Maschine erstellt wurden, sodass ich Playbooks nur für die von mir definierten markierten Maschinen verwenden kann.

Azure docs: http://docs.ansible.com/ansible/latest/guide_azure.html

Die Idee Playbooks auf bestimmte getaggten Maschinen laufen soll ihre Einstellungen zu aktualisieren/ändern. Ähnlich wie das Ausführen gegen Gruppen, die in der statischen Ansible-Hosts-Datei definiert sind.

Vielleicht habe ich das alles falsch und das ist nicht, was ich tun kann, oder vielleicht ist es, aber für das Leben von mir kann ich keine Beispiele von jemandem finden, die azure_tags = in einem Playbook verwenden. Ich habe keine Ahnung, auch wenn es im Spielbuch definiert ist, oder es ist ein Argument.

Mit diesem als Leitfaden Schritt 12: http://codeheaven.io/15-things-you-should-know-about-ansible/

Ich kann sehen, wie diese Person die Tag-Option in den Hosts-Parametern verwendet hat, und ich habe dies getan, aber die Maschine gefunden wird nicht bei der Überprüfung gegen das dynamische Inventar.

Kann mir bitte jemand in die richtige Richtung zeigen, oder noch besser, geben Sie mir ein Beispiel dafür, wie dieses Tag-System funktioniert?

Antwort

0

Für jeden, der sich Sorgen macht, oder war fest, wie ich war, hier ist die Antwort.

Anstatt Playbooks auszuführen, führen die folgenden Beispiele den Befehl Ansible ping für Hosts aus, die einer bestimmten Auswahl von Hosts entsprechen.

Wählen Sie alle VMs in Azure-Abonnement:

ansible azure -i ./azure_rm.py -m win_ping 

Wählen Sie alle VMs in einer bestimmten Region/Ortsnamen (wir haben Gastgeber in ukwest und uksouth - entnommen aus den Ressourcengruppen erstellt früher):

ansible ukwest -i ./azure_rm.py -m win_ping 

Wählen Sie alle VMs mit dem Tag namens Serverrole auf den Wert WebServer

ansible ServerRole_WebServer -i ./azure_rm.py -m win_ping 

Wenn VMs bereitstellen Ich habe bestimmte Tags verwendet, um sie zu identifizieren, ist hier ein Beispiel ein Textbuch gegen die ‚display‘ Tag von ‚AnsibleVM1‘

# Run post build scripts on machines taggedd with AnsibleVM1 from commad line variable with "{{ hosts }}" 
# ansible-playbook scripts.yml -i azure_rm.py --extra-vars "hosts=displayName_AnsibleVM1" --ask-vault-pass 

- hosts: "{{ hosts }}" 
    gather_facts: no 

    vars_files: 
    - ./vars/vault.yml 
    - ./vars/vars.yml 

    tasks: 
    - include_vars: vault.yml 
    - name: formatDataDisk script 
    script: ./files/formatDataDisk.ps1 

    - name: prepMachine script 
    script: ./files/prepMachine.ps1 

    - name: Reboot machine to apply scripts 
    win_reboot: 

der Verwendung Und hier ist die Befehlszeile habe ich es laufen . Beachten Sie, dass die Variable in der Befehlszeile enthalten ist, damit ich den Namen im laufenden Betrieb ändern kann:

ansible-playbook scripts.yml -i azure_rm.py --extra-vars "hosts=displayName_AnsibleVM1" --ask-vault-pass 
Verwandte Themen