在模板中使用 Ansible 清单组主机名
Using Ansible inventory group hostname in template
我正在尝试使用 geerlingguy.kibana 角色通过 Ansible 2.2.1.0 安装 Kibana。我制作了一个如下所示的剧本。我的库存有这样一组:
[kibana_node]
myHostname
我为节点组设置了一个变量,以防我想在命令行上自定义它。 (kibana_node_group)。我想从清单中动态提取 kibana 节点值以供 geerlingguy.kibana 角色使用,但模板未按预期工作。我找到了一种在调试语句中有效的语法,但它在配置文件的模板代码中不起作用。
剧本:
- hosts: "{{ kibana_node_group }}"
pre_tasks:
- debug:
var: "groups.{{ kibana_node_group }}[0]"
roles:
- geerlingguy.kibana
vars:
kibana_node_group: kibana_node
kibana_server_host: "groups.{{ kibana_node_group }}[0]"
在 geerlingguy.kibana 角色中,他有这个模板代码来设置配置文件:
# The host to bind the server to.
server.host: {{ kibana_server_host }}
当我运行这个剧本时,这是配置文件中的内容:
server.host: groups.kibana_node[0]
我希望看到 "myHostname" 就像调试输出显示的那样,但那没有发生。
kibana_server_host: groups.{{ kibana_node_group }}[0]
python 等同于 "groups." + kibana_node_group + "[0]"
,其中 groups.
和 [0]
只是字符串。
改用kibana_server_host: "{{ groups[kibana_node_group][0] }}"
我正在尝试使用 geerlingguy.kibana 角色通过 Ansible 2.2.1.0 安装 Kibana。我制作了一个如下所示的剧本。我的库存有这样一组:
[kibana_node]
myHostname
我为节点组设置了一个变量,以防我想在命令行上自定义它。 (kibana_node_group)。我想从清单中动态提取 kibana 节点值以供 geerlingguy.kibana 角色使用,但模板未按预期工作。我找到了一种在调试语句中有效的语法,但它在配置文件的模板代码中不起作用。
剧本:
- hosts: "{{ kibana_node_group }}"
pre_tasks:
- debug:
var: "groups.{{ kibana_node_group }}[0]"
roles:
- geerlingguy.kibana
vars:
kibana_node_group: kibana_node
kibana_server_host: "groups.{{ kibana_node_group }}[0]"
在 geerlingguy.kibana 角色中,他有这个模板代码来设置配置文件:
# The host to bind the server to.
server.host: {{ kibana_server_host }}
当我运行这个剧本时,这是配置文件中的内容:
server.host: groups.kibana_node[0]
我希望看到 "myHostname" 就像调试输出显示的那样,但那没有发生。
kibana_server_host: groups.{{ kibana_node_group }}[0]
python 等同于 "groups." + kibana_node_group + "[0]"
,其中 groups.
和 [0]
只是字符串。
改用kibana_server_host: "{{ groups[kibana_node_group][0] }}"