2016-09-15 5 views
0

Ich habe das folgende Spiel, in dem ich versuche, WAS-Instanzen auf einem AIX-Server zu stoppen.übergeben Sie eine Variable als Skript in Ansible

--- 
    - hosts: all 
    vars_files: 
    - /etc/ansible/conf/var.yml 
    tasks: 
    - name: stop websphere instances 
     script: {{ was_script }} {{ item }} 
     with_items: "{{ was_inst }}" 

Das was_script und was_inst sind als Variable in var.yml aufgeführt. Wenn ich nun das Skript fest einprogrammiere anstatt es_script, funktioniert es. Aber es funktioniert nicht, wenn ich es als Variable nenne. Es sagt, es ist ein YAML-Syntaxfehler, aber ich kann nicht herausfinden, was der Fehler ist.

+0

Fügen Sie die Fehlermeldung bitte ein. Da ist eine Antwort drin. –

+0

'Fehler! Syntaxfehler beim Laden YAML.' 'Die Codezeile zu sein scheint:' ' - Name: stop websphere instances' ' script: {{was_script}} {{item}} ''^ hier' – kottapar

+0

Und es gibt eine Erklärung, was Sie in der nächsten Zeile tun sollten. –

Antwort

1

Der Pfeil ^ here zeigt auf die script: {{ was_script }} {{ item }} Zeile.
Sie sollten es script: "{{ was_script }} {{ item }}" angeben, weil es mit Klammern beginnt.
Es gibt eine Notiz über YAML gotchas in der Dokumentation.

+0

Vielen Dank; Das half, obwohl ich einen neuen Fehler bekam. Das Playbook schlägt nun fehl, dass das Skript nicht gefunden wird. Aus irgendeinem seltsamen Grund sucht es in/etc/ansible/playbooks anstatt des Verzeichnisses, das ich in var.yml erwähnt habe. '" failed ": true," msg ":" Datei oder Modul existiert nicht:/etc/ansible/playbooks/[u \ "/ tmp/stop_was.sh '"] ")' – kottapar

+0

Ich habe es mit dem Debug ausgeführt und hier ist, was ich gefunden: 'Debugger aufgerufen (debug) p vars [' was_script '] [u'/tmp/stop_was.sh '] (debug) vars [' was_script '] = '/ tmp/stop_was, sh' (debug) p vars [' was_script '] '/tmp/stop_was.sh'' und Danach lief es gut. – kottapar

Verwandte Themen