我正在使用Ansible运行bash命令。
kubectl version | head -1 | awk '{print $5}'| cut -d"\"" -f2
输出应该是
v1.2.0
Playbook是::
- name: version of minion before upgrade.
command: 'kubectl version | head -1 | awk '{print $5}'| cut -d"\"" -f2'
register: version
我也用过
command: "kubectl version | head -1 | awk '{print $5}'| cut -d"\"" -f2"
但它一直让我回到错误。
# ansible-playbook upgrade_k8s.yaml -i ../env/platform
ERROR! Syntax Error while loading YAML.
The error appears to have been in '/root/ejusnub/ansible/playbook/upgrade_k8s.yaml': line 40, column 50, but may
be elsewhere in the file depending on the exact syntax problem.
The offending line appears to be:
- name: version of minion before upgrade.
command: 'kubectl version | head -1 | awk '{print $5}'| cut -d"\"" -f2'
^ here
我甚至试图逃避每个符号但发生同样的错误。
答案 0 :(得分:1)
试试这个:
- shell: kubectl version | head -1 | awk '{ print $5 }' | cut -d'"' -f2
使用shell
模块代替command
来处理管道。
P.S。并仔细阅读错误消息,在您的示例的每种情况下(使用单引号和双引号),您都放错了引号。
答案 1 :(得分:0)
或者,您可以将kubectl version
与--short
参数一起使用,其目的是获取版本号,这里是shell任务:
- shell: 'kubectl version --short | cut -d: -f2'
这样就无需拨打head
和awk
。