
powershell을 통해 ansible 모듈을 실행할 때 shell 명령은 와일드카드를 확장하지 않습니다.
와일드카드를 제거하고 버전 번호를 지정하면 'rabbitmq_server-3.9.3'이 작동합니다.
와일드카드를 사용하여 이 작업을 수행하는 방법에 대한 제안이 있으십니까?
Yaml 코드:
- 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
오류:
'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
답변1
쉘은 와일드카드를 따옴표로 묶었기 때문에 확장하지 않습니다. 와일드카드 확장은 작은따옴표나 큰따옴표로 수행되지 않습니다.
\"/cygdrive/c/Program\ Files/RabbitMQ\ Server/rabbitmq_server-*/sbin/rabbitmq-service.bat\"
아마도 경로의 공백을 탈출하기 위해 이 작업을 수행했을 것입니다.
인용해야 하는 경로 부분만 인용해 보세요.
\"/cygdrive/c/Program\ Files/RabbitMQ\ Server\"/rabbitmq_server-*/sbin/rabbitmq-service.bat
## ##
답변2
당신은 필요.*
"/cygdrive/c/Program\ 파일/RabbitMQ\ 서버/rabbitmq_server-.*/sbin/rabbitmq-service.bat"