第 4 章 使用系统角色配置网络连接
RHEL 上的 network
系统角色可让管理员使用 Ansible 自动执行与网络相关的配置和管理任务。
4.1. 配置以太网连接
这部分论述了如何使用静态和动态 IP 地址配置以太网连接的不同方法。
4.1.1. 使用 RHEL 系统角色配置静态以太网连接
此流程描述了如何通过运行 Ansible playbook 来使用 RHEL 系统角色远程为带有以下设置的 enp7s0
接口添加以太网连接:
-
静态 IPv4 地址 -
192.0.2.1
子网掩码/24
-
静态 IPv6 地址 -
2001:db8:1::1
子网掩码/64
-
IPv4 默认网关 -
192.0.2.254
-
IPv6 默认网关 -
2001:db8:1::fffe
-
IPv4 DNS 服务器 -
192.0.2.200
-
IPv6 DNS 服务器 -
2001:db8:1::ffbb
-
DNS 搜索域 -
example.com
在 Ansible 控制节点上运行此步骤。
先决条件
-
在控制节点上安装
ansible
和rhel-system-roles
软件包。 -
如果您运行 playbook 时使用了与
root
不同的远程用户, 则此用户在受管节点上需要具有适当的sudo
权限。 - 主机使用 NetworkManager 配置网络。
流程
如果要执行 playbook 中说明的主机尚未撤离,请将此主机的 IP 或名称添加到
/etc/ansible/hosts
Ansible 清单文件中:node.example.com
使用以下内容创建
~/ethernet-static-IP.yml
playbook:--- - name: Configure an Ethernet connection with static IP hosts: node.example.com become: true tasks: - include_role: name: linux-system-roles.network vars: network_connections: - name: enp7s0 type: ethernet autoconnect: yes ip: address: - 192.0.2.1/24 - 2001:db8:1::1/64 gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com state: up
运行 playbook:
以
root
用户身份连接到受管主机,输入:#
ansible-playbook -u root ~/ethernet-static-IP.yml
要以用户连接到受管主机,请输入:
#
ansible-playbook -u user_name
--ask-become-pass ~/ethernet-static-IP.yml--ask-become-pass
选项可定义该ansible-playbook
命令提示输入-u user_name
选项中定义的用户的sudo
密码。
如果没有指定
-u user_name
选项,请以当前登录到控制节点的用户ansible-playbook
连接到受管主机。
其它资源
-
有关使用的参数
network_connections
以及该network
系统角色的额外信息,请查看该/usr/share/ansible/roles/rhel-system-roles.network/README.md
文件。 -
有关该
ansible-playbook
命令的详情请参考ansible-playbook(1)
man page。
4.1.2. 使用 RHEL 系统角色配置动态以太网连接
此流程描述了如何使用 RHEL 系统角色通过运行 Ansible playbook 为 enp7s0
接口远程添加动态以太网连接。在这个设置中,网络连接从 DHCP 服务器请求这个连接的 IP 设置。在 Ansible 控制节点上运行此步骤。
先决条件
- 网络中有 DHCP 服务器。
-
在控制节点上安装
ansible
和rhel-system-roles
软件包。 -
如果您运行 playbook 时使用了与
root
不同的远程用户, 则此用户在受管节点上需要具有适当的sudo
权限。 - 主机使用 NetworkManager 配置网络。
流程
如果要执行 playbook 中说明的主机尚未撤离,请将此主机的 IP 或名称添加到
/etc/ansible/hosts
Ansible 清单文件中:node.example.com
使用以下内容创建
~/ethernet-dynamic-IP.yml
playbook:--- - name: Configure an Ethernet connection with dynamic IP hosts: node.example.com become: true tasks: - include_role: name: linux-system-roles.network vars: network_connections: - name: enp7s0 type: ethernet autoconnect: yes ip: dhcp4: yes auto6: yes state: up
运行 playbook:
以
root
用户身份连接到受管主机,输入:#
ansible-playbook -u root ~/ethernet-dynamic-IP.yml
要以用户连接到受管主机,请输入:
#
ansible-playbook -u user_name
--ask-become-pass ~/ethernet-dynamic-IP.yml该
--ask-become-pass
选项可定义该ansible-playbook
命令提示输入-u user_name
选项中定义的用户的sudo
密码。
如果没有指定
-u user_name
选项,请以当前登录到控制节点的用户ansible-playbook
连接到受管主机。
其它资源
-
有关使用的参数
network_connections
以及network
系统角色的额外信息,请查看/usr/share/ansible/roles/rhel-system-roles.network/README.md
文件。 -
有关
ansible-playbook
命令的详情,请参考ansible-playbook(1)
man page。
4.2. 使用 802.1X 标准向网络验证 RHEL 客户端
管理员通常使用基于 IEEE 802.1X 标准的基于端口的网络访问控制(NAC)来保护网络不受未授权 LAN 和 Wi-Fi 客户端的影响。本节中的步骤描述了配置网络身份验证的不同选项。
4.2.1. 使用 RHEL 系统角色通过 802.1X 网络身份验证配置静态以太网连接
使用 RHEL 系统角色,您可以自动创建使用 802.1X 标准验证客户端的以太网连接。此流程描述了如何通过运行 Ansible playbook 来远程为带有以下设置的 enp1s0
接口添加以太网连接:
-
静态 IPv4 地址 -
192.0.2.1
子网掩码/24
-
静态 IPv6 地址 -
2001:db8:1::1
子网掩码/64
-
IPv4 默认网关 -
192.0.2.254
-
IPv6 默认网关 -
2001:db8:1::fffe
-
IPv4 DNS 服务器 -
192.0.2.200
-
IPv6 DNS 服务器 -
2001:db8:1::ffbb
-
DNS 搜索域 -
example.com
-
802.1X 网络验证使用
TLS
可扩展验证协议(EAP)
在 Ansible 控制节点上运行此步骤。
先决条件
-
在控制节点上安装
ansible
和rhel-system-roles
软件包。 -
如果您运行 playbook 时使用了与
root
不同的远程用户, 则此用户在受管节点上需要具有适当的sudo
权限。 - 网络支持 802.1X 网络身份验证。
- 受管节点使用 NetworkManager。
control 节点上存在 TLS 身份验证所需的以下文件:
-
保存在
/srv/data/client.key
文件中的客户端密钥。 -
存储在
/srv/data/client.crt
文件中的客户端证书。 -
存储在
/srv/data/ca.crt
文件中的证书颁发机构(CA)证书。
-
保存在
流程
如果要执行 playbook 中说明的主机尚未撤离,请将主机的 IP 地址或名称添加到
/etc/ansible/hosts
Ansible 清单文件中:node.example.com
使用以下内容创建
~/enable-802.1x.yml
playbook:--- - name: Configure an Ethernet connection with 802.1X authentication hosts: node.example.com become: true tasks: - name: Copy client key for 802.1X authentication copy: src: "/srv/data/client.key" dest: "/etc/pki/tls/private/client.key" mode: 0600 - name: Copy client certificate for 802.1X authentication copy: src: "/srv/data/client.crt" dest: "/etc/pki/tls/certs/client.crt" - name: Copy CA certificate for 802.1X authentication copy: src: "/srv/data/ca.crt" dest: "/etc/pki/ca-trust/source/anchors/ca.crt" - include_role: name: linux-system-roles.network vars: network_connections: - name: enp1s0 type: ethernet autoconnect: yes ip: address: - 192.0.2.1/24 - 2001:db8:1::1/64 gateway4: 192.0.2.254 gateway6: 2001:db8:1::fffe dns: - 192.0.2.200 - 2001:db8:1::ffbb dns_search: - example.com ieee802_1x: identity: user_name eap: tls private_key: "/etc/pki/tls/private/client.key" private_key_password: "password" client_cert: "/etc/pki/tls/certs/client.crt" ca_cert: "/etc/pki/ca-trust/source/anchors/ca.crt" domain_suffix_match: example.com state: up
运行 playbook:
以
root
用户身份连接到受管主机,输入:#
ansible-playbook -u root ~/enable-802.1x.yml
要以用户连接到受管主机,请输入:
#
ansible-playbook -u user_name
--ask-become-pass ~/ethernet-static-IP.yml--ask-become-pass
选项可定义该ansible-playbook
命令提示输入-u user_name
选项中定义的用户的sudo
密码。
如果没有指定
-u user_name
选项,请以当前登录到控制节点的用户ansible-playbook
连接到受管主机。
其它资源
-
有关使用的参数
network_connections
以及network
系统角色的额外信息,请查看/usr/share/ansible/roles/rhel-system-roles.network/README.md
文件。 -
有关 802.1X 参数的详情,请查看文件中的
ieee802_1x
章节/usr/share/ansible/roles/rhel-system-roles.network/README.md
。 -
有关
ansible-playbook
命令的详情请参考ansible-playbook(1)
man page。
为了尽快向用户提供最新的信息,本文档可能会包括由机器自动从英文原文翻译的内容。如需更多信息,请参阅此说明。