2017-04-24 44 views
0

我试图使用​​角色来安装Kibana和Ansible 2.2.1.0。我制作了一个如下所示的剧本。我的库存有一批这样的:在模板中使用Ansible库存组主机名

[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”像调试输出显示,但没有发现钢笔。

回答

2

kibana_server_host: groups.{{ kibana_node_group }}[0]是python相当于"groups." + kibana_node_group + "[0]",其中groups.[0]只是字符串。

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