--- /dev/null
+lxc.network.type = veth
+lxc.network.link = lxcbr0
+lxc.network.flags = up
+lxc.network.hwaddr = 00:16:3e:xx:xx:xx
--- /dev/null
+USE_LXC_BRIDGE="true"
+LXC_BRIDGE="lxcbr0"
+LXC_ADDR="10.0.3.1"
+LXC_NETMASK="255.255.255.0"
+LXC_NETWORK="10.0.3.0/24"
+LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
+LXC_DHCP_MAX="253"
+LXC_DHCP_CONFILE=""
+LXC_DOMAIN=""
class virtual::kvm::manager {
- package { [ 'qemu-kvm', 'runit', 'uml-utilities', 'qemu-kvm', 'socat', 'bridge-utils', 'fakeroot', 'xorriso' ]:
+ include virtual::networking
+
+ package { [
+ 'qemu-kvm',
+ 'runit',
+ 'runit-systemd',
+ 'uml-utilities',
+ 'qemu-kvm',
+ 'socat',
+ 'fakeroot',
+ 'xorriso',
+ ]:
ensure => present,
}
+ # Provide a netboot image for VM installs
+ package { "debian-installer-9-netboot-${::architecture}":
+ ensure => present,
+ }
+
vcsrepo { '/usr/local/share/kvm-manager':
ensure => present,
provider => git,
source => 'git://git.fluxo.info/kvm-manager.git',
- revision => 'd8bd926096ecf6d8c38453b6752088b8a10ca3b7',
+ revision => 'b262c9597a3c5fd8c86ae63deda10f999048dfb8',
owner => 'root',
group => 'root',
}
--- /dev/null
+class virtual::lxc::base {
+ include virtual::networking
+
+ package { [
+ 'lxc',
+ ]:
+ ensure => present,
+ }
+
+ service { 'lxc-net':
+ ensure => running,
+ require => Package['lxc'],
+ }
+
+ file { '/etc/default/lxc-net':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ #content => "USE_LXC_BRIDGE=\"true\"\n",
+ source => 'puppet:///modules/virtual/lxc/lxc-net',
+ notify => Service['lxc-net'],
+ }
+
+ file { '/etc/lxc/default.conf':
+ ensure => present,
+ owner => root,
+ group => root,
+ mode => '0644',
+ source => 'puppet:///modules/virtual/lxc/default.conf',
+ notify => Service['lxc-net'],
+ }
+}
--- /dev/null
+class virtual::lxc::unprivileged {
+ include virtual::lxc::base
+
+ package { [
+ 'libvirt0',
+ 'libpam-cgroup',
+ 'libpam-cgfs',
+ ]:
+ ensure => present,
+ }
+
+ file { "/etc/sysctl.d/80-lxc-userns.conf":
+ owner => "root",
+ group => "root",
+ mode => '0644',
+ ensure => present,
+ content => "kernel.unprivileged_userns_clone=1\n",
+ }
+
+ exec { "sysctl --system":
+ user => root,
+ subscribe => File["/etc/sysctl.d/80-lxc-userns.conf"],
+ refreshonly => true,
+ }
+
+ # TODO: echo "$USER veth lxcbr0 1000"| sudo tee -i /etc/lxc/lxc-usernet
+}
--- /dev/null
+class virtual::networking {
+ package { 'bridge-utils':
+ ensure => installed,
+ }
+}