Inital release 0.1.0
parent
6a946541d5
commit
84dbf2030c
|
@ -0,0 +1,9 @@
|
||||||
|
# Changelog
|
||||||
|
All notable changes to this project will be documented in this file.
|
||||||
|
|
||||||
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||||
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [0.1.0] - 2020-06-04
|
||||||
|
### Added
|
||||||
|
- Inital release
|
2
LICENSE
2
LICENSE
|
@ -1,6 +1,6 @@
|
||||||
MIT License
|
MIT License
|
||||||
|
|
||||||
Copyright (c) 2020 Zmey!
|
Copyright (c) 2020 Oleg "Zmey!" Vasiliev
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|
|
@ -0,0 +1,74 @@
|
||||||
|
networkd
|
||||||
|
=========
|
||||||
|
|
||||||
|
An Ansible role for configuring systemd-networkd.
|
||||||
|
|
||||||
|
This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
------------
|
||||||
|
|
||||||
|
This role assumes that networkd is already present in the system. So it should be suitable for any distro with networkd.
|
||||||
|
|
||||||
|
Role Variables
|
||||||
|
--------------
|
||||||
|
|
||||||
|
Example configuration. Follow networkd documentation to construct yours.
|
||||||
|
```yaml
|
||||||
|
networkd:
|
||||||
|
link:
|
||||||
|
# This is file name
|
||||||
|
- name: eth0
|
||||||
|
# This is prefix for file. This results in following file name: 50-eth0.link
|
||||||
|
priority: 50
|
||||||
|
content:
|
||||||
|
- Match:
|
||||||
|
- MACAddress: "aa:bb:cc:dd:ee:ff"
|
||||||
|
- Link:
|
||||||
|
- Name: eth0
|
||||||
|
netdev:
|
||||||
|
- name: br0
|
||||||
|
priority: 50
|
||||||
|
content:
|
||||||
|
- NetDev:
|
||||||
|
- Name: br0
|
||||||
|
- Kind: bridge
|
||||||
|
network:
|
||||||
|
- name: eth0
|
||||||
|
priority: 50
|
||||||
|
content:
|
||||||
|
- Match:
|
||||||
|
- Name: eth0
|
||||||
|
- Network:
|
||||||
|
- DHCP: ipv4
|
||||||
|
- LinkLocalAddressing: no
|
||||||
|
- LLDP: yes
|
||||||
|
- DHCPv4:
|
||||||
|
- UseHostname: no
|
||||||
|
- Hostname: gimme-some-addr
|
||||||
|
- UseMTU: yes
|
||||||
|
- name: br0_slaves
|
||||||
|
priority: 50
|
||||||
|
content:
|
||||||
|
- Match:
|
||||||
|
- MACAddress: "11:bb:cc:dd:ee:ff 22:bb:cc:dd:ee:ff"
|
||||||
|
- Network:
|
||||||
|
- Bridge: br0
|
||||||
|
```
|
||||||
|
|
||||||
|
What to do on configuration changes. Could be "restart", "reload" or "nothing". Variable is mandatory.
|
||||||
|
```yaml
|
||||||
|
networkd_apply_action: "restart"
|
||||||
|
```
|
||||||
|
|
||||||
|
Custom content for `/etc/resolv.conf`. Every element in list is string in file. Variable is optional.
|
||||||
|
```yaml
|
||||||
|
networkd_resolv_conf_content:
|
||||||
|
- nameserver 1.1.1.1
|
||||||
|
- nameserver 8.8.8.8
|
||||||
|
```
|
||||||
|
|
||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
MIT
|
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
networkd:
|
||||||
|
|
||||||
|
# Could be "restart", "reload" or "nothing"
|
||||||
|
networkd_apply_action: "restart"
|
|
@ -1,6 +1,17 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
- name: networkd | Reload configuration
|
- name: networkd | Do restart
|
||||||
systemd:
|
systemd:
|
||||||
name: systemd-networkd
|
name: systemd-networkd
|
||||||
state: restarted
|
state: restarted
|
||||||
|
|
||||||
|
# From man:
|
||||||
|
# Reload .netdev and .network files. If a new .netdev file is found, then the corresponding netdev is created.
|
||||||
|
# Note that even if an existing .netdev is modified or removed, systemd-networkd does not update or remove the netdev.
|
||||||
|
# If a new, modified or removed .network file is found, then all interfaces which match the file are reconfigured.
|
||||||
|
- name: networkd | Do reload
|
||||||
|
shell: networkctl reload
|
||||||
|
|
||||||
|
- name: networkd | Do nothing
|
||||||
|
debug:
|
||||||
|
msg: "Not applying new configuration due to selected action."
|
|
@ -0,0 +1,15 @@
|
||||||
|
galaxy_info:
|
||||||
|
author: 'Oleg "Zmey!" Vasiliev'
|
||||||
|
description: An Ansible role for configuring systemd-networkd
|
||||||
|
|
||||||
|
license: MIT
|
||||||
|
|
||||||
|
min_ansible_version: 2.4
|
||||||
|
|
||||||
|
galaxy_tags:
|
||||||
|
- networking
|
||||||
|
- networkd
|
||||||
|
- systemd
|
||||||
|
|
||||||
|
dependencies: []
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
group: root
|
group: root
|
||||||
with_items: "{{ networkd.link | default([]) }}"
|
with_items: "{{ networkd.link | default([]) }}"
|
||||||
register: networkd_deployed_link
|
register: networkd_deployed_link
|
||||||
notify: networkd | Reload configuration
|
notify: networkd | Do {{ networkd_apply_action }}
|
||||||
|
|
||||||
- name: networkd | Deploy .netdev configs
|
- name: networkd | Deploy .netdev configs
|
||||||
template:
|
template:
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
group: root
|
group: root
|
||||||
with_items: "{{ networkd.netdev | default([]) }}"
|
with_items: "{{ networkd.netdev | default([]) }}"
|
||||||
register: networkd_deployed_netdev
|
register: networkd_deployed_netdev
|
||||||
notify: networkd | Reload configuration
|
notify: networkd | Do {{ networkd_apply_action }}
|
||||||
|
|
||||||
- name: networkd | Deploy .network configs
|
- name: networkd | Deploy .network configs
|
||||||
template:
|
template:
|
||||||
|
@ -31,4 +31,4 @@
|
||||||
group: root
|
group: root
|
||||||
with_items: "{{ networkd.network | default([]) }}"
|
with_items: "{{ networkd.network | default([]) }}"
|
||||||
register: networkd_deployed_network
|
register: networkd_deployed_network
|
||||||
notify: networkd | Reload configuration
|
notify: networkd | Do {{ networkd_apply_action }}
|
||||||
|
|
|
@ -1,5 +1,12 @@
|
||||||
---
|
---
|
||||||
|
|
||||||
|
- name: Check role vars
|
||||||
|
assert:
|
||||||
|
that:
|
||||||
|
- networkd_apply_action == "restart" or networkd_apply_action == "reload" or networkd_apply_action == "nothing"
|
||||||
|
fail_msg: 'networkd_apply_action shoud be "restart", "reload" or "nothing"'
|
||||||
|
quiet: yes
|
||||||
|
|
||||||
- import_tasks: deploy_configs.yml
|
- import_tasks: deploy_configs.yml
|
||||||
|
|
||||||
- import_tasks: remove_unmanaged.yml
|
- import_tasks: remove_unmanaged.yml
|
||||||
|
@ -11,6 +18,7 @@
|
||||||
mode: 644
|
mode: 644
|
||||||
owner: root
|
owner: root
|
||||||
group: root
|
group: root
|
||||||
|
when: networkd_resolv_conf_content is defined
|
||||||
|
|
||||||
- name: networkd | Enable and start service
|
- name: networkd | Enable and start service
|
||||||
systemd:
|
systemd:
|
||||||
|
|
|
@ -17,4 +17,4 @@
|
||||||
- (item.path) not in ( networkd_deployed_link | json_query('results[].invocation.module_args.dest') | default([]) )
|
- (item.path) not in ( networkd_deployed_link | json_query('results[].invocation.module_args.dest') | default([]) )
|
||||||
- (item.path) not in ( networkd_deployed_netdev | json_query('results[].invocation.module_args.dest') | default([]) )
|
- (item.path) not in ( networkd_deployed_netdev | json_query('results[].invocation.module_args.dest') | default([]) )
|
||||||
- (item.path) not in ( networkd_deployed_network | json_query('results[].invocation.module_args.dest') | default([]) )
|
- (item.path) not in ( networkd_deployed_network | json_query('results[].invocation.module_args.dest') | default([]) )
|
||||||
notify: networkd | Reload configuration
|
notify: networkd | Do {{ networkd_apply_action }}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# {{ ansible_managed }}
|
# {{ ansible_managed }}
|
||||||
{% for item in networkd_resolver %}
|
{% for item in networkd_resolv_conf_content %}
|
||||||
{{ item }}
|
{{ item }}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in New Issue