У меня есть книга воспроизведения с командой kubectl, когда я хочу выполнить эту команду, она не может избежать кавычек и понять, что этот каталог не существует
---
-
hosts: localhost
vars_files:
- vars/main.yaml
tasks:
-
shell:
cmd: |
kubectl exec -it -n {{ namespace }} {{ pod_name }} -- bash -c \"clickhouse-client --query "INSERT INTO customer FORMAT CSV" --user=test --password=test < /mnt/azure/azure/test/test.tbl\"
register: output2
Вот ошибка:
fatal: [127.0.0.1]: FAILED! => {
"changed": true,
"cmd": "kubectl exec -it -n ch-test04 chi-test-dashboard-sharded1-dashboard03-3-0-0 -- bash -c \\\"clickhouse-client --query \"INSERT INTO customer FORMAT CSV\" --user=test --password=test < mnt/azure/azure/test/test.tbl\\\"\n",
"delta": "0:00:00.002088",
"end": "2020-04-23 13:30:00.456263",
"invocation": {
"module_args": {
"_raw_params": "kubectl exec -it -n ch-test04 chi-test-dashboard-sharded1-dashboard03-3-0-0 -- bash -c \\\"clickhouse-client --query \"INSERT INTO customer FORMAT CSV\" --user=test --password=test < mnt/azure/azure/test/test.tbl\\\"\n",
"_uses_shell": true,
"argv": null,
"chdir": null,
"creates": null,
"executable": null,
"removes": null,
"stdin": null,
"stdin_add_newline": true,
"strip_empty_ends": true,
"warn": true
}
},
"msg": "non-zero return code",
"rc": 2,
"start": "2020-04-23 13:30:00.454175",
"stderr": "/bin/sh: 1: cannot open mnt/azure/azure/test/test.tbl\": No such file",
"stderr_lines": [
"/bin/sh: 1: cannot open mnt/azure/azure/test/test.tbl\": No such file"
],
"stdout": "",
"stdout_lines": []
}
Таким образом, когда я помещаю эту команду в python скрипт ansible, все еще выполняю кавычки и получаю ту же ошибку. Я уже пробовал escape / quote, но я думаю, что проблема в том, что я использую символ «<» после запроса, когда из данных вставки и ansible не может понять всю команду, еще не завершенную. Но я не уверен, как я могу сказать с правильной стороны. Спасибо </p>