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


166

我正在设置Ansible剧本来设置几个服务器。如果当前主机是我的本地dev主机(在我的hosts文件中名为“ local”),我只想执行几项任务。我怎样才能做到这一点?我在文档的任何地方都找不到它。

我已经尝试了when语句,但是它失败了,因为ansible_hostname解析为创建计算机时生成的主机名,而不是您在hosts文件中定义的主机名。

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

Answers:



2

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

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

hosts: !localhost可能也像作品一样--limit '!dev'起作用
timdiels

0

这是一种替代方法:

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.