Questo è il secondo articolo di una serie che utilizza i ruoli di sistema Ansible. Nell'articolo precedente, ti ho presentato Ansible e i ruoli di sistema e ho fornito alcuni esempi. I ruoli di sistema ti aiutano a gestire attività a livello di sistema operativo come SELinux, gestire le impostazioni di rete, NTP, ecc. In quell'articolo, hai visto un esempio in cui hai cambiato la modalità SELinux usando system.role-selinux
ruolo. In questo articolo, esaminerò in dettaglio il ruolo di rete in modo che tu possa modificare le connessioni di rete della macchina remota con un singolo playbook.
NetworkManager gestisce le impostazioni di rete come la configurazione dell'interfaccia di rete e la connessione. Fondamentalmente, è un demone che monitora e gestisce le impostazioni di rete. Utilizza un file in /etc/sysconfig/network-scripts
per conservarli. nmcli
è l'utilità utilizzata per creare e modificare i file di connessione da un prompt della shell. Per elencare le connessioni della tua macchina locale usa:
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno0 ethernet connected eno0
eno1 ethernet disconnected ---
virbr0 bridge connected virbr0
Nell'output sopra, puoi vedere varie colonne. La prima colonna, DEVICE , indica l'interfaccia di rete. Il TIPO la colonna mostra che tipo di connessione è questa. Lo STATO la colonna indica lo stato della connessione e l'ultima, CONNESSIONE , è una raccolta di impostazioni che possono essere configurate per un dispositivo. Ogni connessione ha un nome o un ID che la identifica.
Per visualizzare un elenco di tutte le connessioni, puoi utilizzare:
$ nmcli con show
Usando il nmcli
utilità, è possibile aggiungere connessioni di rete e assegnare indirizzi IPv4 o IPv6 per creare connessioni di rete. Tuttavia, come sai, vuoi automatizzare le attività manuali che normalmente faresti con nmcli
. Vuoi gestire i nodi di rete utilizzando un playbook Ansible.
In Ansible, hai tre moduli importanti che ti aiutano a gestire i nodi:servizio, demone e impostazioni di sistema. Puoi anche utilizzare questi moduli per gestire le reti. Nell'articolo precedente, ho discusso dei ruoli di sistema di Ansible. In system-roles, hai il rhel-system-roles.network
ruolo, che è il modo più semplice per configurare e gestire le impostazioni di rete sui nodi gestiti.
Inizia utilizzando questo sistema di rete ruolo per configurare le impostazioni di rete su un nodo gestito.
Qui hai il server1.example.com
macchina gestita. Ho già creato la voce del nodo gestito nel file dell'inventario.
Nota :assicurati che il tuo nodo gestito abbia due connessioni Ethernet perché aggiunge una nuova connessione. Quella seconda interfaccia di rete deve essere disponibile.
Prima di eseguire qualsiasi operazione, verificare che il servizio NetworkManager sia avviato e abilitato sul nodo gestito. Fallo usando un playbook. Per questa attività, utilizza il modulo di servizio in service.yml
file.
---
- name: playbook for starting and enabling the NetworkManager
hosts: server1.example.com
tasks:
- Name: start the service
service:
name: NetworkManager
state: started
enabled: true
Esegui questo playbook:
$ ansible-playbook service.yml
Se il playbook viene eseguito correttamente senza errori, il servizio viene avviato e abilitato sulla macchina del nodo gestito.
Il nome dell'interfaccia secondaria è eno1 così puoi trovare l'indirizzo MAC di questa interfaccia. Poiché stai utilizzando questo indirizzo MAC, il tuo playbook scoprirà l'interfaccia secondaria. Visualizza l'indirizzo MAC di eno1 utilizzando:
$ ip a
L'indirizzo MAC di server1.example.com
è 52:54:00:fe:2f:b8 . Usalo nel playbook.
Ora, dopo l'attività di servizio, installa system-roles
sul controller:
$ yum install rhel-system-roles
Questo comando installerà tutti i ruoli di sistema nella directory predefinita del ruolo.
Ora scrivi un playbook per aggiungere una nuova connessione sul nodo gestito:
---
- 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
Questo è un playbook completo. Ti spiegherò ogni parametro passo dopo passo:
target_mac - Questo è l'indirizzo MAC della seconda interfaccia ethernet. Questo aiuterà a scoprire l'interfaccia corretta su un nodo gestito.
connessione_rete - Questa variabile contiene informazioni per nuove connessioni:
- nome:nome della nuova connessione
- tipo:nuovo tipo di connessione
- mac:la variabile target_mac
- stato:attiva la connessione utilizzando il
up
opzione - ip:disabilita l'opzione DHCP e assegna un indirizzo IP utilizzando questo parametro
Ho usato le variabili necessarie per eseguire il ruolo del sistema di rete. Ora esegui questo playbook:
$ ansible-playbook networkconfiguration.yml
Questo playbook configurerà una connessione di rete statica con un indirizzo IP statico.
Per verificare le impostazioni, accedi a server1.example.com
e conferma la connessione appena aggiunta:
$ nmcli connection show
NAME UUID TYPE DEVICE
eno0 adc52c70-… ethernet eno0
static-network 1be30687-… ethernet eno1
virbr0 0a9de672-… bridge virbr0
Prova a ping
l'indirizzo IP della rete-statica connessione e, se ha esito positivo, hai aggiunto correttamente la nuova connessione di rete.
Verifica se una nuova connessione è stata aggiunta correttamente o meno utilizzando i comandi ad hoc dalla macchina controller:
$ ansible server1.example.com -m shell -a 'nmcli con show'
Questo comando ti mostrerà lo stesso output mostrato nei passaggi precedenti.
Concludi
Questo articolo mostra che puoi configurare le connessioni di rete usando i ruoli di sistema Ansible. Questo piccolo playbook riduce le attività manuali e configura la connessione di rete di molte macchine contemporaneamente semplicemente creando un gruppo di host. Questi ruoli di rete del sistema controllano molti parametri durante l'esecuzione del playbook, confermano che NetworkManager è in esecuzione e verificano la connettività nel playbook stesso. Questo è un ottimo esempio di come puoi utilizzare i ruoli di sistema per automatizzare le configurazioni sui tuoi sistemi.