Ansible - Playbook在bash命令上返回错误

时间:2017-03-30 15:28:22

标签: bash ansible

我正在使用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

我甚至试图逃避每个符号但发生同样的错误。

2 个答案:

答案 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'

这样就无需拨打headawk