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' { notify { "Notify skipping ${machine} setup": message => "Skipping setup for ${machine}, already running", } } else { exec { "Set up puppet repo for ${machine}": subscribe => File[$puppet_deb], command => [ '/usr/bin/systemd-nspawn', '-M', $machine, '--quiet', '/bin/sh', '-c', "dpkg -i '/tmp/puppet7-release-${os_version}.deb' && apt update" ], } exec { "install puppet-agent on ${machine}": command => [ '/usr/bin/systemd-nspawn', '-M', $machine, '--quiet', 'apt', 'install', 'puppet-agent', ], creates => "/var/lib/machines/${machine}/opt/puppetlabs/bin/puppet", } } }