mirror of
https://gitea.0xace.cc/ansible-galaxy/network.git
synced 2025-06-29 02:53:07 +00:00
add network
This commit is contained in:
20
tasks/RedHat/7.yaml
Normal file
20
tasks/RedHat/7.yaml
Normal 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
15
tasks/RedHat/8.yaml
Normal 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 }}"
|
54
tasks/RedHat/network_manager.yaml
Normal file
54
tasks/RedHat/network_manager.yaml
Normal 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
|
34
tasks/RedHat/network_scripts.yaml
Normal file
34
tasks/RedHat/network_scripts.yaml
Normal 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
3
tasks/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
- name: Include interfaces configuration tasks
|
||||
include: "{{ ansible_os_family }}/{{ ansible_distribution_version }}.yaml"
|
Reference in New Issue
Block a user