diff --git a/REFERENCE.md b/REFERENCE.md
index 80d1d9f6..96cb6564 100644
--- a/REFERENCE.md
+++ b/REFERENCE.md
@@ -115,6 +115,7 @@ The following parameters are available in the `systemd` class:
* [`manage_resolved`](#-systemd--manage_resolved)
* [`resolved_ensure`](#-systemd--resolved_ensure)
* [`resolved_package`](#-systemd--resolved_package)
+* [`resolved_libraries`](#-systemd--resolved_libraries)
* [`manage_nspawn`](#-systemd--manage_nspawn)
* [`nspawn_package`](#-systemd--nspawn_package)
* [`dns`](#-systemd--dns)
@@ -253,6 +254,14 @@ The name of a systemd sub package needed for systemd-resolved if one needs to be
Default value: `undef`
+##### `resolved_libraries`
+
+Data type: `Array[String[1]]`
+
+List of library packages needed for systemd-resolved.
+
+Default value: `[]`
+
##### `manage_nspawn`
Data type: `Boolean`
diff --git a/data/Debian-family.yaml b/data/Debian-family.yaml
index a687f75b..5d6026ed 100644
--- a/data/Debian-family.yaml
+++ b/data/Debian-family.yaml
@@ -2,3 +2,7 @@
systemd::nspawn_package: 'systemd-container'
systemd::journal_upload::package_name: 'systemd-journal-remote'
systemd::journal_remote::package_name: 'systemd-journal-remote'
+systemd::resolved_libraries:
+ - libnss-myhostname
+ - libnss-resolve
+ - libnss-systemd
diff --git a/manifests/init.pp b/manifests/init.pp
index fa46b664..6595e0f3 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -31,6 +31,9 @@
# @param resolved_package
# The name of a systemd sub package needed for systemd-resolved if one needs to be installed.
#
+# @param resolved_libraries
+# List of library packages needed for systemd-resolved.
+#
# @param manage_nspawn
# Manage the systemd-nspawn@service and machinectl subsystem.
#
@@ -260,6 +263,7 @@
Stdlib::CreateResources $unit_files = {},
Boolean $manage_resolved = false,
Optional[Enum['systemd-resolved']] $resolved_package = undef,
+ Array[String[1]] $resolved_libraries = [],
Enum['stopped','running'] $resolved_ensure = 'running',
Optional[Variant[Array[String],String]] $dns = undef,
Optional[Variant[Array[String],String]] $fallback_dns = undef,
diff --git a/manifests/install.pp b/manifests/install.pp
index 296e5b10..c3e70d5a 100644
--- a/manifests/install.pp
+++ b/manifests/install.pp
@@ -14,9 +14,17 @@
}
}
- if $systemd::manage_resolved and $systemd::resolved_package {
- package { $systemd::resolved_package:
- ensure => present,
+ if $systemd::manage_resolved {
+ if $systemd::resolved_package {
+ package { $systemd::resolved_package:
+ ensure => installed,
+ }
+ }
+
+ $systemd::resolved_libraries.each |String[1] $pkg| {
+ package { $pkg:
+ ensure => installed,
+ }
}
}
diff --git a/spec/acceptance/resolved_spec.rb b/spec/acceptance/resolved_spec.rb
index 113d6e6d..fe3c6588 100644
--- a/spec/acceptance/resolved_spec.rb
+++ b/spec/acceptance/resolved_spec.rb
@@ -25,6 +25,16 @@
end
it { expect(package('systemd-resolved')).to be_installed } if has_package
+
+ if fact('os.family') == 'Debian'
+ %w[
+ myhostname
+ resolve
+ systemd
+ ].each do |pkg|
+ it { expect(package("libnss-#{pkg}")).to be_installed }
+ end
+ end
end
context 'configure systemd stopped' do
diff --git a/spec/classes/init_spec.rb b/spec/classes/init_spec.rb
index 2cd9d848..284781d1 100644
--- a/spec/classes/init_spec.rb
+++ b/spec/classes/init_spec.rb
@@ -52,6 +52,17 @@
else
it { is_expected.not_to contain_package('systemd-resolved') }
end
+
+ if facts[:os]['family'] == 'Debian'
+ %w[
+ myhostname
+ resolve
+ systemd
+ ].each do |pkg|
+ it { is_expected.to contain_package("libnss-#{pkg}") }
+ end
+ end
+
context 'with manage_resolv_conf false' do
let(:params) { super().merge(manage_resolv_conf: false) }