ansible获取网卡信息
时间: 2023-08-16 15:15:46 浏览: 272
你可以使用Ansible的facts模块来获取主机的网卡信息。facts模块会自动收集主机的各种信息,并将其存储在特殊变量`ansible_facts`中。以下是一个示例的Ansible Playbook,用于获取主机的网卡信息:
```yaml
- name: 获取网卡信息
hosts: your_hosts # 替换为你的主机组或主机名
gather_facts: yes # 开启facts模块,收集主机信息
tasks:
- name: 显示网卡信息
debug:
var: ansible_facts['ansible_interfaces']
```
运行这个Playbook后,`ansible_facts['ansible_interfaces']`变量将包含主机的网卡列表。你可以根据需要进一步处理这些信息,比如使用循环来遍历每个网卡并获取更详细的信息。
除了`ansible_interfaces`,还有其他与网卡相关的Ansible facts,比如`ansible_facts['ansible_all_ipv4_addresses']`用于获取主机的IPv4地址列表,`ansible_facts['ansible_all_ipv6_addresses']`用于获取主机的IPv6地址列表等。你可以根据具体需求选择合适的facts来获取网卡信息。
相关问题
ansible 获取状态是up的物理网卡信息
可以使用 ansible 的 `network` 模块来获取服务器网卡的详细信息,然后筛选出 `up` 状态的物理网卡。
以下是一个示例的 ansible playbook,可以获取服务器已经 up 的物理网卡信息:
```yaml
---
- name: 获取服务器 up 的物理网卡
hosts: your_server_host
gather_facts: yes
become: true
tasks:
- name: 获取网络接口信息
network_interface_facts:
gather_subset: interfaces
register: network_interfaces
- name: 获取 up 的物理网卡
set_fact:
physical_interfaces: "{{ network_interfaces['ansible_facts']['ansible_interfaces'] | reject('match', '^(lo|docker|veth|br-)') | selectattr('active', 'eq', True) | selectattr('type', 'eq', 'ether') | map(attribute='name') | list }}"
- name: 打印结果
debug:
var: physical_interfaces
```
请将 `your_server_host` 替换为你的服务器主机名或IP地址。此 playbook 将使用 `network_interface_facts` 模块获取服务器的网络接口信息,并通过筛选器选择出 `active` 状态为 `True`、类型为 `ether` 的物理网卡。最后将所有符合条件的网卡名称存储到 `physical_interfaces` 变量中,并将其打印出来。
请注意,此 playbook 只适用于 Linux 操作系统,如果您使用其他操作系统,请根据需要修改获取网络接口信息的任务。
ansible 获取服务器up的物理网卡
可以使用 ansible 的 fact 来获取服务器的网络接口信息,然后筛选出`up`状态的物理网卡。
以下是一个示例的 ansible playbook,可以获取服务器已经 up 的物理网卡信息:
```yaml
---
- name: 获取服务器 up 的物理网卡
hosts: your_server_host
gather_facts: yes
become: true
tasks:
- name: 获取网络接口信息
shell: cat /proc/net/dev | awk -F ':' '{if($1 ~ /eth|em|enp|eno|ens|eno/) print $1}' | tr -d ' '
register: network_interfaces
- name: 获取 up 的物理网卡
set_fact:
physical_interfaces: "{{ network_interfaces.stdout_lines | select('match', '^(eth|em|enp|eno|ens|eno)[0-9]+') | list }}"
- name: 打印结果
debug:
var: physical_interfaces
```
请将 `your_server_host` 替换为你的服务器主机名或IP地址。此 playbook 将使用 `cat /proc/net/dev` 命令获取网络接口信息,并通过正则表达式筛选出以 `eth`、`em`、`enp`、`eno`、`ens`、`eno` 开头的网卡名称,然后将其存储到 `physical_interfaces` 变量中。最后将 `physical_interfaces` 变量打印出来。
请注意,此 playbook 只适用于 Linux 操作系统,如果您使用其他操作系统,请根据需要修改获取网络接口信息的任务。
阅读全文