summaryrefslogtreecommitdiff
path: root/manifests/init.pp
blob: a6ba54e45a29d9035d24410aa7f78399e5eb3851 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# @summary Configures systemd nspawn containers
# @param config
#   Shared configuration for all machines, as per systemd.nspawn(5).
#
#   See nspawn::machine's documentation for how it's merged.
#
# @param machines
#   Set of machines to be configured. Creates `nspawn::machine` resources.
#   See that resource type for acceptable options.
#
# @param template_dir
#   Location of template subvolumes.
#
# @param purge
#   Should old .nspawn files be purged.
class nspawn (
  Nspawn::Systemd::Nspawn $config = {},
  Stdlib::Absolutepath $template_dir = '/var/lib/templates',
  Hash[String, Hash[String, Any]] $machines = {},
  Boolean $purge = true,
) {
  # These aren't parameters since they aren't configurable.
  # However, move them to the parameters if it turns out that
  # different distributions place these files in different places.
  # Location of nspawn files.
  $nspawn_dir = '/etc/systemd/nspawn'
  # Location of machine subvolumes.
  $machine_dir = '/var/lib/machines'

  file { $nspawn_dir:
    ensure  => directory,
    purge   => $purge,
    recurse => true,
  }

  file { $template_dir:
    ensure => directory,
  }

  file { $machine_dir:
    ensure => directory,
  }

  ensure_resources('nspawn::machine', $machines)
}