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

如何获取Ansible hosts文件中定义的当前计算机的主机名?,ansible,Ansible,我正在设置一个Ansible playbook来设置几个服务器。只有当当前主机是我的本地开发人员主机(在我的主机文件中名为“local”)时,我才希望运行几个任务。我该怎么做?我在文档中的任何地方都找不到它 我尝试过这个when语句,但它失败了,因为ansible\u hostname解析为创建机器时生成的主机名,而不是您在hosts文件中定义的主机名 - name: Install this only for local dev machine pip: name=pyramid wh

我正在设置一个Ansible playbook来设置几个服务器。只有当当前主机是我的本地开发人员主机(在我的主机文件中名为“local”)时,我才希望运行几个任务。我该怎么做?我在文档中的任何地方都找不到它

我尝试过这个when语句,但它失败了,因为
ansible\u hostname
解析为创建机器时生成的主机名,而不是您在hosts文件中定义的主机名

- name: Install this only for local dev machine
  pip: name=pyramid
  when: ansible_hostname == "local"
必要的变量是


它在文档中有些隐藏。

您可以通过更改剧本中的主机标题来限制剧本的范围,而无需依赖您的资源清册中的特殊主机标签“local”。Localhost在清单中不需要特殊的行

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

这是另一种选择:

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

主机:!localhost
可能也起作用,例如
--limit'!dev'
works
- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost