From 597f35bfb61711b39869fa50add10813308090df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Rafael=20L=C3=A1szl=C3=B3?= <rlacko99@gmail.com>
Date: Thu, 16 Sep 2021 10:45:38 +0200
Subject: [PATCH] Add netplan config and traceroute package

---
 defaults/main.yml                             | 16 +++++++++++++
 tasks/main.yml                                |  4 ++++
 tasks/netplan.yaml                            | 23 +++++++++++++++++++
 tasks/packages.yml                            |  1 +
 .../99-disable-network-config.cfg.j2          |  7 ++++++
 templates/etc/netplan/01-netcfg.yaml.j2       | 10 ++++++++
 6 files changed, 61 insertions(+)
 create mode 100644 tasks/netplan.yaml
 create mode 100644 templates/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg.j2
 create mode 100644 templates/etc/netplan/01-netcfg.yaml.j2

diff --git a/defaults/main.yml b/defaults/main.yml
index ccbd58d..9708f5c 100644
--- a/defaults/main.yml
+++ b/defaults/main.yml
@@ -23,3 +23,19 @@ users:
 #  passwordless_sudo: yes
 #  # https://docs.ansible.com/ansible/latest/collections/ansible/posix/authorized_key_module.html#examples
 #  keys_url: https://git.sch.bme.hu/xy.keys
+
+# netplan:
+#   network:
+#     ethernets:
+#       ens192:
+#         dhcp4: no
+#         addresses:
+#           - 152.66.208.666/24
+#         nameservers:
+#           search: [sch.bme.hu]
+#           addresses: [152.66.208.1, 8.8.8.8]
+#         gateway4: 152.66.208.254
+#       ens224:
+#         dhcp4: no
+#         addresses:
+#           - 192.168.1.254/24
diff --git a/tasks/main.yml b/tasks/main.yml
index 051d931..99844df 100644
--- a/tasks/main.yml
+++ b/tasks/main.yml
@@ -34,3 +34,7 @@
 
 - name: Fix multipath UUID VMWare errors
   include_tasks: multipath.yaml
+
+- name: Update netplan config
+  include_tasks: netplan.yaml
+  when: netplan is defined
diff --git a/tasks/netplan.yaml b/tasks/netplan.yaml
new file mode 100644
index 0000000..981aa98
--- /dev/null
+++ b/tasks/netplan.yaml
@@ -0,0 +1,23 @@
+---
+- name: Disable cloud init networking
+  template:
+    src: etc/cloud/cloud.cfg.d/99-disable-network-config.cfg.j2
+    dest: /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
+    mode: 0644
+
+- name: Add netplan network config
+  template:
+    src: etc/netplan/01-netcfg.yaml.j2
+    dest: /etc/netplan/01-netcfg.yaml
+    mode: 0644
+  register: netplan_config
+
+- name: Remove old netplan config
+  ansible.builtin.file:
+    path: /etc/netplan/50-cloud-init.yaml
+    state: absent
+  when: netplan_config.changed
+
+- name: Apply Netplan Configuration
+  command: netplan apply
+  when: netplan_config.changed
diff --git a/tasks/packages.yml b/tasks/packages.yml
index 68ef1f9..653d510 100644
--- a/tasks/packages.yml
+++ b/tasks/packages.yml
@@ -19,6 +19,7 @@
       - strace
       - tcpdump
       - xxd
+      - traceroute
 
       # Editors
       - nano
diff --git a/templates/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg.j2 b/templates/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg.j2
new file mode 100644
index 0000000..c12ad78
--- /dev/null
+++ b/templates/etc/cloud/cloud.cfg.d/99-disable-network-config.cfg.j2
@@ -0,0 +1,7 @@
+#
+# !!!
+# {{ ansible_managed }}
+# !!!
+
+# Disable cloudinit network config
+network: {config: disabled}
diff --git a/templates/etc/netplan/01-netcfg.yaml.j2 b/templates/etc/netplan/01-netcfg.yaml.j2
new file mode 100644
index 0000000..8cd0c6f
--- /dev/null
+++ b/templates/etc/netplan/01-netcfg.yaml.j2
@@ -0,0 +1,10 @@
+#
+# !!!
+# {{ ansible_managed }}
+# !!!
+
+network:
+  version: 2
+  renderer: networkd
+  ethernets:
+{{ netplan['network']['ethernets']|to_nice_yaml|indent(4, true) }}
-- 
GitLab