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

问题描述 投票:0回答:3

我正在设置一个 Ansible 剧本来设置几个服务器。有几个任务我只想在当前主机是我的本地开发主机(在我的主机文件中名为“local”)时运行。我怎样才能做到这一点?我在文档中找不到它。

我尝试过这个when语句,但它失败了,因为

ansible_hostname
解析为创建机器时生成的主机名,而不是您在hosts文件中定义的主机名。

- name: Install this only for local dev machine
  pip: 
    name: pyramid
  when: ansible_hostname == "local"
ansible
3个回答
306
投票

必要的变量是

inventory_hostname

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

它有点隐藏在文档中在本节的底部


4
投票

您可以通过更改 Playbook 中的主机标头来限制 Playbook 的范围,而无需依赖库存中的特殊主机标签“local”。本地主机不需要库存中的特殊行。

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

0
投票

这是一个替代方案:

- name: Install this only for local dev machine
  pip: name=pyramid
  delegate_to: localhost
© www.soinside.com 2019 - 2024. All rights reserved.