gpt4 book ai didi

variables - 如何解析 Ansible group_vars 字典中的变量?

转载 作者:行者123 更新时间:2023-12-02 01:35:16 26 4
gpt4 key购买 nike

我之前一直将所有变量放在 list 文件中,例如

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

我不需要在 list 文件中对这些变量使用任何引号,而且效果很好。

现在,我正在尝试使用 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 会支持这一点。

关于如何正确解析这些有什么建议吗?

最佳答案

参见“陷阱”部分 here了解为什么需要在 group_vars 中添加引号。 (这是 yaml/ansible 有问题的 : {{ 组合。)

要解决您的命令中的错误,请修正拼写错误:您有一个})而不是}}

关于variables - 如何解析 Ansible group_vars 字典中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31602421/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com