是否可以在"命令"或"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
什么是正确的语法?
引用command
参数中的完整字符串:
- name: Iniciar zkfc command: "{{ hadoop_version }}/sbin/hadoop-daemon.sh start zkfc"
语法错误是因为您以开头的值{
。如果使用类似这样的变量开始值:
command: {{ my_var }}
那么您必须引用整行:
command: "{{ my_var }}"
这是因为解析器无法区分YAML的字典语法和变量插值。