繁体   English   中英

如何在Ansible group_vars字典中解析变量?

[英]How to parse variables in Ansible group_vars dictionary?

我之前将所有变量放在库存文件中,例如

dse_dir=/app/dse
dse_bin_dir={{ dse_dir }}/bin
dse_conf_dir={{ dse_dir }}/resources/dse/conf
dse_yaml_loc={{ dse_conf_dir }}/dse.yaml
cass_conf_dir={{ dse_dir }}/resources/cassandra/conf
cass_yaml_loc={{ cass_conf_dir }}/cassandra.yaml
cass_bin_dir={{ dse_dir }}/resources/cassandra/bin

我不需要在库存文件中对这些变量使用任何引号,并且它工作得很好。

现在我试图利用group_vars功能来分离每组主机的变量。 这有一种不同的格式,是字典。 所以现在我有:

dse_dir: "/app/dse"
dse_bin_dir: "{{ dse_dir }}/bin"
dse_conf_dir: "{{ dse_dir }}/resources/dse/conf"
dse_yaml_loc: "{{ dse_conf_dir }}/dse.yaml"
cass_conf_dir: "{{ dse_dir }}/resources/cassandra/conf"
cass_yaml_loc: "{{ cass_conf_dir }}/cassandra.yaml"
cass_bin_dir: "{{ dse_dir }}/resources/cassandra/bin"

为了避免解析抱怨,我需要在这些参数周围加上引号。 但现在当我有一个如下的剧本:

---
# Copy CQL files across
- include: subtasks/copy_scripts.yml

- name: Create users
  command: '{{ cass_bin_dir })/cqlsh'

我收到以下错误。 省略单引号或用双引号替换它们也不起作用。

ERROR: There was an error while parsing the task 'command {{ cass_bin_dir })/cqlsh'.
Make sure quotes are matched or escaped properly

我能找到的所有文档只显示字典中的硬编码值,即没有包含其他变量的变量,但我认为Ansible会支持这一点。

有关如何正确解析这些问题的任何建议吗?

请参阅此处的“陷阱”部分,了解为什么需要在group_vars添加引号。 (这是yaml / ansible有问题的: {{ combo。)

要解决command的错误,请修正错误:您有})而不是}}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM