summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2022-01-02 04:31:50 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2022-01-02 04:44:39 +0100
commite3e75161d06387a979b8f4a04f406f9b54f8703e (patch)
tree85f1917c8ba2f0c416fcd1298d29c41ea0b58918
parentMove paths. (diff)
downloadnspawn-e3e75161d06387a979b8f4a04f406f9b54f8703e.tar.gz
nspawn-e3e75161d06387a979b8f4a04f406f9b54f8703e.tar.xz
Network rewrites.
-rw-r--r--manifests/machine.pp2
-rw-r--r--manifests/os/arch.pp32
-rw-r--r--manifests/os/debian.pp39
-rw-r--r--manifests/util/disable_networking.pp22
-rw-r--r--manifests/util/enable_networkd.pp35
5 files changed, 71 insertions, 59 deletions
diff --git a/manifests/machine.pp b/manifests/machine.pp
index a16a82c..8ba9bf3 100644
--- a/manifests/machine.pp
+++ b/manifests/machine.pp
@@ -32,7 +32,7 @@ define nspawn::machine (
create_resources("nspawn::os::${os}", { $machine => $os_opts })
service { "systemd-nspawn@${machine}.service":
- enable => true,
+ enable => $enable,
}
}
diff --git a/manifests/os/arch.pp b/manifests/os/arch.pp
index 0affee1..e5fc210 100644
--- a/manifests/os/arch.pp
+++ b/manifests/os/arch.pp
@@ -4,35 +4,11 @@ define nspawn::os::arch (
ensure_packages(['arch-install-scripts'])
- exec { "/usr/bin/pacstrap /var/lib/machines/${machine} base puppet":
- creates => "/var/lib/machines/${machine}/etc/os-release",
- }
-
- file { "/var/lib/machines/${machine}/etc/systemd/network/20-puppet.conf":
- content => @(EOF)
- [Match]
- Name=host0
+ $machine_path = "/var/lib/machines/${machine}"
- [Network]
- Address=10.0.0.43/23
- Gateway=10.0.0.1
- IPv6AcceptRA=1
- | EOF
+ exec { "/usr/bin/pacstrap '${machine_path}' base puppet":
+ creates => "${machine_path}/etc/os-release",
}
- if $facts['machined-info'][$machine]['State'] == 'running' {
- notify { "Notify skipping ${machine} setup":
- message => "Skipping setup for ${machine}, already running",
- }
- } else {
- exec { "Enable systemd-networkd on ${machine}":
- command => [ '/usr/bin/systemd-nspawn',
- '-M', $machine,
- '--quiet',
- 'systemctl', 'enable', 'systemd-networkd',
- ],
- # among others
- creates => "/var/lib/machines/${machine}/etc/systemd/system/multi-user.target.wants/systemd-networkd.service",
- }
- }
+ nspawn::util::enable_networkd { $machine: }
}
diff --git a/manifests/os/debian.pp b/manifests/os/debian.pp
index b8a1bd4..fbab9ac 100644
--- a/manifests/os/debian.pp
+++ b/manifests/os/debian.pp
@@ -2,48 +2,23 @@ define nspawn::os::debian (
String $os_version,
String $machine = $name,
) {
+
ensure_packages(['debootstrap'])
exec { "/usr/bin/deboostrap ${os_version} /var/lib/machines/${machine}":
creates => "/var/lib/machines/${machine}/etc/os-release",
}
- file { "/var/lib/machines/${machine}/etc/network/interfaces":
- ensure => file,
- content => @(EOF)
- # File managed by puppet
- # See interfaces(5)
- source-directory /etc/network/interfaces.d
- | EOF
- }
-
- file { "/var/lib/machines/${machine}/etc/network/interfaces.d":
- ensure => directory,
- }
-
- file { "/var/lib/machines/${machine}/etc/network/interfaces.d/puppet":
- ensure => file,
- content => @(EOF)
- # File managed by puppet
- auto host0
- # allow-hotplug host0
-
- iface host0 inet static
- address 10.0.0.42/23
- gateway 10.0.0.1
-
- iface host0 inet6 auto
- private 0
- | EOF
- }
-
$puppet_deb = "/var/lib/machines/${machine}/tmp/puppet7-release-${os_version}.deb"
file { $puppet_deb:
ensure => file,
source => "https://apt.puppet.com/puppet7-release-${os_version}.deb"
}
- if $facts['machined-info'][$machine]['State'] == 'running' {
+ $running = $facts['machined-info'][$machine] != Undef or $facts['machined-info'][$machine]['State'] == 'running'
+
+ if $running {
+ # TODO
notify { "Notify skipping ${machine} setup":
message => "Skipping setup for ${machine}, already running",
}
@@ -67,4 +42,8 @@ define nspawn::os::debian (
creates => "/var/lib/machines/${machine}/opt/puppetlabs/bin/puppet",
}
}
+
+ nspawn::util::disable_networking { $machine: }
+ nspawn::util::enable_networkd { $machine: }
+
}
diff --git a/manifests/util/disable_networking.pp b/manifests/util/disable_networking.pp
new file mode 100644
index 0000000..4a9b31b
--- /dev/null
+++ b/manifests/util/disable_networking.pp
@@ -0,0 +1,22 @@
+define nspawn::util::disable_networking (
+ String $machine = $name,
+ String $machine_path = "/var/lib/machines/${machine}",
+) {
+
+
+ $cmd = if $facts['machined-info'][$machine]['State'] == 'running' {
+ [ 'systemctl', '-M', $machine, 'disable', 'networking' ]
+ } else {
+ [ 'systemd-nspawn', '-M', $machine, '--quiet',
+ 'systemctl', 'disable', 'networking' ]
+ }
+
+ exec { "Disable networking on ${machine}":
+ command => $cmd,
+ path => [ '/bin', '/usr/bin', ],
+ # among others
+ # creates => "${machine_path}/etc/systemd/system/multi-user.target.wants/systemd-networkd.service",
+ }
+
+}
+
diff --git a/manifests/util/enable_networkd.pp b/manifests/util/enable_networkd.pp
new file mode 100644
index 0000000..2b532b9
--- /dev/null
+++ b/manifests/util/enable_networkd.pp
@@ -0,0 +1,35 @@
+define nspawn::util::enable_networkd (
+ String $machine = $name,
+ String $machine_path = "/var/lib/machines/${machine}",
+) {
+
+ # TODO only do this if the directory is empty
+ networking::networkd { "Initial networking on ${machine}":
+ filename => '20-puppet-initial',
+ match => { 'Name' => 'host0', },
+ root => $machine_path,
+ network => {
+ 'DHCP' => 'ipv4',
+ 'IPv6AcceptRA' => 1,
+ },
+ notify_ => false,
+ manage_directory => false,
+ }
+
+ $running = $facts['machined-info'][$machine] != Undef or $facts['machined-info'][$machine]['State'] == 'running'
+
+ $cmd = if $running {
+ [ 'systemctl', '-M', $machine, 'enable', 'systemd-networkd' ]
+ } else {
+ [ 'systemd-nspawn', '-M', $machine, '--quiet',
+ 'systemctl', 'enable', 'systemd-networkd' ]
+ }
+
+ exec { "Enable systemd-networkd on ${machine}":
+ command => $cmd,
+ path => [ '/bin', '/usr/bin', ],
+ # among others
+ creates => "${machine_path}/etc/systemd/system/multi-user.target.wants/systemd-networkd.service",
+ }
+
+}