如何在 Ansible 中显示特定 OS 内主机的所有主机名
How to show all the host names of hosts within a specific OS in Ansible
Ansible 中是否有任何命令可以使用 OS Debain 收集主机的主机名?
文件主机不包含组!
查看包含 Debain 的主机的主机名的简单命令。
setup
module, which is implicitly called in any playbook via the gather_facts
mechanism, contains some output that you could use.
查找 ansible_distribution
事实的示例,其中应包含您要查找的主机上的 Debian
。
如果您只需要该列表一次,您可以使用 ansible
命令和 grep
:
直接调用该模块
ansible all -m setup -a 'filter=ansible_distribution' | grep Debian
如果您想在剧本中动态使用该信息,可以使用此模式:
---
- hosts: all
tasks:
- name: Do something on Debian
debug:
msg: I'm a Debian host
when: ansible_distribution == 'Debian'
我想补充一点,如果你想定位发行版和最低版本(通常是这种情况),你可以用字典来做到这一点。我经常使用这个片段:
---
- hosts: localhost
vars:
minimum_required_version:
CentOS: 7
Debian: 11
Fedora: 31
RHEL7: 7
Ubuntu: 21.10
- name: set boolean fact has_minimum_required_version
set_fact:
has_minimum_required_version: "{{ ansible_distribution_version is version(minimum_required_version[ansible_distribution], '>=') | bool }}"
tasks:
- name: run task when host has minimum version required
debug:
msg: "{{ ansible_distribution }} {{ ansible_distribution_version }} >= {{ minimum_required_version[ansible_distribution] }}"
when: has_minimum_required_version
您还可以动态包含针对特定发行版或版本的剧本片段,如下所示:
- name: Include task list in play for specific distros
include_tasks: "{{ ansible_distribution }}.yaml"
假设您为每个要支持的发行版定义了 Debian.yaml、Ubuntu.yaml 等。
Ansible 中是否有任何命令可以使用 OS Debain 收集主机的主机名? 文件主机不包含组!
查看包含 Debain 的主机的主机名的简单命令。
setup
module, which is implicitly called in any playbook via the gather_facts
mechanism, contains some output that you could use.
查找 ansible_distribution
事实的示例,其中应包含您要查找的主机上的 Debian
。
如果您只需要该列表一次,您可以使用 ansible
命令和 grep
:
ansible all -m setup -a 'filter=ansible_distribution' | grep Debian
如果您想在剧本中动态使用该信息,可以使用此模式:
---
- hosts: all
tasks:
- name: Do something on Debian
debug:
msg: I'm a Debian host
when: ansible_distribution == 'Debian'
我想补充一点,如果你想定位发行版和最低版本(通常是这种情况),你可以用字典来做到这一点。我经常使用这个片段:
---
- hosts: localhost
vars:
minimum_required_version:
CentOS: 7
Debian: 11
Fedora: 31
RHEL7: 7
Ubuntu: 21.10
- name: set boolean fact has_minimum_required_version
set_fact:
has_minimum_required_version: "{{ ansible_distribution_version is version(minimum_required_version[ansible_distribution], '>=') | bool }}"
tasks:
- name: run task when host has minimum version required
debug:
msg: "{{ ansible_distribution }} {{ ansible_distribution_version }} >= {{ minimum_required_version[ansible_distribution] }}"
when: has_minimum_required_version
您还可以动态包含针对特定发行版或版本的剧本片段,如下所示:
- name: Include task list in play for specific distros
include_tasks: "{{ ansible_distribution }}.yaml"
假设您为每个要支持的发行版定义了 Debian.yaml、Ubuntu.yaml 等。