像乐视做硬件的视频网站,网站开发业务需求分析,今天国内新闻10条,中国导航电子地图用于收集有关目标主机的系统和网络信息#xff0c;并将这些信息存储为一个facts变量#xff0c;可以在Playbook的后续任务中使用。setup模块可以用来获取主机的操作系统、软件包、IP地址、内存、磁盘和其他硬件信息。这些信息对编写Playbook和进行条件判断非常有用。当你在Pl…用于收集有关目标主机的系统和网络信息并将这些信息存储为一个facts变量可以在Playbook的后续任务中使用。setup模块可以用来获取主机的操作系统、软件包、IP地址、内存、磁盘和其他硬件信息。这些信息对编写Playbook和进行条件判断非常有用。当你在Playbook或者直接通过Ansible命令行使用setup模块时它会返回一个包含目标主机详细信息的JSON结构这些信息包括但不限于系统架构、网络配置、已安装软件包列表、文件系统、系统变量等。 参数 gather_subset: 指定要收集的facts子集。默认情况下Ansible会尝试收集所有可用的facts。可以使用这个参数来限制收集的范围例如指定network来仅收集网络相关的facts。gather_timeout: 指定收集facts的超时时间。默认情况下超时时间是10秒。filter: 指定一个过滤器用于仅返回符合特定条件的facts。可以使用Python语法来构建过滤器例如ansible_kernel_version 4.18。fact_path: 指定一个目录用于加载自定义facts。可以在这个目录中放置自定义的Python脚本或脚本文件夹Ansible会在收集facts时自动加载这些脚本。fact_caching: 指定facts的缓存设置。可以将其设置为True以启用缓存或者设置为一个路径来指定自定义的缓存目录。 使用方法
通过命令行直接使用
你可以在命令行直接运行setup模块来查看单个或多个主机的信息。
1ansible hostname_or_group -m setup
这里hostname_or_group应该替换为目标主机名或主机组名。
在Playbook中使用
虽然不常见但你也可以在Playbook中使用setup模块来收集信息并将这些信息注册到变量中之后在Playbook中使用这些变量
1---
2- name: Gather facts and use them
3 hosts: my_hosts
4 tasks:
5 - name: Gather facts
6 ansible.builtin.setup:
7 register: host_facts
8
9 - name: Display some gathered facts
10 debug:
11 msg: The OS is {{ host_facts.ansible_facts.os_family }} and distribution is {{ host_facts.ansible_facts.distribution }}
12
在这个例子中通过调用ansible.builtin.setup或简写为setup收集到的信息被注册到了host_facts变量中随后可以在后续任务中通过host_facts.ansible_facts访问这些信息。
注意事项
Ansible默认在每个Playbook执行开始时自动收集事实facts除非你通过gather_facts: no在Playbook或Task级别禁用了这一行为。收集事实可能会增加执行时间特别是在大型环境或网络延迟较高的情况下。你可以通过filter参数来限制收集的信息范围减少不必要的数据传输和处理时间例如ansible hostname -m setup -a filteransible_network*
setup模块是Ansible自动化运维中的基础工具它为编写灵活、动态的Playbook提供了丰富的信息基础。
获取网络信息。 要在Ansible中专门获取目标主机的网络信息你可以利用setup模块并结合过滤功能来聚焦于网络相关事实。以下是如何操作的几个示例
通过命令行获取网络信息
你可以通过命令行调用Ansible的setup模块并使用-a或--args选项加上filter参数来筛选网络相关信息
ansible hostname_or_group -m setup -a filteransible_all_ipv4_addresses
这将只显示目标主机的所有IPv4地址。如果你想获取更多网络细节可以使用更宽泛的过滤器如
ansible hostname_or_group -m setup -a filteransible_network*
这将展示所有与网络相关的事实包括接口信息、IP地址、网关等。
在Playbook中获取并使用网络信息
在编写Playbook时你同样可以使用setup模块并注册变量然后根据需要访问这些网络信息
1---
2- name: Gather and display network information
3 hosts: your_host_or_group
4 tasks:
5 - name: Gather facts with network filter
6 ansible.builtin.setup:
7 filter: ansible_network*
8 register: network_facts
9
10 - name: Display network interfaces
11 debug:
12 msg: {{ network_facts.ansible_facts.ansible_interfaces }}
13
14 - name: Display IP addresses of eth0
15 debug:
16 msg: IP addresses of eth0: {{ network_facts.ansible_facts[ansible_ item][ipv4][address] }}
17 loop: {{ network_facts.ansible_facts.ansible_interfaces }}
18 when: eth0 in item
在这个Playbook示例中我们首先收集所有网络相关的事实并注册到network_facts变量中。然后分别展示了所有网络接口名称和特定接口如eth0的IPv4地址。
获取内存信息。
命令行示例
直接在命令行使用Ansible调用setup模块并过滤出内存相关的信息
ansible your_host_or_group -m setup -a filteransible_memory_mb
这将返回目标主机的内存信息以MB为单位。
Playbook示例
在Playbook中你可以通过调用setup模块并将结果注册到一个变量随后访问该变量来使用内存信息
1---
2- name: Gather and Display Memory Information
3 hosts: your_host_or_group
4 tasks:
5 - name: Gather facts with memory filter
6 ansible.builtin.setup:
7 filter: ansible_memory_mb
8 register: memory_facts
9
10 - name: Display total memory in MB
11 debug:
12 msg: Total Memory: {{ memory_facts.ansible_facts.ansible_memory_mb.real.total }} MB
13
14 - name: Display free memory in MB
15 debug:
16 msg: Free Memory: {{ memory_facts.ansible_facts.ansible_memory_mb.real.free }} MB
在这个示例中我们首先使用setup模块并设置了filter参数为ansible_memory_mb来专门获取内存信息并将这些信息注册到memory_facts变量中。接着我们通过调试任务输出总内存和可用内存的大小。
获取硬盘空间使用信息。
Playbook示例
下面是一个简单的示例展示了如何在Playbook中使用setup模块来获取并显示硬盘空间信息
1---
2- name: Gather and Display Disk Space Information
3 hosts: your_host_or_group
4 tasks:
5 - name: Gather facts
6 ansible.builtin.setup:
7 register: system_facts
8
9 - name: Display disk space information for each mount point
10 debug:
11 msg: Mount point: {{ item.mount }} - Total: {{ item.size_total }} KB - Used: {{ item.size_used }} KB - Available: {{ item.size_available }} KB
12 loop: {{ system_facts.ansible_facts.ansible_mounts }}
13 when: item.mount ! / or item.fstype ! tmpfs # 可选: 过滤掉不需要的条目如根分区和tmpfs
在这个Playbook中我们首先调用了setup模块并将收集到的信息注册到了变量system_facts中。然后我们通过遍历ansible_mounts这个变量来访问每个挂载点的磁盘使用信息。这个变量提供了每个磁盘分区或挂载点的详细信息包括挂载点路径mount、总大小size_total、已用空间size_used以及可用空间size_available所有大小单位默认为KB。
请注意when条件是可选的它用于过滤输出比如排除tmpfs这类临时文件系统的统计信息或者针对特定挂载点的筛选。