Ich habe versucht, eine Anwendung für die Verbindung zu LDAP zu konfigurieren und bemerkte, dass die Authentifizierung fehlgeschlagen ist, also dachte ich, ich würde die beiden Befehle überprüfen, die ausgeführt werden, um zu sehen, was der Shell-Befehl ansible Ausführen sieht so aus. So deaktiviert ich die mqsichangeproperties
und mqsisetdbparms
Befehle auf dem Server und erstellt den folgenden kleinen Test-Textbuch, um zu sehen, was die Befehlsfolge sieht aus wie ... ich das Textbuch führen einen Fehler von mqsisetdbparms: command not found
aber dies würde erlauben erwartet mich cmd
und _raw_params
zu sehen Schlüssel beim Ausführen mit ausführlicher Ausgabe.Ansible Escaping im Shell-Modul
bemerkte ich, dass der Befehl für die erste Aufgabe in der Form ist, dass ich erwarten:
"cmd": "mqsichangeproperties QM -b webadmin -o server -n ldapAuthenticationUri –v \"ldap://abc.company.com:389/OU=Users,OU=City,OU=Country,DC=company,DC=com\""
jedoch der Befehl für die zweite Aufgabe enthält weiteren blackslashes, in dem falschen Benutzername und Passwort Wesen resultierenden set für die Anwendung ...
Falsche Befehlsform:
"cmd": "mqsisetdbparms QM -n ldap::company.com -u \"DOMAIN\\username\" -p \"[email protected]\""
Expected Befehlsform:
"cmd": "mqsisetdbparms QM -n ldap::company.com -u "DOMAIN\username" -p "[email protected]""
Ich fühle mich, als ob alle möglichen Optionen versucht haben, wie
doppelte Anführungszeichen für die Variablen
Flucht mit in die Variablen
Kombination von einfachen und doppelten Anführungszeichen mit den Variablen und der Shell-Befehl Zeichenfolge
den umgekehrten Schrägstrich in der unten
ldap_usr
Variable
Der Test ist Textbuch Ich bin mit Escaping ...
---
# file: test.yml
# desc: Test playbook
#
- hosts: target
gather_facts: no
vars:
ldap_server: "ldap://abc.company.com"
ldap_port: 389
ldap_baseDN: "OU=Users,OU=City,OU=Country,DC=company,DC=com"
ldap_usr: 'DOMAIN\username'
ldap_pwd: '[email protected]'
ldap_auth_uri: "\"{{ldap_server}}:{{ldap_port}}/{{ldap_baseDN}}\""
tasks:
# - name: test setting URI
# shell: "mqsichangeproperties QM -b webadmin -o server -n ldapAuthenticationUri -v {{ldap_auth_uri}}"
- name: test setting user
shell: "mqsisetdbparms QM -n ldap::company.com -u \"{{ldap_usr}}\" -p \"{{ldap_pwd}}\""
Verwendung der Ansible-Version 2.2.0.0
Ihr Befehl ist OK. Sie sehen in der anisible-Ausgabe eine maskierte Ausgabe. http://Stackoverflow.com/a/38957727/2795592 –
Danke dafür! Yup mein Problem war die Verwendung des falschen Mechanismus, um das ursprüngliche Problem zu diagnostizieren :) Ich war nie bewusst über die Ansible Protokolldruck _escaped_ JSON, ich nahm an, dass es roh für die Werte war .. Ich werde jetzt mein komplettes Skript ändern und testen, dass die Anwendung kann Verbinden Sie sich mit dem LDAP-Server, aber sieht gut aus für mich! – Niall