Ansible中k8s_exec执行带管道符的find命令报错如何解决
根因说明
kubernetes.core.k8s_exec模块的command参数默认直接传递原始命令给系统调用,不会通过shell解析命令语法,你编写的管道符|会被当成find命令的普通参数传入,find无法识别该参数为路径,因此抛出paths must precede expression报错。
修复方法
将整条带管道的命令作为sh -c的入参,调用容器内的shell解析逻辑即可,修改后的代码如下:
tasks: - name: "Getting Local File Count" kubernetes.core.k8s_exec: namespace: "{{namespace}}" pod: "{{pod}}" command: "sh -c \"find '{{local_dir}}' -type f | wc -l\"" register: command_status
如果目标容器内置bash,可将sh替换为bash,兼容性更好。
内容的提问来源于stack exchange,提问作者Paul Blart
相关产品推荐
相关产品推荐

