# TODO rename this to image-setup define nspawn::os::debian ( String $os_version, String $template_name = $name, String $template_dir = $nspawn::template_dir, ) { $root = "${template_dir}/${template_name}" $pkg_pos = 'var/tmp' ensure_packages(['debootstrap']) exec { "/usr/bin/deboostrap ${os_version} '${root}'": creates => "${root}/etc/os-release", } $puppet_deb = "puppet7-release-${os_version}.deb" $puppet_deb_path = "${root}/${pkg_pos}/${puppet_deb}" file { $puppet_deb_path: ensure => file, source => "https://apt.puppet.com/${puppet_deb}" } $running = $facts['machined-info'][$template_name] != undef and $facts['machined-info'][$template_name]['State'] == 'running' if $running { # TODO notify { "Notify skipping ${template_name} setup": message => "Skipping setup for ${template_name}, already running", } } else { exec { "Set up puppet repo for ${template_name}": subscribe => File[$puppet_deb_path], refreshonly => true, command => [ '/usr/bin/systemd-nspawn', '-M', $template_name, '--quiet', '/bin/sh', '-c', "dpkg -i '/${pkg_pos}/puppet7-release-${os_version}.deb' && apt update" ], } exec { "install puppet-agent on ${template_name}": command => [ '/usr/bin/systemd-nspawn', '-M', $template_name, '--quiet', 'apt', 'install', 'puppet-agent', ], creates => "${root}/opt/puppetlabs/bin/puppet", } } nspawn::util::disable_networking { $template_name: template_dir => $template_dir, } nspawn::util::enable_networkd { $template_name: template_dir => $template_dir, } }