From 8de6c766b55ed166d9ba95b5dfc07005341ede58 Mon Sep 17 00:00:00 2001
From: Adar Nimrod <nimrod@shore.co.il>
Date: Fri, 1 Jan 2016 21:55:21 +0200
Subject: [PATCH] Debian Stretch enables Systemd's predictable network
 interface names and Vagrant doesn't handle it properly (yet). Added a small
 manual workaround for the time being.

---
 Vagrantfile                 | 11 +++++++----
 files/kodi/enp0s8.network   |  5 +++++
 files/nspawn/enp0s8.network |  5 +++++
 networkd.yml                | 37 +++++++++++++++++++++++++++++++++++++
 site.yml                    |  5 +++++
 5 files changed, 59 insertions(+), 4 deletions(-)
 create mode 100644 files/kodi/enp0s8.network
 create mode 100644 files/nspawn/enp0s8.network
 create mode 100644 networkd.yml

diff --git a/Vagrantfile b/Vagrantfile
index 56a29cd..1bbe216 100644
--- a/Vagrantfile
+++ b/Vagrantfile
@@ -25,8 +25,10 @@ Vagrant.configure(2) do |config|
   end
 
   config.vm.define "kodi" do |kodi|
-    kodi.vm.hostname = "kodi.Ansible.vagrant"
-    kodi.vm.box = "remram/debian-9-amd64"
+    #kodi.vm.hostname = "kodi.Ansible.vagrant"
+    kodi.vm.box = "fujimakishouten/debian-stretch64"
+    kodi.vm.network "private_network", auto_config: false, ip: "172.28.128.4"
+    kodi.landrush.host_ip_address = "172.28.128.4"
     # TODO: Find the correct syntax for a single command.
     #kodi.vm.provider("virtualbox"), gui: true
     kodi.vm.provider "virtualbox" do |vb|
@@ -35,9 +37,10 @@ Vagrant.configure(2) do |config|
   end
 
   config.vm.define "nspawn" do |nspawn|
-    nspawn.vm.hostname = "nspawn.Ansible.vagrant"
+    #nspawn.vm.hostname = "nspawn.Ansible.vagrant"
     nspawn.vm.box = "fujimakishouten/debian-stretch64"
-    #nspawn.vm.box = "remram/debian-9-amd64"
+    nspawn.vm.network "private_network", auto_config: false, ip: "172.28.128.5"
+    nspawn.landrush.host_ip_address = "172.28.128.5"
   end
 
   config.vm.define "gitolite" do |gitolite|
diff --git a/files/kodi/enp0s8.network b/files/kodi/enp0s8.network
new file mode 100644
index 0000000..e541422
--- /dev/null
+++ b/files/kodi/enp0s8.network
@@ -0,0 +1,5 @@
+[Match]
+Name=enp0s8
+
+[Network]
+Address=172.28.128.4/24
diff --git a/files/nspawn/enp0s8.network b/files/nspawn/enp0s8.network
new file mode 100644
index 0000000..067e1a9
--- /dev/null
+++ b/files/nspawn/enp0s8.network
@@ -0,0 +1,5 @@
+[Match]
+Name=enp0s8
+
+[Network]
+Address=172.28.128.5/24
diff --git a/networkd.yml b/networkd.yml
new file mode 100644
index 0000000..d495845
--- /dev/null
+++ b/networkd.yml
@@ -0,0 +1,37 @@
+---
+# Bootstrap a Vagrant box with predictable network interface names.
+
+- hosts:
+  - all
+  tasks:
+  - name: Set hostname
+    hostname:
+      name: '{{ inventory_hostname }}.Ansible.vagrant'
+
+  - name: Configure network interfaces
+    with_fileglob:
+    - 'files/{{ inventory_hostname }}/*.netdev'
+    - 'files/{{ inventory_hostname }}/*.network'
+    - 'files/{{ inventory_hostname }}/*.link'
+    copy:
+      src: '{{ item }}'
+      dest: '/etc/systemd/network/{{ item|basename }}'
+      owner: root
+      group: root
+      mode: '0644'
+
+  - name: Disable ifupdown, enable networkd
+    with_items:
+    - name: systemd-resolved
+      state: started
+      enabled: yes
+    - name: systemd-networkd
+      state: started
+      enabled: yes
+    - name: networking
+      state: started
+      enabled: no
+    service:
+      name: '{{ item.name }}'
+      state: '{{ item.state }}'
+      enabled: '{{ item.enabled }}'
diff --git a/site.yml b/site.yml
index 825268d..0586326 100644
--- a/site.yml
+++ b/site.yml
@@ -1,4 +1,9 @@
 ---
+- hosts:
+  - nspawn
+  - kodi
+  include: networkd.yml
+
 - hosts:
   - all
   gather_facts: False
-- 
GitLab