Platzhalter funktionieren im Ansible-Shell-Befehl nicht

Platzhalter funktionieren im Ansible-Shell-Befehl nicht

Der Shell-Befehl erweitert das Platzhalterzeichen nicht, wenn das Ansible-Modul über Powershell ausgeführt wird.

Wenn ich das Platzhalterzeichen entferne und die Versionsnummer angebe, funktioniert es „rabbitmq_server-3.9.3“.

Irgendwelche Vorschläge, wie dies mit Platzhaltern funktioniert?

Yaml-Code:

  - name: Check if RabbitMQ is already installed
    shell: "\"/cygdrive/c/Program\ Files/RabbitMQ\ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\" status"
    ignore_errors: true
    register: RabbitMQ_install_status

Fehler:

„C:\cygwin\bin\bash.exe -c ansible-playbook test.yml“:

TASK [Check if RabbitMQ is already installed] **************************************************************************fatal: [localhost]: FAILED! => {"changed": true, "cmd": "\"/cygdrive/c/Program Files/RabbitMQ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\" status", "delta": "0:00:00.042184", "end": "2021-08-16 13:43:52.066236", "msg": "non-zero return code", "rc": 127, "start": "2021-08-16 13:43:52.024052", "stderr": "/bin/sh: /cygdrive/c/Program Files/RabbitMQ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat: No such file or directory", "stderr_lines": ["/bin/sh: /cygdrive/c/Program Files/RabbitMQ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat: No such file or directory"], "stdout": "", "stdout_lines": []}
...ignoring

Antwort1

Die Shell erweitert das Platzhalterzeichen nicht, weil Sie es in Anführungszeichen gesetzt haben. Platzhalter werden weder in einfachen noch in doppelten Anführungszeichen erweitert.

\"/cygdrive/c/Program\ Files/RabbitMQ\ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\"

Vermutlich haben Sie dies getan, um den Leerzeichen im Pfad zu entkommen.

Versuchen Sie, nur den Teil des Pfads in Anführungszeichen zu setzen, der in Anführungszeichen gesetzt werden muss.

\"/cygdrive/c/Program\ Files/RabbitMQ\ Server\"/rabbitmq_server-*/sbin/rabbitmq-service.bat
##                                           ##

Antwort2

du brauchst.*

„/cygdrive/c/Programme\Dateien/RabbitMQ\Server/rabbitmq_server-.*/sbin/rabbitmq-service.bat“

verwandte Informationen