add network

This commit is contained in:
ace
2021-10-27 00:34:13 +03:00
commit 3ef3e332ab
14 changed files with 248 additions and 0 deletions

20
tasks/RedHat/7.yaml Normal file
View File

@ -0,0 +1,20 @@
---
- block:
- include_tasks: network_scripts.yaml
when: network.network_scripts is defined
- block:
- name: Install NetworkManager-dispatcher-routing-rules
package:
name:
- NetworkManager-dispatcher-routing-rules
state: present
- name: Configure interfaces and routes with nmcli
include: network_manager.yaml iface={{ item }}
loop: "{{ network.network_manager.iface }}"
when: network.network_manager is defined

15
tasks/RedHat/8.yaml Normal file
View File

@ -0,0 +1,15 @@
---
- block:
- name: Install network scripts
package:
name: network-scripts
state: present
- include_tasks: network_scripts.yaml
when: network.network_scripts is defined
- name: Configure interfaces and routes with nmcli
include: network_manager.yaml iface={{ item }}
when: network.network_manager is defined
loop: "{{ network.network_manager.iface }}"

View File

@ -0,0 +1,54 @@
---
- block:
- name: Configure interfaces with nmcli
community.general.nmcli:
conn_name: "{{ iface.conn_name }}"
type: "{{ iface.type | default('ethernet') }}"
ip4: "{{ omit if iface.ip4 is not defined else (iface.ip4|join(', ')) }}"
ip6: "{{ omit if iface.ip6 is not defined else (iface.ip6|join(', ')) }}"
gw4: "{{ iface.gw4 | default(omit) }}"
gw6: "{{ iface.gw6 | default(omit) }}"
never_default4: "{{ iface.never_default4 | default('yes') }}"
vlanid: "{{ iface.vlanid | default(omit) }}"
mtu: "{{ iface.mtu | default(0) }}"
zone: "{{ iface.zone | default(omit) }}"
state: present
notify:
- Reload interface with nmcli
- name: Get existing routes
shell: nmcli -g ipv4.routes connection show {{ iface.conn_name }}
register: existing_routes4_res
changed_when: False
- name: Set fact about existing and new routes
set_fact:
existing_routes4: "{{ existing_routes4_res.stdout | hash('sha256') }}"
new_routes4: "{{ '' if iface.routes4 is not defined else (iface.routes4|join(', ') | hash('sha256')) }}"
#- debug:
# msg: "{{ existing_routes4_res.stdout | hash('sha256') }}"
#- debug:
# msg: "{{ '' if iface.routes4 is not defined else (iface.routes4|join(', ') | hash('sha256')) }}"
- name: Add routes and rules with nmcli
community.general.nmcli:
conn_name: "{{ iface.conn_name }}"
type: "{{ iface.type | default('ethernet') }}"
ip4: "{{ omit if iface.ip4 is not defined else (iface.ip4|join(', ')) }}"
ip6: "{{ omit if iface.ip6 is not defined else (iface.ip6|join(', ')) }}"
gw4: "{{ iface.gw4 | default(omit) }}"
gw6: "{{ iface.gw6 | default(omit) }}"
never_default4: "{{ iface.never_default4 | default('yes') }}"
vlanid: "{{ iface.vlanid | default(omit) }}"
routes4: "{{ iface.routes4 | default(omit) }}"
routing_rules4: "{{ iface.routing_rules4 | default(omit) }}"
routes6: "{{ iface.routes6 | default(omit) }}"
routing_rules6: "{{ iface.routing_rules6 | default(omit) }}"
mtu: "{{ iface.mtu | default(0) }}"
zone: "{{ iface.zone | default(omit) }}"
state: present
when: existing_routes4 != new_routes4
notify:
- Reload interface with nmcli

View File

@ -0,0 +1,34 @@
---
- block:
- name: Create interfaces config files
template:
src: "ifcfg-{{ item.type | default('ethernet') }}.j2"
dest: "/etc/sysconfig/network-scripts/ifcfg-{{ item.name }}"
notify:
- Up interface
loop: "{{ network.network_scripts.iface }}"
- name: Create routing table in rt_tables
template:
src: rt_tables.j2
dest: /etc/iproute2/rt_tables
notify:
- Up interface
- name: Create routing rules for interfaces
template:
src: rule.j2
dest: "/etc/sysconfig/network-scripts/rule-{{ item.name }}"
notify:
- Up interface
loop: "{{ network.network_scripts.iface }}"
- name: Create routes for interfaces
template:
src: route.j2
dest: "/etc/sysconfig/network-scripts/route-{{ item.name }}"
notify:
- Up interface
loop: "{{ network.network_scripts.iface }}"
when: network.network_scripts is defined

3
tasks/main.yml Normal file
View File

@ -0,0 +1,3 @@
---
- name: Include interfaces configuration tasks
include: "{{ ansible_os_family }}/{{ ansible_distribution_version }}.yaml"