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

Posted

技术标签:

【中文标题】在模板中使用 Ansible 库存组主机名【英文标题】:Using Ansible inventory group hostname in template 【发布时间】:2017-09-21 13:59:31 【问题描述】:

我正在尝试使用 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】:

kibana_server_host: groups. kibana_node_group [0]"groups." + kibana_node_group + "[0]" 的 python 等价物,其中 groups.[0] 只是字符串。

改用kibana_server_host: " groups[kibana_node_group][0] "

【讨论】:

以上是关于在模板中使用 Ansible 库存组主机名的主要内容,如果未能解决你的问题,请参考以下文章

Ansible剧本管理(实例解释!!!)

Ansible---Inventory(主机清单)与YAML文件

Ansible的脚本------playbook剧本

Ansible 获取清单中定义的主机名

[RHCE学习笔记] ansible使用jinja2 生成hosts主机文件

笔记二:ansible批量设置主机名