如何获取Ansible主机文件中定义的当前计算机的主机名?

时间:2014-01-25 03:55:03

标签: ansible

我正在设置一个Ansible手册来设置几个服务器。如果当前主机是我的本地开发主机,在我的主机文件中名为“local”,那么我只想运行几个任务。我怎样才能做到这一点?我在文档中的任何地方都找不到它。

我在if语句时尝试了这个,但它失败了,因为ansible_hostname解析为创建机器时生成的主机名,而不是你在hosts文件中定义的主机名。

- name: Install this only for local dev machine
  pip: name=pyramid
  when: ansible_hostname == "local"

3 个答案:

答案 0 :(得分:250)

必要的变量是inventory_hostname

- name: Install this only for local dev machine
  pip: name=pyramid
  when: inventory_hostname == "local"

它隐藏在文档at the bottom of this section中。

答案 1 :(得分:1)

您可以通过更改剧本中的主机标题来限制剧本的范围,而不必依赖清单中特殊的主机标签“本地”。 Localhost不需要在库存中使用特殊行。

- name: run on all except localhost
  hosts: all:!localhost

答案 2 :(得分:0)

这是一种替代方法:

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost