当前位置:  开发笔记 > 大数据 > 正文

Ansible:如何将变量添加到"命令"或"shell"

如何解决《Ansible:如何将变量添加到"命令"或"shell"》经验,为你挑选了2个好方法。

是否可以在"命令"或"shell"模块上使用变量?我有下一个代码,我想使用变量文件来提供一些配置:

我想从我的变量文件中读取Hadoop版本.在ansible的其他模块上,我可以使用{{ansible_version}},但是使用命令或shell它不起作用.

- name: start ZooKeeper HA
  command: hadoop-2.7.1/bin/hdfs zkfc -formatZK -nonInteractive

- name: start zkfc
  shell: hadoop-2.7.1/sbin/hadoop-daemon.sh start zkfc

我想转换到下一个:

- name: Iniciar zkfc
  command: {{ hadoop_version }}/sbin/hadoop-daemon.sh start zkfc

因为如果我使用此语法运行它会抛出下一个错误:

- name: inicializar estado ZooKeeper HA
  command: {{hadoop_version}}/bin/hdfs zkfc -formatZK -nonInteractive
                             ^ here
We could be wrong, but this one looks like it might be an issue with
missing quotes.  Always quote template expression brackets when they
start a value. For instance:

    with_items:
      - {{ foo }}

Should be written as:

    with_items:
      - "{{ foo }}"

我试过用,但同样的问题:

- name: Iniciar zkfc
  command: "{{ hadoop_version }}"/sbin/hadoop-daemon.sh start zkfc

什么是正确的语法?



1> techraf..:

引用command参数中的完整字符串:

- name: Iniciar zkfc
  command: "{{ hadoop_version }}/sbin/hadoop-daemon.sh start zkfc"



2> Tom Manterfi..:

语法错误是因为您以开头的值{。如果使用类似这样的变量开始值:

command: {{ my_var }}

那么您必须引用行:

command: "{{ my_var }}"

这是因为解析器无法区分YAML的字典语法和变量插值。

推荐阅读
pan2502851807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有