Este es el segundo artículo de una serie que utiliza funciones del sistema Ansible. En el artículo anterior, le presenté a Ansible y los roles del sistema y brindé algunos ejemplos. Los roles del sistema lo ayudan a administrar tareas a nivel del sistema operativo como SELinux, administrar la configuración de red, NTP, etc. En ese artículo, vio un ejemplo en el que cambió el modo SELinux usando system.role-selinux
role. En este artículo, analizo el rol de la red en detalle para que pueda modificar las conexiones de red de la máquina remota con un solo libro de jugadas.
NetworkManager administra la configuración de la red, como la configuración de la interfaz de red y la conexión. Básicamente, es un demonio que monitorea y administra la configuración de la red. Utiliza un archivo en /etc/sysconfig/network-scripts
para almacenarlos. nmcli
es la utilidad que se usa para crear y editar archivos de conexiones desde un indicador de shell. Para listar las conexiones de su máquina local use:
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno0 ethernet connected eno0
eno1 ethernet disconnected ---
virbr0 bridge connected virbr0
En el resultado anterior, puede ver varias columnas. La primera columna, DISPOSITIVO , indica la interfaz de red. El TIPO columna muestra qué tipo de conexión es esta. El ESTADO columna indica el estado de la conexión, y la última, CONEXIÓN , es una colección de ajustes que se pueden configurar para un dispositivo. Cada conexión tiene un nombre o ID que la identifica.
Para mostrar una lista de todas las conexiones, puede usar:
$ nmcli con show
Usando el nmcli
utilidad, puede agregar conexiones de red y asignar direcciones IPv4 o IPv6 para crear conexiones de red. Sin embargo, como sabe, desea automatizar tareas manuales que normalmente haría con nmcli
. Desea administrar los nodos de la red mediante un libro de jugadas de Ansible.
En Ansible, tiene tres módulos importantes que lo ayudan a administrar los nodos:servicio, daemon y configuración del sistema. También puede utilizar estos módulos para gestionar redes. En el artículo anterior, analicé los roles del sistema Ansible. En system-roles, tiene el rhel-system-roles.network
función, que es la forma más fácil de configurar y administrar la configuración de red en los nodos administrados.
Comience usando este sistema de red rol para configurar los ajustes de red en un nodo administrado.
Aquí tienes el server1.example.com
máquina administrada. Ya creé la entrada del nodo administrado en el archivo de inventario.
Nota :Asegúrese de que su nodo administrado tenga dos conexiones Ethernet porque agrega una nueva conexión. Esa segunda interfaz de red debe estar disponible.
Antes de realizar cualquier operación, confirme que el servicio NetworkManager esté iniciado y habilitado en su nodo administrado. Haga esto usando un libro de jugadas. Para esta tarea, use el módulo de servicio en service.yml
archivo.
---
- name: playbook for starting and enabling the NetworkManager
hosts: server1.example.com
tasks:
- Name: start the service
service:
name: NetworkManager
state: started
enabled: true
Ejecute este libro de jugadas:
$ ansible-playbook service.yml
Si el libro de jugadas se ejecuta correctamente sin ningún error, el servicio se inicia y habilita en la máquina del nodo administrado.
El nombre de la interfaz secundaria es eno1 para que pueda encontrar la dirección MAC de esta interfaz. Debido a que está utilizando esta dirección MAC, su libro de jugadas encontrará la interfaz secundaria. Mostrar la dirección MAC de eno1 usando:
$ ip a
La dirección MAC de server1.example.com
es 52:54:00:fe:2f:b8 . Usa esto en el libro de jugadas.
Ahora, después de la tarea de servicio, instala system-roles
en el controlador:
$ yum install rhel-system-roles
Este comando instalará todas las funciones del sistema en el directorio predeterminado de la función.
Ahora escriba un libro de jugadas para agregar una nueva conexión en el nodo administrado:
---
- name: playbook for configuring second interface
hosts: server1.example.com
vars:
target_mac: “52:54:00:fe:2f:b8”
network_connection:
- name: static-network
type: ethernet
mac: “{{ target_mac }}”
state: up
ip :
dhcp: no
address:
- 192.168.0.5/24
roles:
- rhel-system-roles.network
Este es un libro de jugadas completo. Te explicaré cada parámetro paso a paso:
objetivo_mac - Esta es la dirección MAC de la segunda interfaz ethernet. Esto ayudará a encontrar la interfaz correcta en un nodo administrado.
conexión_de_red - Esta variable contiene información para nuevas conexiones:
- nombre:nombre de la nueva conexión
- tipo:nuevo tipo de conexión
- mac:la variable target_mac
- state:active la conexión usando el
up
opción - ip:deshabilite la opción DHCP y asigne una dirección IP usando este parámetro
Usé variables que se requieren para ejecutar el rol del sistema de red. Ahora ejecute este libro de jugadas:
$ ansible-playbook networkconfiguration.yml
Este libro de jugadas configurará una conexión de red estática con una dirección IP estática.
Para verificar la configuración, inicie sesión en server1.example.com
y confirme la conexión recién agregada:
$ nmcli connection show
NAME UUID TYPE DEVICE
eno0 adc52c70-… ethernet eno0
static-network 1be30687-… ethernet eno1
virbr0 0a9de672-… bridge virbr0
Intenta ping
la dirección IP de la red-estática conexión, y si tiene éxito, entonces agregó con éxito la nueva conexión de red.
Verifique si una nueva conexión se agregó correctamente o no utilizando los comandos ad hoc de la máquina controladora:
$ ansible server1.example.com -m shell -a 'nmcli con show'
Este comando le mostrará el mismo resultado que se muestra en los pasos anteriores.
Resumir
Este artículo muestra que puede configurar conexiones de red mediante roles del sistema Ansible. Este pequeño libro de jugadas reduce las tareas manuales y configura la conexión de red de muchas máquinas a la vez simplemente creando un grupo de hosts. Estos roles de red del sistema verifican muchos parámetros mientras ejecutan el libro de jugadas, confirman que NetworkManager se está ejecutando y prueban la conectividad en el propio libro de jugadas. Este es un gran ejemplo de cómo puede usar funciones del sistema para automatizar configuraciones en sus sistemas.