在模板中使用Ansible库存组主机名

时间:2017-04-24 18:52:34

标签: ansible kibana

我正在尝试使用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”,但是没有发生。

1 个答案:

答案 0 :(得分:2)

kibana_server_host: groups.{{ kibana_node_group }}[0]"groups." + kibana_node_group + "[0]"等效,其中groups.[0]只是字符串。

使用kibana_server_host: "{{ groups[kibana_node_group][0] }}"代替