From 1329adc9f34c3c87e353983ec9023a6cf6e93e67 Mon Sep 17 00:00:00 2001 From: Julien Cristau Date: Tue, 20 Nov 2018 21:09:44 +0100 Subject: [PATCH] Add systemd module, required by rabbitmq --- 3rdparty/Puppetfile | 1 + 3rdparty/modules/systemd/CHANGELOG.md | 202 +++++++++++++++++ 3rdparty/modules/systemd/Gemfile | 51 +++++ 3rdparty/modules/systemd/HISTORY.md | 66 ++++++ 3rdparty/modules/systemd/LICENSE | 201 +++++++++++++++++ 3rdparty/modules/systemd/README.md | 209 +++++++++++++++++ 3rdparty/modules/systemd/Rakefile | 30 +++ 3rdparty/modules/systemd/checksums.json | 87 +++++++ 3rdparty/modules/systemd/data/Archlinux.yaml | 8 + 3rdparty/modules/systemd/data/CentOS-7.yaml | 6 + 3rdparty/modules/systemd/data/Debian-10.yaml | 8 + 3rdparty/modules/systemd/data/Debian-8.yaml | 5 + 3rdparty/modules/systemd/data/Debian-9.yaml | 5 + 3rdparty/modules/systemd/data/RedHat-7.yaml | 6 + .../modules/systemd/data/Ubuntu-16.04.yaml | 6 + .../modules/systemd/data/Ubuntu-18.04.yaml | 8 + 3rdparty/modules/systemd/data/common.yaml | 21 ++ .../modules/systemd/lib/facter/systemd.rb | 61 +++++ .../modules/systemd/manifests/dropin_file.pp | 68 ++++++ 3rdparty/modules/systemd/manifests/init.pp | 110 +++++++++ 3rdparty/modules/systemd/manifests/network.pp | 30 +++ .../modules/systemd/manifests/networkd.pp | 24 ++ .../modules/systemd/manifests/resolved.pp | 212 ++++++++++++++++++ .../systemd/manifests/service_limits.pp | 77 +++++++ 3rdparty/modules/systemd/manifests/system.pp | 19 ++ .../manifests/systemctl/daemon_reload.pp | 10 + .../modules/systemd/manifests/timesyncd.pp | 66 ++++++ 3rdparty/modules/systemd/manifests/tmpfile.pp | 54 +++++ .../modules/systemd/manifests/tmpfiles.pp | 24 ++ .../modules/systemd/manifests/unit_file.pp | 78 +++++++ 3rdparty/modules/systemd/metadata.json | 55 +++++ .../nodesets/centos-5-x86_64-docker.yml | 15 ++ .../spec/acceptance/nodesets/centos-5.yml | 16 ++ .../nodesets/centos-6-x86_64-docker.yml | 15 ++ .../nodesets/centos-6-x86_64-openstack.yml | 14 ++ .../nodesets/centos-6-x86_64-vagrant.yml | 11 + .../spec/acceptance/nodesets/centos-6.yml | 17 ++ .../nodesets/centos-7-x86_64-docker.yml | 15 ++ .../nodesets/centos-7-x86_64-openstack.yml | 14 ++ .../nodesets/centos-7-x86_64-vagrant.yml | 11 + .../spec/acceptance/nodesets/centos-7.yml | 15 ++ .../nodesets/debian-6-x86_64-docker.yml | 15 ++ .../nodesets/debian-6-x86_64-openstack.yml | 14 ++ .../nodesets/debian-6-x86_64-vagrant.yml | 11 + .../spec/acceptance/nodesets/debian-6.yml | 15 ++ .../nodesets/debian-7-x86_64-docker.yml | 15 ++ .../nodesets/debian-7-x86_64-openstack.yml | 14 ++ .../nodesets/debian-7-x86_64-vagrant.yml | 11 + .../spec/acceptance/nodesets/debian-7.yml | 15 ++ .../nodesets/debian-8-x86_64-docker.yml | 15 ++ .../nodesets/debian-8-x86_64-openstack.yml | 14 ++ .../nodesets/debian-8-x86_64-vagrant.yml | 11 + .../spec/acceptance/nodesets/debian-8.yml | 16 ++ .../nodesets/ubuntu-10.04-x86_64-docker.yml | 13 ++ .../nodesets/ubuntu-12.04-x86_64-docker.yml | 15 ++ .../ubuntu-12.04-x86_64-openstack.yml | 14 ++ .../spec/acceptance/nodesets/ubuntu-12.04.yml | 16 ++ .../nodesets/ubuntu-14.04-x86_64-docker.yml | 15 ++ .../ubuntu-14.04-x86_64-openstack.yml | 14 ++ .../nodesets/ubuntu-14.04-x86_64-vagrant.yml | 11 + .../spec/acceptance/nodesets/ubuntu-14.04.yml | 18 ++ .../nodesets/ubuntu-14.10-x86_64-docker.yml | 15 ++ .../ubuntu-14.10-x86_64-openstack.yml | 14 ++ .../spec/acceptance/nodesets/ubuntu-14.10.yml | 18 ++ .../nodesets/ubuntu-15.04-x86_64-docker.yml | 15 ++ .../ubuntu-15.04-x86_64-openstack.yml | 14 ++ .../spec/acceptance/nodesets/ubuntu-15.04.yml | 16 ++ .../spec/acceptance/nodesets/ubuntu-15.10.yml | 16 ++ .../spec/acceptance/nodesets/ubuntu-16.04.yml | 16 ++ .../modules/systemd/spec/classes/init_spec.rb | 160 +++++++++++++ .../classes/systemctl/daemon_reload_spec.rb | 15 ++ .../systemd/spec/classes/tmpfiles_spec.rb | 15 ++ .../systemd/spec/default_module_facts.yaml | 10 + .../systemd/spec/defines/dropin_file_spec.rb | 71 ++++++ .../systemd/spec/defines/network_spec.rb | 21 ++ .../spec/defines/service_limits_spec.rb | 86 +++++++ .../systemd/spec/defines/tmpfile_spec.rb | 24 ++ .../systemd/spec/defines/unit_file_spec.rb | 55 +++++ 3rdparty/modules/systemd/spec/spec.opts | 6 + 3rdparty/modules/systemd/spec/spec_helper.rb | 35 +++ .../systemd/spec/unit/facter/systemd_spec.rb | 36 +++ .../spec/unit/facter/systemd_version_spec.rb | 31 +++ 3rdparty/modules/systemd/templates/limits.erb | 16 ++ 3rdparty/modules/systemd/types/dropin.pp | 1 + .../modules/systemd/types/servicelimits.pp | 44 ++++ 3rdparty/modules/systemd/types/unit.pp | 1 + 86 files changed, 2984 insertions(+) create mode 100644 3rdparty/modules/systemd/CHANGELOG.md create mode 100644 3rdparty/modules/systemd/Gemfile create mode 100644 3rdparty/modules/systemd/HISTORY.md create mode 100644 3rdparty/modules/systemd/LICENSE create mode 100644 3rdparty/modules/systemd/README.md create mode 100644 3rdparty/modules/systemd/Rakefile create mode 100644 3rdparty/modules/systemd/checksums.json create mode 100644 3rdparty/modules/systemd/data/Archlinux.yaml create mode 100644 3rdparty/modules/systemd/data/CentOS-7.yaml create mode 100644 3rdparty/modules/systemd/data/Debian-10.yaml create mode 100644 3rdparty/modules/systemd/data/Debian-8.yaml create mode 100644 3rdparty/modules/systemd/data/Debian-9.yaml create mode 100644 3rdparty/modules/systemd/data/RedHat-7.yaml create mode 100644 3rdparty/modules/systemd/data/Ubuntu-16.04.yaml create mode 100644 3rdparty/modules/systemd/data/Ubuntu-18.04.yaml create mode 100644 3rdparty/modules/systemd/data/common.yaml create mode 100644 3rdparty/modules/systemd/lib/facter/systemd.rb create mode 100644 3rdparty/modules/systemd/manifests/dropin_file.pp create mode 100644 3rdparty/modules/systemd/manifests/init.pp create mode 100644 3rdparty/modules/systemd/manifests/network.pp create mode 100644 3rdparty/modules/systemd/manifests/networkd.pp create mode 100644 3rdparty/modules/systemd/manifests/resolved.pp create mode 100644 3rdparty/modules/systemd/manifests/service_limits.pp create mode 100644 3rdparty/modules/systemd/manifests/system.pp create mode 100644 3rdparty/modules/systemd/manifests/systemctl/daemon_reload.pp create mode 100644 3rdparty/modules/systemd/manifests/timesyncd.pp create mode 100644 3rdparty/modules/systemd/manifests/tmpfile.pp create mode 100644 3rdparty/modules/systemd/manifests/tmpfiles.pp create mode 100644 3rdparty/modules/systemd/manifests/unit_file.pp create mode 100644 3rdparty/modules/systemd/metadata.json create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-vagrant.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-vagrant.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-vagrant.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-vagrant.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-vagrant.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-10.04-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-vagrant.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-docker.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-openstack.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.10.yml create mode 100644 3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-16.04.yml create mode 100644 3rdparty/modules/systemd/spec/classes/init_spec.rb create mode 100644 3rdparty/modules/systemd/spec/classes/systemctl/daemon_reload_spec.rb create mode 100644 3rdparty/modules/systemd/spec/classes/tmpfiles_spec.rb create mode 100644 3rdparty/modules/systemd/spec/default_module_facts.yaml create mode 100644 3rdparty/modules/systemd/spec/defines/dropin_file_spec.rb create mode 100644 3rdparty/modules/systemd/spec/defines/network_spec.rb create mode 100644 3rdparty/modules/systemd/spec/defines/service_limits_spec.rb create mode 100644 3rdparty/modules/systemd/spec/defines/tmpfile_spec.rb create mode 100644 3rdparty/modules/systemd/spec/defines/unit_file_spec.rb create mode 100644 3rdparty/modules/systemd/spec/spec.opts create mode 100644 3rdparty/modules/systemd/spec/spec_helper.rb create mode 100644 3rdparty/modules/systemd/spec/unit/facter/systemd_spec.rb create mode 100644 3rdparty/modules/systemd/spec/unit/facter/systemd_version_spec.rb create mode 100644 3rdparty/modules/systemd/templates/limits.erb create mode 100644 3rdparty/modules/systemd/types/dropin.pp create mode 100644 3rdparty/modules/systemd/types/servicelimits.pp create mode 100644 3rdparty/modules/systemd/types/unit.pp diff --git a/3rdparty/Puppetfile b/3rdparty/Puppetfile index fa2d4b282..31be6dd9b 100644 --- a/3rdparty/Puppetfile +++ b/3rdparty/Puppetfile @@ -4,6 +4,7 @@ mod 'puppetlabs/stdlib', '4.19.0' mod 'puppetlabs/concat', '4.0.1' mod 'puppetlabs-postgresql', '5.1.0' +mod 'camptocamp-systemd', '2.1.0' mod 'puppet/rabbitmq', '8.4.0' mod 'nanliu/staging', '1.0.3' diff --git a/3rdparty/modules/systemd/CHANGELOG.md b/3rdparty/modules/systemd/CHANGELOG.md new file mode 100644 index 000000000..148607fa1 --- /dev/null +++ b/3rdparty/modules/systemd/CHANGELOG.md @@ -0,0 +1,202 @@ +# Changelog + +All notable changes to this project will be documented in this file. +Each new release typically also includes the latest modulesync defaults. +These should not affect the functionality of the module. + +## [v2.1.0](https://github.com/camptocamp/puppet-systemd/tree/v2.1.0) (2018-08-31) + +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/2.0.0...v2.1.0) + +**Implemented enhancements:** + +- Modify service limit type [\#81](https://github.com/camptocamp/puppet-systemd/pull/81) ([bastelfreak](https://github.com/bastelfreak)) +- Add parameter to select resolver [\#79](https://github.com/camptocamp/puppet-systemd/pull/79) ([amateo](https://github.com/amateo)) + +**Fixed bugs:** + +- Handle ensuring service\_limits to be absent [\#80](https://github.com/camptocamp/puppet-systemd/pull/80) ([ekohl](https://github.com/ekohl)) + +**Merged pull requests:** + +- do not access facts as top scope variable [\#85](https://github.com/camptocamp/puppet-systemd/pull/85) ([bastelfreak](https://github.com/bastelfreak)) +- Release 2.1.0 [\#84](https://github.com/camptocamp/puppet-systemd/pull/84) ([bastelfreak](https://github.com/bastelfreak)) +- allow puppetlabs/stdlib 5.x [\#83](https://github.com/camptocamp/puppet-systemd/pull/83) ([bastelfreak](https://github.com/bastelfreak)) +- Fix CHANGELOG.md duplicate footer [\#78](https://github.com/camptocamp/puppet-systemd/pull/78) ([alexjfisher](https://github.com/alexjfisher)) + +## [2.0.0](https://github.com/camptocamp/puppet-systemd/tree/2.0.0) (2018-07-11) + +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/1.1.1...2.0.0) + +**Breaking changes:** + +- move params to data-in-modules [\#67](https://github.com/camptocamp/puppet-systemd/pull/67) ([bastelfreak](https://github.com/bastelfreak)) + +**Implemented enhancements:** + +- add ubuntu 18.04 support [\#72](https://github.com/camptocamp/puppet-systemd/pull/72) ([bastelfreak](https://github.com/bastelfreak)) +- bump facter to latest 2.x version [\#71](https://github.com/camptocamp/puppet-systemd/pull/71) ([bastelfreak](https://github.com/bastelfreak)) +- Add enable and active parameters to unit\_file [\#69](https://github.com/camptocamp/puppet-systemd/pull/69) ([jcharaoui](https://github.com/jcharaoui)) +- Add support for Resource Accounting via systemd [\#65](https://github.com/camptocamp/puppet-systemd/pull/65) ([bastelfreak](https://github.com/bastelfreak)) +- Allow resolved class to configure DNS settings [\#59](https://github.com/camptocamp/puppet-systemd/pull/59) ([hfm](https://github.com/hfm)) +- Replace iterator with stdlib function [\#58](https://github.com/camptocamp/puppet-systemd/pull/58) ([jfleury-at-ovh](https://github.com/jfleury-at-ovh)) + +**Closed issues:** + +- Better test for systemd \(and other init systems\) [\#37](https://github.com/camptocamp/puppet-systemd/issues/37) + +**Merged pull requests:** + +- fix puppet-linter warnings in README.md [\#75](https://github.com/camptocamp/puppet-systemd/pull/75) ([bastelfreak](https://github.com/bastelfreak)) +- release 2.0.0 [\#70](https://github.com/camptocamp/puppet-systemd/pull/70) ([bastelfreak](https://github.com/bastelfreak)) +- Update the documentation of facts [\#68](https://github.com/camptocamp/puppet-systemd/pull/68) ([ekohl](https://github.com/ekohl)) +- purge legacy puppet-lint checks [\#66](https://github.com/camptocamp/puppet-systemd/pull/66) ([bastelfreak](https://github.com/bastelfreak)) +- Reuse the systemd::dropin\_file in service\_limits [\#61](https://github.com/camptocamp/puppet-systemd/pull/61) ([ekohl](https://github.com/ekohl)) +- cleanup README.md [\#60](https://github.com/camptocamp/puppet-systemd/pull/60) ([bastelfreak](https://github.com/bastelfreak)) +- implement github changelog generator [\#45](https://github.com/camptocamp/puppet-systemd/pull/45) ([bastelfreak](https://github.com/bastelfreak)) + +## [1.1.1](https://github.com/camptocamp/puppet-systemd/tree/1.1.1) (2017-11-29) + +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/1.1.0...1.1.1) + +**Fixed bugs:** + +- fact systemd\_internal\_services is empty [\#47](https://github.com/camptocamp/puppet-systemd/issues/47) +- Use the correct type on $service\_limits [\#52](https://github.com/camptocamp/puppet-systemd/pull/52) ([ekohl](https://github.com/ekohl)) +- Fix issue \#47 [\#48](https://github.com/camptocamp/puppet-systemd/pull/48) ([axxelG](https://github.com/axxelG)) + +**Closed issues:** + +- Not able to set limits via systemd class [\#49](https://github.com/camptocamp/puppet-systemd/issues/49) + +**Merged pull requests:** + +- Clean up test tooling [\#54](https://github.com/camptocamp/puppet-systemd/pull/54) ([ekohl](https://github.com/ekohl)) +- Correct parameter documentation [\#53](https://github.com/camptocamp/puppet-systemd/pull/53) ([ekohl](https://github.com/ekohl)) +- Use a space-separated in timesyncd.conf [\#50](https://github.com/camptocamp/puppet-systemd/pull/50) ([hfm](https://github.com/hfm)) +- Use the same systemd drop-in file for different units [\#46](https://github.com/camptocamp/puppet-systemd/pull/46) ([countsudoku](https://github.com/countsudoku)) + +## [1.1.0](https://github.com/camptocamp/puppet-systemd/tree/1.1.0) (2017-10-24) + +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/1.0.0...1.1.0) + +**Closed issues:** + +- Add explicit ordering to README.md [\#24](https://github.com/camptocamp/puppet-systemd/issues/24) +- Manage drop-in files [\#15](https://github.com/camptocamp/puppet-systemd/issues/15) + +**Merged pull requests:** + +- Add systemd-timesyncd support [\#43](https://github.com/camptocamp/puppet-systemd/pull/43) ([bastelfreak](https://github.com/bastelfreak)) +- Reuse the service\_provider fact from stdlib [\#42](https://github.com/camptocamp/puppet-systemd/pull/42) ([ekohl](https://github.com/ekohl)) +- \(doc\) Adds examples of running the service created [\#29](https://github.com/camptocamp/puppet-systemd/pull/29) ([petems](https://github.com/petems)) +- Quote hash keys in example of service limits [\#20](https://github.com/camptocamp/puppet-systemd/pull/20) ([stbenjam](https://github.com/stbenjam)) + +## [1.0.0](https://github.com/camptocamp/puppet-systemd/tree/1.0.0) (2017-09-04) + +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.4.0...1.0.0) + +**Closed issues:** + +- PR\#18 broke service limits capacity [\#35](https://github.com/camptocamp/puppet-systemd/issues/35) +- stdlib functions are used, but no stdlib requirement in metadata.json [\#28](https://github.com/camptocamp/puppet-systemd/issues/28) +- investigate update to camptocamp/systemd module [\#21](https://github.com/camptocamp/puppet-systemd/issues/21) +- Module should be updated to use the new Puppet 4 goodness [\#17](https://github.com/camptocamp/puppet-systemd/issues/17) + +**Merged pull requests:** + +- Add support for drop-in files [\#39](https://github.com/camptocamp/puppet-systemd/pull/39) ([countsudoku](https://github.com/countsudoku)) +- Adds control group limits to ServiceLimits [\#36](https://github.com/camptocamp/puppet-systemd/pull/36) ([trevor-vaughan](https://github.com/trevor-vaughan)) +- it's systemd not SystemD [\#33](https://github.com/camptocamp/puppet-systemd/pull/33) ([shibumi](https://github.com/shibumi)) +- General cleanup + add Puppet4 datatypes [\#32](https://github.com/camptocamp/puppet-systemd/pull/32) ([bastelfreak](https://github.com/bastelfreak)) +- add management for systemd-resolved [\#31](https://github.com/camptocamp/puppet-systemd/pull/31) ([bastelfreak](https://github.com/bastelfreak)) +- Add a network defined resource [\#30](https://github.com/camptocamp/puppet-systemd/pull/30) ([bastelfreak](https://github.com/bastelfreak)) +- Add seltype to systemd directory [\#27](https://github.com/camptocamp/puppet-systemd/pull/27) ([petems](https://github.com/petems)) +- Add MemoryLimit to limits template [\#23](https://github.com/camptocamp/puppet-systemd/pull/23) ([pkilambi](https://github.com/pkilambi)) +- Update to support Puppet 4 [\#18](https://github.com/camptocamp/puppet-systemd/pull/18) ([trevor-vaughan](https://github.com/trevor-vaughan)) +- Manage resource limits of services [\#13](https://github.com/camptocamp/puppet-systemd/pull/13) ([ruriky](https://github.com/ruriky)) +- Refactor systemd facts [\#12](https://github.com/camptocamp/puppet-systemd/pull/12) ([petems](https://github.com/petems)) + +## [0.4.0](https://github.com/camptocamp/puppet-systemd/tree/0.4.0) (2016-08-18) + +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.3.0...0.4.0) + +**Closed issues:** + +- No LICENSE file [\#11](https://github.com/camptocamp/puppet-systemd/issues/11) +- Forge update [\#7](https://github.com/camptocamp/puppet-systemd/issues/7) + +**Merged pull requests:** + +- Add target param for the unit file [\#10](https://github.com/camptocamp/puppet-systemd/pull/10) ([tampakrap](https://github.com/tampakrap)) +- only use awk, instead of grep and awk [\#9](https://github.com/camptocamp/puppet-systemd/pull/9) ([igalic](https://github.com/igalic)) + +## [0.3.0](https://forge.puppetlabs.com/camptocamp/systemd/0.3.0) (2016-05-16) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.2.2...0.3.0) + +**Implemented enhancements:** + +- Shortcut for creating unit files / tmpfiles [\#4](https://github.com/camptocamp/puppet-systemd/pull/4) ([felixb](https://github.com/felixb)) +- Add systemd facts [\#6](https://github.com/camptocamp/puppet-systemd/pull/6) ([roidelapluie](https://github.com/roidelapluie)) + + +## [0.2.2](https://forge.puppetlabs.com/camptocamp/systemd/0.2.2) (2015-08-25) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.2.1...0.2.2) + +**Implemented enhancements:** + +- Add 'systemd-tmpfiles-create' [\#1](https://github.com/camptocamp/puppet-systemd/pull/1) ([roidelapluie](https://github.com/roidelapluie)) + + +## [0.2.1](https://forge.puppetlabs.com/camptocamp/systemd/0.2.1) (2015-08-21) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.2.0...0.2.1) + +- Use docker for acceptance tests + +## [0.1.15](https://forge.puppetlabs.com/camptocamp/systemd/0.1.15) (2015-06-26) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.14...0.1.15) + +- Fix strict_variables activation with rspec-puppet 2.2 + +## [0.1.14](https://forge.puppetlabs.com/camptocamp/systemd/0.1.14) (2015-05-28) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.13...0.1.14) + +- Add beaker_spec_helper to Gemfile + +## [0.1.13](https://forge.puppetlabs.com/camptocamp/systemd/0.1.13) (2015-05-26) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.12...0.1.13) + +- Use random application order in nodeset + +## [0.1.12](https://forge.puppetlabs.com/camptocamp/systemd/0.1.12) (2015-05-26) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.11...0.1.12) + +- Add utopic & vivid nodesets + +## [0.1.11](https://forge.puppetlabs.com/camptocamp/systemd/0.1.11) (2015-05-25) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.10...0.1.11) + +- Don't allow failure on Puppet 4 + +## [0.1.10](https://forge.puppetlabs.com/camptocamp/systemd/0.1.10) (2015-05-13) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.9...0.1.10) + +- Add puppet-lint-file_source_rights-check gem + +## [0.1.9](https://forge.puppetlabs.com/camptocamp/systemd/0.1.9) (2015-05-12) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.8...0.1.9) + +- Don't pin beaker + +## [0.1.8](https://forge.puppetlabs.com/camptocamp/systemd/0.1.8) (2015-04-27) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.7...0.1.8) + +- Add nodeset ubuntu-12.04-x86_64-openstack + +## [0.1.7](https://forge.puppetlabs.com/camptocamp/systemd/0.1.7) (2015-04-03) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.6...0.1.7) + +- Confine rspec pinning to ruby 1.8 + + +\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/3rdparty/modules/systemd/Gemfile b/3rdparty/modules/systemd/Gemfile new file mode 100644 index 000000000..c94c4571d --- /dev/null +++ b/3rdparty/modules/systemd/Gemfile @@ -0,0 +1,51 @@ +source ENV['GEM_SOURCE'] || "https://rubygems.org" + +group :development, :unit_tests do + gem 'rake', :require => false + gem 'rspec', :require => false + gem 'rspec-puppet', :require => false + gem 'puppetlabs_spec_helper', :require => false + gem 'metadata-json-lint', :require => false + gem 'puppet-lint', :require => false + gem 'puppet-lint-unquoted_string-check', :require => false + gem 'puppet-lint-empty_string-check', :require => false + gem 'puppet-lint-spaceship_operator_without_tag-check', :require => false + gem 'puppet-lint-undef_in_function-check', :require => false + gem 'puppet-lint-leading_zero-check', :require => false + gem 'puppet-lint-trailing_comma-check', :require => false + gem 'puppet-lint-file_ensure-check', :require => false + gem 'puppet-lint-version_comparison-check', :require => false + gem 'puppet-lint-file_source_rights-check', :require => false + gem 'puppet-lint-alias-check', :require => false + gem 'rspec-puppet-facts', :require => false + gem 'ruby-augeas', :require => false + gem 'json_pure', '< 2.0.2', :require => false +end + +group :system_tests do + gem 'beaker', '~>3.13', :require => false + gem 'beaker-rspec', '> 5', :require => false + gem 'beaker_spec_helper', :require => false + gem 'serverspec', :require => false + gem 'specinfra', :require => false +end + +if facterversion = ENV['FACTER_GEM_VERSION'] + gem 'facter', facterversion, :require => false +else + gem 'facter', :require => false +end + +if puppetversion = ENV['PUPPET_GEM_VERSION'] + gem 'puppet', puppetversion, :require => false +else + gem 'puppet', :require => false +end + +group :release do + gem 'github_changelog_generator', :require => false, :git => 'https://github.com/github-changelog-generator/github-changelog-generator' if RUBY_VERSION >= '2.2.2' + gem 'puppet-blacksmith', :require => false + gem 'voxpupuli-release', :require => false, :git => 'https://github.com/voxpupuli/voxpupuli-release-gem' +end + +# vim:ft=ruby diff --git a/3rdparty/modules/systemd/HISTORY.md b/3rdparty/modules/systemd/HISTORY.md new file mode 100644 index 000000000..9c8b61f93 --- /dev/null +++ b/3rdparty/modules/systemd/HISTORY.md @@ -0,0 +1,66 @@ +## [0.3.0](https://forge.puppetlabs.com/camptocamp/systemd/0.3.0) (2016-05-16) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.2.2...0.3.0) + +**Implemented enhancements:** + +- Shortcut for creating unit files / tmpfiles [\#4](https://github.com/camptocamp/puppet-systemd/pull/4) ([felixb](https://github.com/felixb)) +- Add systemd facts [\#6](https://github.com/camptocamp/puppet-systemd/pull/6) ([roidelapluie](https://github.com/roidelapluie)) + + +## [0.2.2](https://forge.puppetlabs.com/camptocamp/systemd/0.2.2) (2015-08-25) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.2.1...0.2.2) + +**Implemented enhancements:** + +- Add 'systemd-tmpfiles-create' [\#1](https://github.com/camptocamp/puppet-systemd/pull/1) ([roidelapluie](https://github.com/roidelapluie)) + + +## [0.2.1](https://forge.puppetlabs.com/camptocamp/systemd/0.2.1) (2015-08-21) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.2.0...0.2.1) + +- Use docker for acceptance tests + +## [0.1.15](https://forge.puppetlabs.com/camptocamp/systemd/0.1.15) (2015-06-26) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.14...0.1.15) + +- Fix strict_variables activation with rspec-puppet 2.2 + +## [0.1.14](https://forge.puppetlabs.com/camptocamp/systemd/0.1.14) (2015-05-28) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.13...0.1.14) + +- Add beaker_spec_helper to Gemfile + +## [0.1.13](https://forge.puppetlabs.com/camptocamp/systemd/0.1.13) (2015-05-26) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.12...0.1.13) + +- Use random application order in nodeset + +## [0.1.12](https://forge.puppetlabs.com/camptocamp/systemd/0.1.12) (2015-05-26) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.11...0.1.12) + +- Add utopic & vivid nodesets + +## [0.1.11](https://forge.puppetlabs.com/camptocamp/systemd/0.1.11) (2015-05-25) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.10...0.1.11) + +- Don't allow failure on Puppet 4 + +## [0.1.10](https://forge.puppetlabs.com/camptocamp/systemd/0.1.10) (2015-05-13) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.9...0.1.10) + +- Add puppet-lint-file_source_rights-check gem + +## [0.1.9](https://forge.puppetlabs.com/camptocamp/systemd/0.1.9) (2015-05-12) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.8...0.1.9) + +- Don't pin beaker + +## [0.1.8](https://forge.puppetlabs.com/camptocamp/systemd/0.1.8) (2015-04-27) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.7...0.1.8) + +- Add nodeset ubuntu-12.04-x86_64-openstack + +## [0.1.7](https://forge.puppetlabs.com/camptocamp/systemd/0.1.7) (2015-04-03) +[Full Changelog](https://github.com/camptocamp/puppet-systemd/compare/0.1.6...0.1.7) + +- Confine rspec pinning to ruby 1.8 diff --git a/3rdparty/modules/systemd/LICENSE b/3rdparty/modules/systemd/LICENSE new file mode 100644 index 000000000..8d968b6cb --- /dev/null +++ b/3rdparty/modules/systemd/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/3rdparty/modules/systemd/README.md b/3rdparty/modules/systemd/README.md new file mode 100644 index 000000000..7cd89a33b --- /dev/null +++ b/3rdparty/modules/systemd/README.md @@ -0,0 +1,209 @@ +# Systemd + +[![Puppet Forge](http://img.shields.io/puppetforge/v/camptocamp/systemd.svg)](https://forge.puppetlabs.com/camptocamp/systemd) +[![Build Status](https://travis-ci.org/camptocamp/puppet-systemd.png?branch=master)](https://travis-ci.org/camptocamp/puppet-systemd) + +## Overview + +This module declares exec resources to create global sync points for reloading systemd. + +**Version 2 and newer of the module don't work with Hiera 3! You need to migrate your existing Hiera setup to Hiera 5** + +## Usage and examples + +There are two ways to use this module. + +### unit files + +Let this module handle file creation and systemd reloading. + +```puppet +systemd::unit_file { 'foo.service': + source => "puppet:///modules/${module_name}/foo.service", +} +~> service {'foo': + ensure => 'running', +} +``` + +Or handle file creation yourself and trigger systemd. + +```puppet +include systemd::systemctl::daemon_reload + +file { '/usr/lib/systemd/system/foo.service': + ensure => file, + owner => 'root', + group => 'root', + mode => '0644', + source => "puppet:///modules/${module_name}/foo.service", +} +~> Class['systemd::systemctl::daemon_reload'] + +service {'foo': + ensure => 'running', + subscribe => File['/usr/lib/systemd/system/foo.service'], +} +``` + +You can also use this module to more fully manage the new unit. This example deploys the unit, reloads systemd and then enables and starts it. + +```puppet +systemd::unit_file { 'foo.service': + source => "puppet:///modules/${module_name}/foo.service", + enable => true, + active => true, +} +``` + +### drop-in files + +Drop-in files are used to add or alter settings of a unit without modifying the +unit itself. As for the unit files, the module can handle the file and +directory creation and systemd reloading: + +```puppet +systemd::dropin_file { 'foo.conf': + unit => 'foo.service', + source => "puppet:///modules/${module_name}/foo.conf", +} +~> service {'foo': + ensure => 'running', +} +``` + +Or handle file and directory creation yourself and trigger systemd: + +```puppet +include systemd::systemctl::daemon_reload + +file { '/etc/systemd/system/foo.service.d': + ensure => directory, + owner => 'root', + group => 'root', +} + +file { '/etc/systemd/system/foo.service.d/foo.conf': + ensure => file, + owner => 'root', + group => 'root', + mode => '0644', + source => "puppet:///modules/${module_name}/foo.conf", +} +~> Class['systemd::systemctl::daemon_reload'] + +service {'foo': + ensure => 'running', + subscribe => File['/etc/systemd/system/foo.service.d/foo.conf'], +} +``` + +### tmpfiles + +Let this module handle file creation and systemd reloading + +```puppet +systemd::tmpfile { 'foo.conf': + source => "puppet:///modules/${module_name}/foo.conf", +} +``` + +Or handle file creation yourself and trigger systemd. + +```puppet +include systemd::tmpfiles + +file { '/etc/tmpfiles.d/foo.conf': + ensure => file, + owner => 'root', + group => 'root', + mode => '0644', + source => "puppet:///modules/${module_name}/foo.conf", +} +~> Class['systemd::tmpfiles'] +``` + +### service limits + +Manage soft and hard limits on various resources for executed processes. + +```puppet +systemd::service_limits { 'foo.service': + limits => { + 'LimitNOFILE' => 8192, + 'LimitNPROC' => 16384, + } +} +``` + +Or provide the configuration file yourself. Systemd reloading and restarting of the service are handled by the module. + +```puppet +systemd::service_limits { 'foo.service': + source => "puppet:///modules/${module_name}/foo.conf", +} +``` + +### network + +systemd-networkd is able to manage your network configuration. We provide a +defined resource which can write the interface configurations. systemd-networkd +needs to be restarted to apply the configs. The defined resource can do this +for you: + +```puppet +systemd::network{'eth0.network': + source => "puppet:///modules/${module_name}/eth0.network", + restart_service => true, +} +``` + +### Services + +Systemd provides multiple services. Currently you can manage `systemd-resolved`, +`systemd-timesyncd` and `systemd-networkd` via the main class: + +```puppet +class{'systemd': + manage_resolved => true, + manage_networkd => true, + manage_timesyncd => true, +} +``` + +$manage_networkd is required if you want to reload it for new +`systemd::network` resources. Setting $manage_resolved will also manage your +`/etc/resolv.conf`. + +When configuring `systemd::resolved` you could set `dns_stub_resolver` to false (default) to use a *standard* `/etc/resolved.conf`, or you could set it to `true` to use the local resolver provided by `systemd-resolved`. + +It is possible to configure the default ntp servers in /etc/systemd/timesyncd.conf: + +```puppet +class{'systemd': + manage_timesyncd => true, + ntp_server => ['0.pool.ntp.org', '1.pool.ntp.org'], + fallback_ntp_server => ['2.pool.ntp.org', '3.pool.ntp.org'], +} +``` + +This requires puppetlabs-inifile, which is only a soft dependency in this module (you need to explicitly install it). Both parameters accept a string or an array. + +### Resource Accounting + +Systemd has support for different accounting option. It can track +CPU/Memory/Network stats per process. This is explained in depth at [systemd-system.conf](https://www.freedesktop.org/software/systemd/man/systemd-system.conf.html). +This defaults to off (default on most operating systems). You can enable this +with the `$manage_accounting` parameter. The module provides a default set of +working accounting options per operating system, but you can still modify them +with `$accounting`: + +```puppet +class{'systemd': + manage_accounting => true, + accounting => { + 'DefaultCPUAccounting' => 'yes', + 'DefaultMemoryAccounting' => 'no', + } +} +``` diff --git a/3rdparty/modules/systemd/Rakefile b/3rdparty/modules/systemd/Rakefile new file mode 100644 index 000000000..646ad6f60 --- /dev/null +++ b/3rdparty/modules/systemd/Rakefile @@ -0,0 +1,30 @@ +require 'puppetlabs_spec_helper/rake_tasks' +require 'puppet-lint/tasks/puppet-lint' + +Rake::Task[:lint].clear +PuppetLint::RakeTask.new :lint do |config| + config.ignore_paths = ["spec/**/*.pp", "pkg/**/*.pp", "vendor/**/*.pp"] + config.disable_checks = ['140chars'] + config.fail_on_warnings = true +end + +PuppetSyntax.exclude_paths = ["spec/fixtures/**/*.pp", "vendor/**/*"] + +# Publishing tasks +unless RUBY_VERSION =~ /^1\./ + require 'puppet_blacksmith' + require 'puppet_blacksmith/rake_tasks' +end + +begin + require 'github_changelog_generator/task' + GitHubChangelogGenerator::RakeTask.new :changelog do |config| + version = (Blacksmith::Modulefile.new).version + config.future_release = "v#{version}" if version =~ /^\d+\.\d+.\d+$/ + config.header = "# Changelog\n\nAll notable changes to this project will be documented in this file.\nEach new release typically also includes the latest modulesync defaults.\nThese should not affect the functionality of the module." + config.exclude_labels = %w{duplicate question invalid wontfix wont-fix modulesync skip-changelog} + config.user = 'camptocamp' + config.project = 'puppet-systemd' + end +rescue LoadError +end diff --git a/3rdparty/modules/systemd/checksums.json b/3rdparty/modules/systemd/checksums.json new file mode 100644 index 000000000..717edf52a --- /dev/null +++ b/3rdparty/modules/systemd/checksums.json @@ -0,0 +1,87 @@ +{ + "CHANGELOG.md": "1b6c3b3fcf40b2101eef09115d45e98f", + "Gemfile": "63d22a26acea65c0d337e1677b06de7b", + "HISTORY.md": "058e58d38f4298469cc4b9650e89e023", + "LICENSE": "0e5ccf641e613489e66aa98271dbe798", + "README.md": "256953c827e54aa7284bcfba675d4f76", + "Rakefile": "b638dcdf3d4b865f9944e70050696169", + "data/Archlinux.yaml": "132d2a05bfbbeeb2e1768c5d5e5465a4", + "data/CentOS-7.yaml": "4cd858563b8d1f09bd41b63ee3aaca46", + "data/Debian-10.yaml": "132d2a05bfbbeeb2e1768c5d5e5465a4", + "data/Debian-8.yaml": "cda4a0c67b5c02694714a275a1558862", + "data/Debian-9.yaml": "cda4a0c67b5c02694714a275a1558862", + "data/RedHat-7.yaml": "4cd858563b8d1f09bd41b63ee3aaca46", + "data/Ubuntu-16.04.yaml": "4cd858563b8d1f09bd41b63ee3aaca46", + "data/Ubuntu-18.04.yaml": "132d2a05bfbbeeb2e1768c5d5e5465a4", + "data/common.yaml": "e7abdb8d7975b5bba8149f5219d3581d", + "hiera.yaml": "95af0fd82f551cb12fe923d67ee0fca7", + "lib/facter/systemd.rb": "097bfc197ee80791b7fc5ffbedc68fad", + "manifests/dropin_file.pp": "0c9331bb7eb38710fdff0adbc074270d", + "manifests/init.pp": "0661761117910d6b4c2f90487c424353", + "manifests/network.pp": "71e5a66c79c86ce5d6105946dccc82f9", + "manifests/networkd.pp": "2dd4681c21305be938d80a1cf7542d1b", + "manifests/resolved.pp": "7985eb5806782d5ec0d54c22c7221a2c", + "manifests/service_limits.pp": "1e9f75395c8db15af5c42add5986a113", + "manifests/system.pp": "87fd2802ee517be1bbc29a1ab7cab717", + "manifests/systemctl/daemon_reload.pp": "e7168a9f55ea3d8209cf3097631aae1e", + "manifests/timesyncd.pp": "b495e114d5d44edff2ea41ea180db0b5", + "manifests/tmpfile.pp": "50f7cad2c6cb6f5b2bc16004f4e0551b", + "manifests/tmpfiles.pp": "c19150a103c3b883434437cc3f6618d7", + "manifests/unit_file.pp": "222f6960266abdddeb5ef96610831627", + "metadata.json": "55ec7b886dce87aea3b5b8ad8c022f90", + "spec/acceptance/nodesets/centos-5-x86_64-docker.yml": "916223adf56a5eae28fc4dbc8d3d5d09", + "spec/acceptance/nodesets/centos-5.yml": "329c2ecf383375a296316540b17dead8", + "spec/acceptance/nodesets/centos-6-x86_64-docker.yml": "79ee475e5497307c173a1aba59e1a206", + "spec/acceptance/nodesets/centos-6-x86_64-openstack.yml": "5509e2ebb2bee49bec7905141d91535b", + "spec/acceptance/nodesets/centos-6-x86_64-vagrant.yml": "f973bde1c355b0af3ba5c08e02311580", + "spec/acceptance/nodesets/centos-6.yml": "f0e3e5327185edaab414af3371e86c98", + "spec/acceptance/nodesets/centos-7-x86_64-docker.yml": "1d4713c4b0788eaaed0a5767ba0268d4", + "spec/acceptance/nodesets/centos-7-x86_64-openstack.yml": "554374fca1889b858d90a81226578b82", + "spec/acceptance/nodesets/centos-7-x86_64-vagrant.yml": "82b8ada243c70d9a2d8c9a3a4385416c", + "spec/acceptance/nodesets/centos-7.yml": "64e996635943b77309efcf2a0c6d3c02", + "spec/acceptance/nodesets/debian-6-x86_64-docker.yml": "d6cb2154bf149715439b5bc64ef627bc", + "spec/acceptance/nodesets/debian-6-x86_64-openstack.yml": "83b0b0ecb7212b45179546ac6b6b83b7", + "spec/acceptance/nodesets/debian-6-x86_64-vagrant.yml": "d6356946a61858342d0be2b6b670eb55", + "spec/acceptance/nodesets/debian-6.yml": "4078ec869c78a6bb51a0bcfa350cc674", + "spec/acceptance/nodesets/debian-7-x86_64-docker.yml": "2d68216014870420714f306fb3aaa601", + "spec/acceptance/nodesets/debian-7-x86_64-openstack.yml": "47f0b02b2d6ea2134574f045e9a315af", + "spec/acceptance/nodesets/debian-7-x86_64-vagrant.yml": "2dacc8c1cce7bc4fa8e3b13267df9ecd", + "spec/acceptance/nodesets/debian-7.yml": "7ff246ef2e9a9f2b957eacc1d2274898", + "spec/acceptance/nodesets/debian-8-x86_64-docker.yml": "d7fb01335b3273723b8b418faef51538", + "spec/acceptance/nodesets/debian-8-x86_64-openstack.yml": "075a6d6389a6b6cbe3b11f7a6e160059", + "spec/acceptance/nodesets/debian-8-x86_64-vagrant.yml": "9c33b450b4aa17476acc86d839d79dd2", + "spec/acceptance/nodesets/debian-8.yml": "7cc01dfb4cf846bba1fff66a6cceab66", + "spec/acceptance/nodesets/ubuntu-10.04-x86_64-docker.yml": "11480a9d30e9c4daee140dd420176723", + "spec/acceptance/nodesets/ubuntu-12.04-x86_64-docker.yml": "46cc4eceef33f04818ce74855630e05b", + "spec/acceptance/nodesets/ubuntu-12.04-x86_64-openstack.yml": "d1619ba4430c1a61cd9407533ac91de2", + "spec/acceptance/nodesets/ubuntu-12.04.yml": "5e21f60e951be4936f6bca1031553808", + "spec/acceptance/nodesets/ubuntu-14.04-x86_64-docker.yml": "5390c092066afa65780816b162dfb4aa", + "spec/acceptance/nodesets/ubuntu-14.04-x86_64-openstack.yml": "535b98aa7c5d0df88817675af991d2b6", + "spec/acceptance/nodesets/ubuntu-14.04-x86_64-vagrant.yml": "8622e2d9cae7a0923b8510561f1daf5a", + "spec/acceptance/nodesets/ubuntu-14.04.yml": "7614de568fe061eed346e987e0f80bbd", + "spec/acceptance/nodesets/ubuntu-14.10-x86_64-docker.yml": "df4b8f4bd33f38e0053a806d739db819", + "spec/acceptance/nodesets/ubuntu-14.10-x86_64-openstack.yml": "cdfa94d70efdcbb4ae0e9caea474c4b1", + "spec/acceptance/nodesets/ubuntu-14.10.yml": "b3671a973bdc6386af78925d6471e951", + "spec/acceptance/nodesets/ubuntu-15.04-x86_64-docker.yml": "cefdea8d6ead29b5f492adb971019a81", + "spec/acceptance/nodesets/ubuntu-15.04-x86_64-openstack.yml": "60a9ce9983e881df4b83c2720dc014ed", + "spec/acceptance/nodesets/ubuntu-15.04.yml": "cea5658fe126394b01e94286e7854fd1", + "spec/acceptance/nodesets/ubuntu-15.10.yml": "6bc135e884164d541704dfb00ba09a3c", + "spec/acceptance/nodesets/ubuntu-16.04.yml": "17dc63e8b2a15a5285c6aca6d91b4aec", + "spec/classes/init_spec.rb": "67731efaaf6790f0696988a62f3e85a3", + "spec/classes/systemctl/daemon_reload_spec.rb": "cb9a0300c2318103d9bbf0e4b4f65aa1", + "spec/classes/tmpfiles_spec.rb": "0e5b6c4057f66fe169217c08f3814c38", + "spec/default_module_facts.yaml": "d0967d84ae8037c7ec7f1d52f14de7df", + "spec/defines/dropin_file_spec.rb": "d7fa0e4a9bfaba40965ed81880df1098", + "spec/defines/network_spec.rb": "b7a0ec46c10eb5b68b05ecda934f2422", + "spec/defines/service_limits_spec.rb": "758243b295ca9a92021576569c7f3dd3", + "spec/defines/tmpfile_spec.rb": "d1050916e84502cb022764435004d008", + "spec/defines/unit_file_spec.rb": "9ad980913d445255f846d2fae749f9f9", + "spec/spec.opts": "a600ded995d948e393fbe2320ba8e51c", + "spec/spec_helper.rb": "1524f103a4d70c412ed1794e50e614a5", + "spec/unit/facter/systemd_spec.rb": "60ddfbee71614dc0e822a44199baa283", + "spec/unit/facter/systemd_version_spec.rb": "14f915e98f11a610c8513c39dc0ddc55", + "templates/limits.erb": "8e18a431f012d940ac22e0a98da8f115", + "types/dropin.pp": "14af455c863528e9b1d546a757a756b2", + "types/servicelimits.pp": "c6750c64ee955b2cabc852473d3c67f2", + "types/unit.pp": "ab1246b0129a8f1728347585bafb149c" +} \ No newline at end of file diff --git a/3rdparty/modules/systemd/data/Archlinux.yaml b/3rdparty/modules/systemd/data/Archlinux.yaml new file mode 100644 index 000000000..176f0ed14 --- /dev/null +++ b/3rdparty/modules/systemd/data/Archlinux.yaml @@ -0,0 +1,8 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultIOAccounting: 'yes' + DefaultIPAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' + DefaultTasksAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/CentOS-7.yaml b/3rdparty/modules/systemd/data/CentOS-7.yaml new file mode 100644 index 000000000..888cb176a --- /dev/null +++ b/3rdparty/modules/systemd/data/CentOS-7.yaml @@ -0,0 +1,6 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' + DefaultTasksAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/Debian-10.yaml b/3rdparty/modules/systemd/data/Debian-10.yaml new file mode 100644 index 000000000..176f0ed14 --- /dev/null +++ b/3rdparty/modules/systemd/data/Debian-10.yaml @@ -0,0 +1,8 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultIOAccounting: 'yes' + DefaultIPAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' + DefaultTasksAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/Debian-8.yaml b/3rdparty/modules/systemd/data/Debian-8.yaml new file mode 100644 index 000000000..a3be163a2 --- /dev/null +++ b/3rdparty/modules/systemd/data/Debian-8.yaml @@ -0,0 +1,5 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/Debian-9.yaml b/3rdparty/modules/systemd/data/Debian-9.yaml new file mode 100644 index 000000000..a3be163a2 --- /dev/null +++ b/3rdparty/modules/systemd/data/Debian-9.yaml @@ -0,0 +1,5 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/RedHat-7.yaml b/3rdparty/modules/systemd/data/RedHat-7.yaml new file mode 100644 index 000000000..888cb176a --- /dev/null +++ b/3rdparty/modules/systemd/data/RedHat-7.yaml @@ -0,0 +1,6 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' + DefaultTasksAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/Ubuntu-16.04.yaml b/3rdparty/modules/systemd/data/Ubuntu-16.04.yaml new file mode 100644 index 000000000..888cb176a --- /dev/null +++ b/3rdparty/modules/systemd/data/Ubuntu-16.04.yaml @@ -0,0 +1,6 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' + DefaultTasksAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/Ubuntu-18.04.yaml b/3rdparty/modules/systemd/data/Ubuntu-18.04.yaml new file mode 100644 index 000000000..176f0ed14 --- /dev/null +++ b/3rdparty/modules/systemd/data/Ubuntu-18.04.yaml @@ -0,0 +1,8 @@ +--- +systemd::accounting: + DefaultCPUAccounting: 'yes' + DefaultIOAccounting: 'yes' + DefaultIPAccounting: 'yes' + DefaultBlockIOAccounting: 'yes' + DefaultMemoryAccounting: 'yes' + DefaultTasksAccounting: 'yes' diff --git a/3rdparty/modules/systemd/data/common.yaml b/3rdparty/modules/systemd/data/common.yaml new file mode 100644 index 000000000..13950dfb9 --- /dev/null +++ b/3rdparty/modules/systemd/data/common.yaml @@ -0,0 +1,21 @@ +--- +systemd::service_limits: {} +systemd::manage_resolved: false +systemd::resolved_ensure: 'running' +systemd::dns: ~ +systemd::fallback_dns: ~ +systemd::domains: ~ +systemd::llmnr: ~ +systemd::multicast_dns: ~ +systemd::dnssec: ~ +systemd::cache: false +systemd::dns_stub_listener: ~ +systemd::use_stub_resolver: false +systemd::manage_networkd: false +systemd::networkd_ensure: 'running' +systemd::manage_timesyncd: false +systemd::timesyncd_ensure: 'running' +systemd::ntp_server: ~ +systemd::fallback_ntp_server: ~ +systemd::manage_accounting: false +systemd::accounting: {} diff --git a/3rdparty/modules/systemd/lib/facter/systemd.rb b/3rdparty/modules/systemd/lib/facter/systemd.rb new file mode 100644 index 000000000..4061c59c8 --- /dev/null +++ b/3rdparty/modules/systemd/lib/facter/systemd.rb @@ -0,0 +1,61 @@ +# Fact: systemd +# +# Purpose: +# Determine whether systemd is the init system on the node +# +# Resolution: +# Check if the service_provider fact is systemd +# +# Caveats: +# If you override the service provider then it will return false, even if the +# underlying system still is systemd. +# + +# Fact: systemd_version +# +# Purpose: +# Determine the version of systemd installed +# +# Resolution: +# Check the output of systemctl --version +# +# Caveats: +# + +# Fact: systemd_internal_services +# +# Purpose: +# List all systemd internal real services + their state +# +# Resolution: +# Check the output of systemctl --list-unit-files systemd-* and parse it into +# a hash with the status +# +# Caveats: +# +Facter.add(:systemd) do + confine :kernel => :linux + setcode do + Facter.value(:service_provider) == 'systemd' + end +end + +Facter.add(:systemd_version) do + confine :systemd => true + setcode do + Facter::Util::Resolution.exec("systemctl --version | awk '/systemd/{ print $2 }'") + end +end + +Facter.add(:systemd_internal_services) do + confine :systemd => true + setcode do + command_output = Facter::Util::Resolution.exec( + 'systemctl list-unit-files --no-legend --no-pager "systemd-*" -t service --state=enabled,disabled,enabled-runtime,indirect' + ) + lines = command_output.lines.lazy.map { |line| line.split(/\s+/) } + lines.each_with_object({}) do |(service, status, *), result| + result[service] = status + end + end +end diff --git a/3rdparty/modules/systemd/manifests/dropin_file.pp b/3rdparty/modules/systemd/manifests/dropin_file.pp new file mode 100644 index 000000000..55a8542fb --- /dev/null +++ b/3rdparty/modules/systemd/manifests/dropin_file.pp @@ -0,0 +1,68 @@ +# Creates a drop-in file for a systemd unit +# +# @api public +# +# @see systemd.unit(5) +# +# @attr name [Pattern['^.+\.conf$']] +# The target unit file to create +# +# * Must not contain ``/`` +# +# @attr path +# The main systemd configuration path +# +# @attr content +# The full content of the unit file +# +# * Mutually exclusive with ``$source`` +# +# @attr source +# The ``File`` resource compatible ``source`` +# +# * Mutually exclusive with ``$content`` +# +# @attr target +# If set, will force the file to be a symlink to the given target +# +# * Mutually exclusive with both ``$source`` and ``$content`` +# +define systemd::dropin_file( + Systemd::Unit $unit, + Systemd::Dropin $filename = $name, + Enum['present', 'absent', 'file'] $ensure = 'present', + Stdlib::Absolutepath $path = '/etc/systemd/system', + Optional[String] $content = undef, + Optional[String] $source = undef, + Optional[Stdlib::Absolutepath] $target = undef, +) { + include systemd + + if $target { + $_ensure = 'link' + } else { + $_ensure = $ensure ? { + 'present' => 'file', + default => $ensure, + } + } + + if $ensure != 'absent' { + ensure_resource('file', "${path}/${unit}.d", { + ensure => directory, + owner => 'root', + group => 'root', + }) + } + + file { "${path}/${unit}.d/${filename}": + ensure => $_ensure, + content => $content, + source => $source, + target => $target, + owner => 'root', + group => 'root', + mode => '0444', + notify => Class['systemd::systemctl::daemon_reload'], + } +} diff --git a/3rdparty/modules/systemd/manifests/init.pp b/3rdparty/modules/systemd/manifests/init.pp new file mode 100644 index 000000000..6ee55889b --- /dev/null +++ b/3rdparty/modules/systemd/manifests/init.pp @@ -0,0 +1,110 @@ +# This module allows triggering systemd commands once for all modules +# +# @api public +# +# @param service_limits +# May be passed a resource hash suitable for passing directly into the +# ``create_resources()`` function as called on ``systemd::service_limits`` +# +# @param manage_resolved +# Manage the systemd resolver +# +# @param resolved_ensure +# The state that the ``resolved`` service should be in +# +# @param dns +# A space-separated list of IPv4 and IPv6 addresses to use as system DNS servers. +# DNS requests are sent to one of the listed DNS servers in parallel to suitable +# per-link DNS servers acquired from systemd-networkd.service(8) or set at runtime +# by external applications. requires puppetlabs-inifile +# +# @param fallback_dns +# A space-separated list of IPv4 and IPv6 addresses to use as the fallback DNS +# servers. Any per-link DNS servers obtained from systemd-networkd take +# precedence over this setting. requires puppetlabs-inifile +# +# @param domains +# A space-separated list of domains host names or IP addresses to be used +# systemd-resolved take precedence over this setting. +# +# @param llmnr +# Takes a boolean argument or "resolve". +# +# @param multicast_dns +# Takes a boolean argument or "resolve". +# +# @param dnssec +# Takes a boolean argument or "allow-downgrade". +# +# @param cache +# Takes a boolean argument. +# +# @param dns_stub_listener +# Takes a boolean argument or one of "udp" and "tcp". +# +# @param use_stub_resolver +# Takes a boolean argument. When "false" (default) it uses /var/run/systemd/resolve/resolv.conf +# as /etc/resolv.conf. When "true", it uses /var/run/systemd/resolve/stub-resolv.conf +# @param manage_networkd +# Manage the systemd network daemon +# +# @param networkd_ensure +# The state that the ``networkd`` service should be in +# +# @param manage_timesyncd +# Manage the systemd tiemsyncd daemon +# +# @param timesyncd_ensure +# The state that the ``timesyncd`` service should be in +# +# @param ntp_server +# comma separated list of ntp servers, will be combined with interface specific +# addresses from systemd-networkd. requires puppetlabs-inifile +# +# @param fallback_ntp_server +# A space-separated list of NTP server host names or IP addresses to be used +# as the fallback NTP servers. Any per-interface NTP servers obtained from +# systemd-networkd take precedence over this setting. requires puppetlabs-inifile +class systemd ( + Hash[String,Hash[String, Any]] $service_limits, + Boolean $manage_resolved, + Enum['stopped','running'] $resolved_ensure, + Optional[Variant[Array[String],String]] $dns, + Optional[Variant[Array[String],String]] $fallback_dns, + Optional[Variant[Array[String],String]] $domains, + Optional[Variant[Boolean,Enum['resolve']]] $llmnr, + Optional[Variant[Boolean,Enum['resolve']]] $multicast_dns, + Optional[Variant[Boolean,Enum['allow-downgrade']]] $dnssec, + Boolean $cache, + Optional[Variant[Boolean,Enum['udp','tcp']]] $dns_stub_listener, + Boolean $use_stub_resolver, + Boolean $manage_networkd, + Enum['stopped','running'] $networkd_ensure, + Boolean $manage_timesyncd, + Enum['stopped','running'] $timesyncd_ensure, + Optional[Variant[Array,String]] $ntp_server, + Optional[Variant[Array,String]] $fallback_ntp_server, + Boolean $manage_accounting, + Hash[String,String] $accounting, +){ + + contain systemd::systemctl::daemon_reload + + create_resources('systemd::service_limits', $service_limits) + + if $manage_resolved and $facts['systemd_internal_services'] and $facts['systemd_internal_services']['systemd-resolved.service'] { + contain systemd::resolved + } + + if $manage_networkd and $facts['systemd_internal_services'] and $facts['systemd_internal_services']['systemd-networkd.service'] { + contain systemd::networkd + } + + if $manage_timesyncd and $facts['systemd_internal_services'] and $facts['systemd_internal_services']['systemd-timesyncd.service'] { + contain systemd::timesyncd + } + + if $manage_accounting { + contain systemd::system + } +} diff --git a/3rdparty/modules/systemd/manifests/network.pp b/3rdparty/modules/systemd/manifests/network.pp new file mode 100644 index 000000000..5a490051b --- /dev/null +++ b/3rdparty/modules/systemd/manifests/network.pp @@ -0,0 +1,30 @@ +# -- Define: systemd::network +# Creates network config for systemd-networkd +define systemd::network ( + Enum['file', 'absent'] $ensure = file, + Stdlib::Absolutepath $path = '/etc/systemd/network', + Optional[String] $content = undef, + Optional[String] $source = undef, + Optional[Stdlib::Absolutepath] $target = undef, + Boolean $restart_service = true, +){ + + include systemd + + if $restart_service and $systemd::manage_networkd { + $notify = Service['systemd-networkd'] + } else { + $notify = undef + } + + file { "${path}/${name}": + ensure => $ensure, + content => $content, + source => $source, + target => $target, + owner => 'root', + group => 'root', + mode => '0444', + notify => $notify, + } +} diff --git a/3rdparty/modules/systemd/manifests/networkd.pp b/3rdparty/modules/systemd/manifests/networkd.pp new file mode 100644 index 000000000..37d56eee5 --- /dev/null +++ b/3rdparty/modules/systemd/manifests/networkd.pp @@ -0,0 +1,24 @@ +# **NOTE: THIS IS A [PRIVATE](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private) CLASS** +# +# This class provides an abstract way to trigger systemd-networkd +# +# @param ensure +# The state that the ``networkd`` service should be in +# +class systemd::networkd ( + Enum['stopped','running'] $ensure = $systemd::networkd_ensure, +){ + + assert_private() + + $_enable_networkd = $ensure ? { + 'stopped' => false, + 'running' => true, + default => $ensure, + } + + service{ 'systemd-networkd': + ensure => $ensure, + enable => $_enable_networkd, + } +} diff --git a/3rdparty/modules/systemd/manifests/resolved.pp b/3rdparty/modules/systemd/manifests/resolved.pp new file mode 100644 index 000000000..f34772dea --- /dev/null +++ b/3rdparty/modules/systemd/manifests/resolved.pp @@ -0,0 +1,212 @@ +# **NOTE: THIS IS A [PRIVATE](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private) CLASS** +# +# This class provides an abstract way to trigger resolved. +# Each parameters correspond to resolved.conf(5): +# https://www.freedesktop.org/software/systemd/man/resolved.conf.html +# +# @param ensure +# The state that the ``resolved`` service should be in +# +# @param dns +# A space-separated list of IPv4 and IPv6 addresses to use as system DNS servers. +# DNS requests are sent to one of the listed DNS servers in parallel to suitable +# per-link DNS servers acquired from systemd-networkd.service(8) or set at runtime +# by external applications. requires puppetlabs-inifile +# +# @param fallback_dns +# A space-separated list of IPv4 and IPv6 addresses to use as the fallback DNS +# servers. Any per-link DNS servers obtained from systemd-networkd take +# precedence over this setting. requires puppetlabs-inifile +# +# @param domains +# A space-separated list of domains host names or IP addresses to be used +# systemd-resolved take precedence over this setting. +# +# @param llmnr +# Takes a boolean argument or "resolve". +# +# @param multicast_dns +# Takes a boolean argument or "resolve". +# +# @param dnssec +# Takes a boolean argument or "allow-downgrade". +# +# @param cache +# Takes a boolean argument. +# +# @param dns_stub_listener +# Takes a boolean argument or one of "udp" and "tcp". +# +# @param use_stub_resolver +# Takes a boolean argument. When "false" (default) it uses /var/run/systemd/resolve/resolv.conf +# as /etc/resolv.conf. When "true", it uses /var/run/systemd/resolve/stub-resolv.conf +# +class systemd::resolved ( + Enum['stopped','running'] $ensure = $systemd::resolved_ensure, + Optional[Variant[Array[String],String]] $dns = $systemd::dns, + Optional[Variant[Array[String],String]] $fallback_dns = $systemd::fallback_dns, + Optional[Variant[Array[String],String]] $domains = $systemd::domains, + Optional[Variant[Boolean,Enum['resolve']]] $llmnr = $systemd::llmnr, + Optional[Variant[Boolean,Enum['resolve']]] $multicast_dns = $systemd::multicast_dns, + Optional[Variant[Boolean,Enum['allow-downgrade']]] $dnssec = $systemd::dnssec, + Boolean $cache = $systemd::cache, + Optional[Variant[Boolean,Enum['udp', 'tcp']]] $dns_stub_listener = $systemd::dns_stub_listener, + Boolean $use_stub_resolver = $systemd::use_stub_resolver, +){ + + assert_private() + + $_enable_resolved = $ensure ? { + 'stopped' => false, + 'running' => true, + default => $ensure, + } + + service { 'systemd-resolved': + ensure => $ensure, + enable => $_enable_resolved, + } + + $_resolv_conf_target = $use_stub_resolver ? { + true => '/run/systemd/resolve/stub-resolv.conf', + default => '/run/systemd/resolve/resolv.conf', + } + file { '/etc/resolv.conf': + ensure => 'symlink', + target => $_resolv_conf_target, + require => Service['systemd-resolved'], + } + + if $dns { + if $dns =~ String { + $_dns = $dns + } else { + $_dns = join($dns, ' ') + } + ini_setting{ 'dns': + ensure => 'present', + value => $_dns, + setting => 'DNS', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + if $fallback_dns { + if $fallback_dns =~ String { + $_fallback_dns = $fallback_dns + } else { + $_fallback_dns = join($fallback_dns, ' ') + } + ini_setting{ 'fallback_dns': + ensure => 'present', + value => $_fallback_dns, + setting => 'FallbackDNS', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + if $domains { + if $domains =~ String { + $_domains = $domains + } else { + $_domains = join($domains, ' ') + } + ini_setting{ 'domains': + ensure => 'present', + value => $_domains, + setting => 'Domains', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + $_llmnr = $llmnr ? { + true => 'yes', + false => 'no', + default => $llmnr, + } + + if $_llmnr { + ini_setting{ 'llmnr': + ensure => 'present', + value => $_llmnr, + setting => 'LLMNR', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + $_multicast_dns = $multicast_dns ? { + true => 'yes', + false => 'no', + default => $multicast_dns, + } + + if $_multicast_dns { + ini_setting{ 'multicast_dns': + ensure => 'present', + value => $_multicast_dns, + setting => 'MulticastDNS', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + $_dnssec = $dnssec ? { + true => 'yes', + false => 'no', + default => $dnssec, + } + + if $_dnssec { + ini_setting{ 'dnssec': + ensure => 'present', + value => $_dnssec, + setting => 'DNSSEC', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + $_cache = $cache ? { + true => 'yes', + false => 'no', + } + + if $cache { + ini_setting{ 'cache': + ensure => 'present', + value => $_cache, + setting => 'Cache', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + + $_dns_stub_listener = $dns_stub_listener ? { + true => 'yes', + false => 'no', + default => $dns_stub_listener, + } + + if $_dns_stub_listener { + ini_setting{ 'dns_stub_listener': + ensure => 'present', + value => $_dns_stub_listener, + setting => 'DNSStubListener', + section => 'Resolve', + path => '/etc/systemd/resolved.conf', + notify => Service['systemd-resolved'], + } + } + +} diff --git a/3rdparty/modules/systemd/manifests/service_limits.pp b/3rdparty/modules/systemd/manifests/service_limits.pp new file mode 100644 index 000000000..bbeb1cb52 --- /dev/null +++ b/3rdparty/modules/systemd/manifests/service_limits.pp @@ -0,0 +1,77 @@ +# Adds a set of custom limits to the service +# +# @api public +# +# @see systemd.exec(5) +# +# @attr name [Pattern['^.+\.(service|socket|mount|swap)$']] +# The name of the service that you will be modifying +# +# @param $ensure +# Whether to drop a file or remove it +# +# @param path +# The path to the main systemd settings directory +# +# @param limits +# A Hash of service limits matching the settings in ``systemd.exec(5)`` +# +# * Mutually exclusive with ``$source`` +# +# @param source +# A ``File`` resource compatible ``source`` +# +# * Mutually exclusive with ``$limits`` +# +# @param restart_service +# Restart the managed service after setting the limits +# +define systemd::service_limits( + Enum['present', 'absent', 'file'] $ensure = 'present', + Stdlib::Absolutepath $path = '/etc/systemd/system', + Optional[Systemd::ServiceLimits] $limits = undef, + Optional[String] $source = undef, + Boolean $restart_service = true +) { + + include systemd + + if $name !~ Pattern['^.+\.(service|socket|mount|swap)$'] { + fail('$name must match Pattern["^.+\.(service|socket|mount|swap)$"]') + } + + if $limits and !empty($limits) { + $_content = template("${module_name}/limits.erb") + } + else { + $_content = undef + } + + if $ensure != 'absent' { + if ($limits and !empty($limits)) and $source { + fail('You may not supply both limits and source parameters to systemd::service_limits') + } + elsif ($limits == undef or empty($limits)) and ($source == undef) { + fail('You must supply either the limits or source parameter to systemd::service_limits') + } + } + + systemd::dropin_file { "${name}-90-limits.conf": + ensure => $ensure, + unit => $name, + filename => '90-limits.conf', + path => $path, + content => $_content, + source => $source, + } + + if $restart_service { + exec { "restart ${name} because limits": + command => "systemctl restart ${name}", + path => $::path, + refreshonly => true, + subscribe => File["${path}/${name}.d/90-limits.conf"], + require => Class['systemd::systemctl::daemon_reload'], + } + } +} diff --git a/3rdparty/modules/systemd/manifests/system.pp b/3rdparty/modules/systemd/manifests/system.pp new file mode 100644 index 000000000..82b4a9eba --- /dev/null +++ b/3rdparty/modules/systemd/manifests/system.pp @@ -0,0 +1,19 @@ +# **NOTE: THIS IS A [PRIVATE](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private) CLASS** +# +# This class provides a solution to enable accounting +# +class systemd::system { + + assert_private() + + $systemd::accounting.each |$option, $value| { + ini_setting{$option: + ensure => 'present', + path => '/etc/systemd/system.conf', + section => 'Manager', + setting => $option, + value => $value, + notify => Class['systemd::systemctl::daemon_reload'], + } + } +} diff --git a/3rdparty/modules/systemd/manifests/systemctl/daemon_reload.pp b/3rdparty/modules/systemd/manifests/systemctl/daemon_reload.pp new file mode 100644 index 000000000..61b9f5252 --- /dev/null +++ b/3rdparty/modules/systemd/manifests/systemctl/daemon_reload.pp @@ -0,0 +1,10 @@ +# Reload the systemctl daemon +# +# @api public +class systemd::systemctl::daemon_reload { + exec { 'systemctl-daemon-reload': + command => 'systemctl daemon-reload', + refreshonly => true, + path => $facts['path'], + } +} diff --git a/3rdparty/modules/systemd/manifests/timesyncd.pp b/3rdparty/modules/systemd/manifests/timesyncd.pp new file mode 100644 index 000000000..16d5f4348 --- /dev/null +++ b/3rdparty/modules/systemd/manifests/timesyncd.pp @@ -0,0 +1,66 @@ +# **NOTE: THIS IS A [PRIVATE](https://github.com/puppetlabs/puppetlabs-stdlib#assert_private) CLASS** +# +# This class provides an abstract way to trigger systemd-timesyncd +# +# @param ensure +# The state that the ``networkd`` service should be in +# +# @param $ntp_server +# A space-separated list of NTP servers, will be combined with interface specific +# addresses from systemd-networkd. requires puppetlabs-inifile +# +# @param fallback_ntp_server +# A space-separated list of NTP server host names or IP addresses to be used +# as the fallback NTP servers. Any per-interface NTP servers obtained from +# systemd-networkd take precedence over this setting. requires puppetlabs-inifile +class systemd::timesyncd ( + Enum['stopped','running'] $ensure = $systemd::timesyncd_ensure, + Optional[Variant[Array,String]] $ntp_server = $systemd::ntp_server, + Optional[Variant[Array,String]] $fallback_ntp_server = $systemd::fallback_ntp_server, +){ + + assert_private() + + $_enable_timesyncd = $ensure ? { + 'stopped' => false, + 'running' => true, + default => $ensure, + } + + service{ 'systemd-timesyncd': + ensure => $ensure, + enable => $_enable_timesyncd, + } + + if $ntp_server { + if $ntp_server =~ String { + $_ntp_server = $ntp_server + } else { + $_ntp_server = join($ntp_server, ' ') + } + ini_setting{'ntp_server': + ensure => 'present', + value => $_ntp_server, + setting => 'NTP', + section => 'Time', + path => '/etc/systemd/timesyncd.conf', + notify => Service['systemd-timesyncd'], + } + } + + if $fallback_ntp_server { + if $fallback_ntp_server =~ String { + $_fallback_ntp_server = $fallback_ntp_server + } else { + $_fallback_ntp_server = join($fallback_ntp_server, ' ') + } + ini_setting{'fallback_ntp_server': + ensure => 'present', + value => $_fallback_ntp_server, + setting => 'FallbackNTP', + section => 'Time', + path => '/etc/systemd/timesyncd.conf', + notify => Service['systemd-timesyncd'], + } + } +} diff --git a/3rdparty/modules/systemd/manifests/tmpfile.pp b/3rdparty/modules/systemd/manifests/tmpfile.pp new file mode 100644 index 000000000..c18eaae7c --- /dev/null +++ b/3rdparty/modules/systemd/manifests/tmpfile.pp @@ -0,0 +1,54 @@ +# Creates a systemd tmpfile +# +# @api public +# +# @see systemd-tmpfiles(8) +# +# @attr name [String] +# The name of the tmpfile to create +# +# * May not contain ``/`` +# +# @param $ensure +# Whether to drop a file or remove it +# +# @param path +# The path to the main systemd tmpfiles directory +# +# @param content +# The literal content to write to the file +# +# * Mutually exclusive with ``$source`` +# +# @param source +# A ``File`` resource compatible ``source`` +# +# * Mutually exclusive with ``$limits`` +# +define systemd::tmpfile( + Enum['present', 'absent', 'file'] $ensure = 'file', + Stdlib::Absolutepath $path = '/etc/tmpfiles.d', + Optional[String] $content = undef, + Optional[String] $source = undef, +) { + include systemd::tmpfiles + + if $name =~ Pattern['/'] { + fail('$name may not contain a forward slash "(/)"') + } + + $_tmp_file_ensure = $ensure ? { + 'present' => 'file', + default => $ensure, + } + + file { "${path}/${name}": + ensure => $_tmp_file_ensure, + content => $content, + source => $source, + owner => 'root', + group => 'root', + mode => '0444', + notify => Class['systemd::tmpfiles'], + } +} diff --git a/3rdparty/modules/systemd/manifests/tmpfiles.pp b/3rdparty/modules/systemd/manifests/tmpfiles.pp new file mode 100644 index 000000000..cad5371de --- /dev/null +++ b/3rdparty/modules/systemd/manifests/tmpfiles.pp @@ -0,0 +1,24 @@ +# Update the systemd temp files +# +# @api public +# +# @see systemd-tmpfiles(8) +# +# @param operations +# The operations to perform on the systemd tempfiles +# +# * All operations may be combined but you'll probably only ever want to +# use ``create`` +# +class systemd::tmpfiles ( + Array[Enum['create','clean','remove']] $operations = ['create'] +) { + + $_ops = join(prefix($operations, '--'), ' ') + + exec { 'systemd-tmpfiles': + command => "systemd-tmpfiles ${_ops}", + refreshonly => true, + path => $::path, + } +} diff --git a/3rdparty/modules/systemd/manifests/unit_file.pp b/3rdparty/modules/systemd/manifests/unit_file.pp new file mode 100644 index 000000000..3c0406e6e --- /dev/null +++ b/3rdparty/modules/systemd/manifests/unit_file.pp @@ -0,0 +1,78 @@ +# Creates a systemd unit file +# +# @api public +# +# @see systemd.unit(5) +# +# @attr name [Pattern['^.+\.(service|socket|device|mount|automount|swap|target|path|timer|slice|scope)$']] +# The target unit file to create +# +# * Must not contain ``/`` +# +# @attr path +# The main systemd configuration path +# +# @attr content +# The full content of the unit file +# +# * Mutually exclusive with ``$source`` +# +# @attr source +# The ``File`` resource compatible ``source`` +# +# * Mutually exclusive with ``$content`` +# +# @attr target +# If set, will force the file to be a symlink to the given target +# +# * Mutually exclusive with both ``$source`` and ``$content`` +# +# @attr enable +# If set, will manage the unit enablement status. +# +# @attr active +# If set, will manage the state of the unit. +# +define systemd::unit_file( + Enum['present', 'absent', 'file'] $ensure = 'present', + Stdlib::Absolutepath $path = '/etc/systemd/system', + Optional[String] $content = undef, + Optional[String] $source = undef, + Optional[Stdlib::Absolutepath] $target = undef, + Optional[Variant[Boolean, Enum['mask']]] $enable = undef, + Optional[Boolean] $active = undef, +) { + include systemd + + assert_type(Systemd::Unit, $name) + + if $target { + $_ensure = 'link' + } else { + $_ensure = $ensure ? { + 'present' => 'file', + default => $ensure, + } + } + + file { "${path}/${name}": + ensure => $_ensure, + content => $content, + source => $source, + target => $target, + owner => 'root', + group => 'root', + mode => '0444', + notify => Class['systemd::systemctl::daemon_reload'], + } + + if $enable != undef or $active != undef { + service { $name: + ensure => $active, + enable => $enable, + provider => 'systemd', + subscribe => File["${path}/${name}"], + require => Class['systemd::systemctl::daemon_reload'], + } + } +} diff --git a/3rdparty/modules/systemd/metadata.json b/3rdparty/modules/systemd/metadata.json new file mode 100644 index 000000000..57d951500 --- /dev/null +++ b/3rdparty/modules/systemd/metadata.json @@ -0,0 +1,55 @@ +{ + "name": "camptocamp-systemd", + "version": "2.1.0", + "author": "camptocamp", + "summary": "Puppet Systemd module", + "license": "Apache-2.0", + "source": "https://github.com/camptocamp/puppet-systemd", + "project_page": "https://github.com/camptocamp/puppet-systemd", + "issues_url": "https://github.com/camptocamp/puppet-systemd/issues", + "dependencies": [ + { + "name": "puppetlabs/stdlib", + "version_requirement": ">= 4.13.1 < 6.0.0" + } + ], + "data_provider": null, + "requirements": [ + { + "name": "puppet", + "version_requirement": ">= 4.10.10 < 6.0.0" + } + ], + "operatingsystem_support": [ + { + "operatingsystem": "Debian", + "operatingsystemrelease": [ + "8", + "9", + "10" + ] + }, + { + "operatingsystem": "Ubuntu", + "operatingsystemrelease": [ + "16.04", + "18.04" + ] + }, + { + "operatingsystem": "RedHat", + "operatingsystemrelease": [ + "7" + ] + }, + { + "operatingsystem": "CentOS", + "operatingsystemrelease": [ + "7" + ] + }, + { + "operatingsystem": "Archlinux" + } + ] +} diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5-x86_64-docker.yml new file mode 100644 index 000000000..679afb04d --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + centos-5-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-5-x86_64 + hypervisor : docker + image: centos:5 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'yum install -y crontabs tar wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5.yml new file mode 100644 index 000000000..a26f27fc6 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-5.yml @@ -0,0 +1,16 @@ +HOSTS: + centos-5-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-5-x86_64 + hypervisor : docker + image: tianon/centos:5.10 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'yum install -y crontabs tar wget which' + - 'sed -i -e "/mingetty/d" /etc/inittab' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-docker.yml new file mode 100644 index 000000000..9cab03d08 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + centos-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-6-x86_64 + hypervisor : docker + image: centos:6 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'yum install -y crontabs tar wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-openstack.yml new file mode 100644 index 000000000..e325b9e90 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + centos-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-6-x86_64 + hypervisor : openstack + flavor: m1.small + image: centos-6-latest + user: root +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-vagrant.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-vagrant.yml new file mode 100644 index 000000000..f06036ecc --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6-x86_64-vagrant.yml @@ -0,0 +1,11 @@ +HOSTS: + centos-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-6-x86_64 + hypervisor : vagrant + box : camptocamp/centos-6-x86_64 +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6.yml new file mode 100644 index 000000000..71e23cd81 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-6.yml @@ -0,0 +1,17 @@ +HOSTS: + centos-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-6-x86_64 + hypervisor : docker + image: centos:6 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'rm -rf /var/run/network/*' + - 'yum install -y crontabs tar wget' + - 'rm /etc/init/tty.conf' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-docker.yml new file mode 100644 index 000000000..0bc972711 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + centos-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-7-x86_64 + hypervisor : docker + image: centos:7 + docker_preserve_image: true + docker_cmd: '["/usr/sbin/init"]' + docker_image_commands: + - 'yum install -y crontabs tar wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-openstack.yml new file mode 100644 index 000000000..9003c8678 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + centos-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-7-x86_64 + hypervisor : openstack + flavor: m1.small + image: centos-7-latest + user: centos +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-vagrant.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-vagrant.yml new file mode 100644 index 000000000..95402e546 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7-x86_64-vagrant.yml @@ -0,0 +1,11 @@ +HOSTS: + centos-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-7-x86_64 + hypervisor : vagrant + box : camptocamp/centos-7-x86_64 +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7.yml new file mode 100644 index 000000000..a8fa4686b --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/centos-7.yml @@ -0,0 +1,15 @@ +HOSTS: + centos-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: el-7-x86_64 + hypervisor : docker + image: centos:7 + docker_preserve_image: true + docker_cmd: '["/usr/sbin/init"]' + docker_image_commands: + - 'yum install -y crontabs tar wget iproute' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-docker.yml new file mode 100644 index 000000000..359dae7dc --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + debian-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-6-amd64 + hypervisor : docker + image: debian:6 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-openstack.yml new file mode 100644 index 000000000..c6c192fe4 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + debian-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-6-amd64 + hypervisor : openstack + flavor: m1.small + image: debian-6-latest + user: debian +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-vagrant.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-vagrant.yml new file mode 100644 index 000000000..03db0fa76 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6-x86_64-vagrant.yml @@ -0,0 +1,11 @@ +HOSTS: + debian-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-6-amd64 + hypervisor : vagrant + box : puppetlabs/debian-6.0.10-64-nocm +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6.yml new file mode 100644 index 000000000..d7b027562 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-6.yml @@ -0,0 +1,15 @@ +HOSTS: + debian-6-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-6-amd64 + hypervisor : docker + image: debian/eol:squeeze + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y cron locales-all net-tools wget' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-docker.yml new file mode 100644 index 000000000..fc11f5748 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + debian-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-7-amd64 + hypervisor : docker + image: debian:7 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y cron wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-openstack.yml new file mode 100644 index 000000000..017b4c743 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + debian-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-7-amd64 + hypervisor : openstack + flavor: m1.small + image: debian-7-latest + user: debian +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-vagrant.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-vagrant.yml new file mode 100644 index 000000000..8ed1264df --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7-x86_64-vagrant.yml @@ -0,0 +1,11 @@ +HOSTS: + debian-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-7-amd64 + hypervisor : vagrant + box : camptocamp/debian-7-amd64 +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7.yml new file mode 100644 index 000000000..9591ea778 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-7.yml @@ -0,0 +1,15 @@ +HOSTS: + debian-7-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-7-amd64 + hypervisor : docker + image: debian:7 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y cron locales-all net-tools wget' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-docker.yml new file mode 100644 index 000000000..86a55e156 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + debian-8-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-8-amd64 + hypervisor : docker + image: debian:8 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y cron wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-openstack.yml new file mode 100644 index 000000000..003b6f4bd --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + debian-8-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-8-amd64 + hypervisor : openstack + flavor: m1.small + image: debian-8-latest + user: debian +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-vagrant.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-vagrant.yml new file mode 100644 index 000000000..5cc7f0c5a --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8-x86_64-vagrant.yml @@ -0,0 +1,11 @@ +HOSTS: + debian-8-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-8-amd64 + hypervisor : vagrant + box : camptocamp/debian-8-amd64 +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8.yml new file mode 100644 index 000000000..5fb24c617 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/debian-8.yml @@ -0,0 +1,16 @@ +HOSTS: + debian-8-x64: + default_apply_opts: + order: random + strict_variables: + platform: debian-8-amd64 + hypervisor : docker + image: debian:8 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y cron locales-all net-tools wget' + - 'rm -f /usr/sbin/policy-rc.d' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-10.04-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-10.04-x86_64-docker.yml new file mode 100644 index 000000000..933dee605 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-10.04-x86_64-docker.yml @@ -0,0 +1,13 @@ +HOSTS: + ubuntu-1004-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-10.04-amd64 + hypervisor : docker + image: ubuntu:10.04 + # This stops the image from being deleted on completion, speeding up the process. + docker_preserve_image: true +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-docker.yml new file mode 100644 index 000000000..f0ec72b86 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + ubuntu-1204-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-12.04-amd64 + hypervisor : docker + image: ubuntu:12.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-openstack.yml new file mode 100644 index 000000000..f81b04b74 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + ubuntu-1204-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-12.04-amd64 + hypervisor : openstack + flavor: m1.small + image: ubuntu-1204-latest + user: ubuntu +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04.yml new file mode 100644 index 000000000..594e17719 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-12.04.yml @@ -0,0 +1,16 @@ +HOSTS: + ubuntu-1204-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-12.04-amd64 + hypervisor : docker + image: ubuntu:12.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y net-tools wget' + - 'locale-gen en_US.UTF-8' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-docker.yml new file mode 100644 index 000000000..6fb9281e5 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + ubuntu-1404-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.04-amd64 + hypervisor : docker + image: ubuntu:14.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-openstack.yml new file mode 100644 index 000000000..2eeb912d9 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + ubuntu-1404-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.04-amd64 + hypervisor : openstack + flavor: m1.small + image: ubuntu-1404-latest + user: ubuntu +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-vagrant.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-vagrant.yml new file mode 100644 index 000000000..3b3769539 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04-x86_64-vagrant.yml @@ -0,0 +1,11 @@ +HOSTS: + ubuntu-1404-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.04-amd64 + hypervisor : vagrant + box : puppetlabs/ubuntu-14.04-64-nocm +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04.yml new file mode 100644 index 000000000..2b293c99a --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.04.yml @@ -0,0 +1,18 @@ +HOSTS: + ubuntu-1404-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.04-amd64 + hypervisor : docker + image: ubuntu:14.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'rm /usr/sbin/policy-rc.d' + - 'rm /sbin/initctl; dpkg-divert --rename --remove /sbin/initctl' + - 'apt-get install -y net-tools wget' + - 'locale-gen en_US.UTF-8' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-docker.yml new file mode 100644 index 000000000..2be425c54 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + ubuntu-1410-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.10-amd64 + hypervisor : docker + image: ubuntu:14.10 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-openstack.yml new file mode 100644 index 000000000..58a2acd26 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + ubuntu-1410-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.10-amd64 + hypervisor : openstack + flavor: m1.small + image: ubuntu-1410-latest + user: ubuntu +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10.yml new file mode 100644 index 000000000..7ce09b2a8 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-14.10.yml @@ -0,0 +1,18 @@ +HOSTS: + ubuntu-1410-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-14.10-amd64 + hypervisor : docker + image: ubuntu:14.10 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'rm /usr/sbin/policy-rc.d' + - 'rm /sbin/initctl; dpkg-divert --rename --remove /sbin/initctl' + - 'apt-get install -y net-tools wget' + - 'locale-gen en_US.UTF-8' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-docker.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-docker.yml new file mode 100644 index 000000000..caed722c2 --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-docker.yml @@ -0,0 +1,15 @@ +HOSTS: + ubuntu-1504-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-15.04-amd64 + hypervisor : docker + image: ubuntu:15.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y wget' +CONFIG: + type: foss + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-openstack.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-openstack.yml new file mode 100644 index 000000000..22ef76c4e --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04-x86_64-openstack.yml @@ -0,0 +1,14 @@ +HOSTS: + ubuntu-1504-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-15.04-amd64 + hypervisor : openstack + flavor: m1.small + image: ubuntu-1504-latest + user: ubuntu +CONFIG: + type: foss + log_level: debug + openstack_network: default diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04.yml new file mode 100644 index 000000000..329f3319e --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.04.yml @@ -0,0 +1,16 @@ +HOSTS: + ubuntu-1504-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-15.04-amd64 + hypervisor : docker + image: ubuntu:15.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y net-tools wget' + - 'locale-gen en_US.UTF-8' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.10.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.10.yml new file mode 100644 index 000000000..487795a3f --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-15.10.yml @@ -0,0 +1,16 @@ +HOSTS: + ubuntu-1510-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-15.10-amd64 + hypervisor : docker + image: ubuntu:15.10 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y net-tools wget' + - 'locale-gen en_US.UTF-8' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-16.04.yml b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-16.04.yml new file mode 100644 index 000000000..6c32b96dc --- /dev/null +++ b/3rdparty/modules/systemd/spec/acceptance/nodesets/ubuntu-16.04.yml @@ -0,0 +1,16 @@ +HOSTS: + ubuntu-1604-x64: + default_apply_opts: + order: random + strict_variables: + platform: ubuntu-16.04-amd64 + hypervisor : docker + image: ubuntu:16.04 + docker_preserve_image: true + docker_cmd: '["/sbin/init"]' + docker_image_commands: + - 'apt-get install -y net-tools wget' + - 'locale-gen en_US.UTF-8' +CONFIG: + type: aio + log_level: debug diff --git a/3rdparty/modules/systemd/spec/classes/init_spec.rb b/3rdparty/modules/systemd/spec/classes/init_spec.rb new file mode 100644 index 000000000..0bd148a5c --- /dev/null +++ b/3rdparty/modules/systemd/spec/classes/init_spec.rb @@ -0,0 +1,160 @@ +require 'spec_helper' + +describe 'systemd' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + it { is_expected.to compile.with_all_deps } + it { is_expected.to create_class('systemd') } + it { is_expected.to create_class('systemd::systemctl::daemon_reload') } + it { is_expected.to_not create_service('systemd-resolved') } + it { is_expected.to_not create_service('systemd-networkd') } + it { is_expected.to_not create_service('systemd-timesyncd') } + + context 'when enabling resolved and networkd' do + let(:params) {{ + :manage_resolved => true, + :manage_networkd => true + }} + + it { is_expected.to create_service('systemd-resolved').with_ensure('running') } + it { is_expected.to create_service('systemd-resolved').with_enable(true) } + it { is_expected.to create_service('systemd-networkd').with_ensure('running') } + it { is_expected.to create_service('systemd-networkd').with_enable(true) } + end + + context 'when enabling resolved with DNS values (string)' do + let(:params) {{ + :manage_resolved => true, + :dns => '8.8.8.8 8.8.4.4', + :fallback_dns => '2001:4860:4860::8888 2001:4860:4860::8844', + }} + + it { is_expected.to create_service('systemd-resolved').with_ensure('running') } + it { is_expected.to create_service('systemd-resolved').with_enable(true) } + it { is_expected.to contain_ini_setting('dns')} + it { is_expected.to contain_ini_setting('fallback_dns')} + it { is_expected.not_to contain_ini_setting('domains')} + it { is_expected.not_to contain_ini_setting('multicast_dns')} + it { is_expected.not_to contain_ini_setting('llmnr')} + it { is_expected.not_to contain_ini_setting('dnssec')} + it { is_expected.not_to contain_ini_setting('cache')} + it { is_expected.not_to contain_ini_setting('dns_stub_listener')} + end + + context 'when enabling resolved with DNS values (array)' do + let(:params) {{ + :manage_resolved => true, + :dns => %w(8.8.8.8 8.8.4.4), + :fallback_dns => %w(2001:4860:4860::8888 2001:4860:4860::8844), + }} + + it { is_expected.to create_service('systemd-resolved').with_ensure('running') } + it { is_expected.to create_service('systemd-resolved').with_enable(true) } + it { is_expected.to contain_ini_setting('dns')} + it { is_expected.to contain_ini_setting('fallback_dns')} + it { is_expected.not_to contain_ini_setting('domains')} + it { is_expected.not_to contain_ini_setting('multicast_dns')} + it { is_expected.not_to contain_ini_setting('llmnr')} + it { is_expected.not_to contain_ini_setting('dnssec')} + it { is_expected.not_to contain_ini_setting('cache')} + it { is_expected.not_to contain_ini_setting('dns_stub_listener')} + end + + context 'when enabling resolved with DNS values (full)' do + let(:params) {{ + :manage_resolved => true, + :dns => %w(8.8.8.8 8.8.4.4), + :fallback_dns => %w(2001:4860:4860::8888 2001:4860:4860::8844), + :domains => %w(2001:4860:4860::8888 2001:4860:4860::8844), + :llmnr => true, + :multicast_dns => false, + :dnssec => false, + :cache => true, + :dns_stub_listener => 'udp', + }} + + it { is_expected.to create_service('systemd-resolved').with_ensure('running') } + it { is_expected.to create_service('systemd-resolved').with_enable(true) } + it { is_expected.to contain_ini_setting('dns')} + it { is_expected.to contain_ini_setting('fallback_dns')} + it { is_expected.to contain_ini_setting('domains')} + it { is_expected.to contain_ini_setting('multicast_dns')} + it { is_expected.to contain_ini_setting('llmnr')} + it { is_expected.to contain_ini_setting('dnssec')} + it { is_expected.to contain_ini_setting('cache')} + it { is_expected.to contain_ini_setting('dns_stub_listener')} + end + + context 'when enabling timesyncd' do + let(:params) {{ + :manage_timesyncd => true + }} + + it { is_expected.to create_service('systemd-timesyncd').with_ensure('running') } + it { is_expected.to create_service('systemd-timesyncd').with_enable(true) } + it { is_expected.not_to create_service('systemd-resolved').with_ensure('running') } + it { is_expected.not_to create_service('systemd-resolved').with_enable(true) } + it { is_expected.not_to create_service('systemd-networkd').with_ensure('running') } + it { is_expected.not_to create_service('systemd-networkd').with_enable(true) } + end + + context 'when enabling timesyncd with NTP values (string)' do + let(:params) {{ + :manage_timesyncd => true, + :ntp_server => '0.pool.ntp.org 1.pool.ntp.org', + :fallback_ntp_server => '2.pool.ntp.org 3.pool.ntp.org' + }} + it { is_expected.to compile.with_all_deps } + it { is_expected.to contain_ini_setting('ntp_server')} + it { is_expected.to contain_ini_setting('fallback_ntp_server')} + end + + context 'when enabling timesyncd with NTP values (array)' do + let(:params) {{ + :manage_timesyncd => true, + :ntp_server => %w(0.pool.ntp.org 1.pool.ntp.org), + :fallback_ntp_server => %w(2.pool.ntp.org 3.pool.ntp.org) + }} + it { is_expected.to compile.with_all_deps } + it { is_expected.to contain_ini_setting('ntp_server')} + it { is_expected.to contain_ini_setting('fallback_ntp_server')} + end + + context 'when passing service limits' do + let(:params) {{ + :service_limits => {'openstack-nova-compute.service' => {'limits' => {'LimitNOFILE' => 32768}}} + }} + + it { is_expected.to compile.with_all_deps } + it { is_expected.to contain_systemd__service_limits('openstack-nova-compute.service').with_limits({'LimitNOFILE' => 32768}) } + end + + context 'when managing Accounting options' do + let :params do + { + manage_accounting: true, + } + end + + it { is_expected.to contain_class('systemd::system')} + + case facts[:os]['family'] + when 'Archlinux' + accounting = ['DefaultCPUAccounting', 'DefaultIOAccounting', 'DefaultIPAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting', 'DefaultTasksAccounting'] + when 'Debian' + accounting = ['DefaultCPUAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting'] + when 'RedHat' + accounting = ['DefaultCPUAccounting', 'DefaultBlockIOAccounting', 'DefaultMemoryAccounting', 'DefaultTasksAccounting'] + end + accounting.each do |account| + it { is_expected.to contain_ini_setting(account)} + end + it { is_expected.to compile.with_all_deps } + end + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/classes/systemctl/daemon_reload_spec.rb b/3rdparty/modules/systemd/spec/classes/systemctl/daemon_reload_spec.rb new file mode 100644 index 000000000..ec5f00ebd --- /dev/null +++ b/3rdparty/modules/systemd/spec/classes/systemctl/daemon_reload_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe 'systemd::systemctl::daemon_reload' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + it { is_expected.to compile.with_all_deps } + it { is_expected.to create_class('systemd::systemctl::daemon_reload') } + it { is_expected.to create_exec('systemctl-daemon-reload') } + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/classes/tmpfiles_spec.rb b/3rdparty/modules/systemd/spec/classes/tmpfiles_spec.rb new file mode 100644 index 000000000..13defae04 --- /dev/null +++ b/3rdparty/modules/systemd/spec/classes/tmpfiles_spec.rb @@ -0,0 +1,15 @@ +require 'spec_helper' + +describe 'systemd::tmpfiles' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + it { is_expected.to compile.with_all_deps } + it { is_expected.to create_class('systemd::tmpfiles') } + it { is_expected.to contain_exec('systemd-tmpfiles').with_command('systemd-tmpfiles --create') } + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/default_module_facts.yaml b/3rdparty/modules/systemd/spec/default_module_facts.yaml new file mode 100644 index 000000000..d89376ccf --- /dev/null +++ b/3rdparty/modules/systemd/spec/default_module_facts.yaml @@ -0,0 +1,10 @@ +--- +systemd-fsck-root.service: enabled-runtime +systemd-journal-gatewayd.service: indirect +systemd-journal-remote.service: indirect +systemd-journal-upload.service: disabled +systemd-networkd-wait-online.service: enabled +systemd-networkd.service: enabled +systemd-nspawn@.service: disabled +systemd-resolved.service: enabled +systemd-timesyncd.service: disabled diff --git a/3rdparty/modules/systemd/spec/defines/dropin_file_spec.rb b/3rdparty/modules/systemd/spec/defines/dropin_file_spec.rb new file mode 100644 index 000000000..a4e87455e --- /dev/null +++ b/3rdparty/modules/systemd/spec/defines/dropin_file_spec.rb @@ -0,0 +1,71 @@ +require 'spec_helper' + +describe 'systemd::dropin_file' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + let(:title) { 'test.conf' } + + let(:params) {{ + :unit => 'test.service', + :content => 'random stuff' + }} + + it { is_expected.to compile.with_all_deps } + + it { is_expected.to create_file("/etc/systemd/system/#{params[:unit]}.d").with( + :ensure => 'directory', + ) } + + it { is_expected.to create_file("/etc/systemd/system/#{params[:unit]}.d/#{title}").with( + :ensure => 'file', + :content => /#{params[:content]}/, + :mode => '0444' + ) } + + it { is_expected.to create_file("/etc/systemd/system/#{params[:unit]}.d/#{title}").that_notifies('Class[systemd::systemctl::daemon_reload]') } + + context 'with a bad unit type' do + let(:title) { 'test.badtype' } + + it { + expect{ + is_expected.to compile.with_all_deps + }.to raise_error(/expects a match for Systemd::Dropin/) + } + end + + context 'with another drop-in file with the same filename (and content)' do + let(:default_params) {{ + :filename => 'longer-timeout.conf', + :content => 'random stuff' + }} + # Create drop-in file longer-timeout.conf for unit httpd.service + let :pre_condition do + "systemd::dropin_file { 'httpd_longer-timeout': + filename => '#{default_params[:filename]}', + unit => 'httpd.service', + content => '#{default_params[:context]}', + }" + end + # + # Create drop-in file longer-timeout.conf for unit ftp.service + let (:title) {'ftp_longer-timeout'} + let :params do + default_params.merge({ + :unit => 'ftp.service' + }) + end + + it { is_expected.to create_file("/etc/systemd/system/#{params[:unit]}.d/#{params[:filename]}").with( + :ensure => 'file', + :content => /#{params[:content]}/, + :mode => '0444' + ) } + end + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/defines/network_spec.rb b/3rdparty/modules/systemd/spec/defines/network_spec.rb new file mode 100644 index 000000000..ea9215b66 --- /dev/null +++ b/3rdparty/modules/systemd/spec/defines/network_spec.rb @@ -0,0 +1,21 @@ +require 'spec_helper' + +describe 'systemd::network' do + let :params do + { + restart_service: true + } + end + + let(:title) { 'eth0.network' } + + on_supported_os.each do |os, facts| + let :facts do + facts + end + + context 'with all defaults' do + it { is_expected.to compile.with_all_deps } + end + end +end diff --git a/3rdparty/modules/systemd/spec/defines/service_limits_spec.rb b/3rdparty/modules/systemd/spec/defines/service_limits_spec.rb new file mode 100644 index 000000000..e030a93f7 --- /dev/null +++ b/3rdparty/modules/systemd/spec/defines/service_limits_spec.rb @@ -0,0 +1,86 @@ +require 'spec_helper' + +describe 'systemd::service_limits' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + let(:title) { 'test.service' } + + describe 'with limits and present' do + let(:params) {{ + :limits => { + 'LimitCPU' => '10m', + 'LimitFSIZE' => 'infinity', + 'LimitDATA' => '10K', + 'LimitNOFILE' => '20:infinity', + 'LimitNICE' => '-10', + 'LimitRTPRIO' => 50, + 'IODeviceWeight' => [ + {'/dev/weight' => 10}, + {'/dev/weight2' => 20} + ], + 'IOReadBandwidthMax' => [ + {'/bw/max' => '10K'} + ] + } + }} + + it { is_expected.to compile.with_all_deps } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :ensure => 'file', + :content => /LimitCPU=10m/, + :mode => '0444' + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => /LimitFSIZE=infinity/ + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => /LimitDATA=10K/ + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => /LimitNOFILE=20:infinity/ + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => /LimitNICE=-10/ + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => /LimitRTPRIO=50/ + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => %r(IODeviceWeight=/dev/weight 10) + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => %r(IODeviceWeight=/dev/weight2 20) + ) } + it { is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf").with( + :content => %r(IOReadBandwidthMax=/bw/max 10K) + ) } + it { is_expected.to create_exec("restart #{title} because limits").with( + :command => "systemctl restart #{title}", + :refreshonly => true + ) } + end + + describe 'ensured absent' do + let(:params) {{ + :ensure => 'absent', + }} + + it { is_expected.to compile.with_all_deps } + it do + is_expected.to create_file("/etc/systemd/system/#{title}.d/90-limits.conf") + .with_ensure('absent') + .that_notifies("Exec[restart #{title} because limits]") + end + it do + is_expected.to create_exec("restart #{title} because limits") + .with_command("systemctl restart #{title}") + .with_refreshonly(true) + end + end + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/defines/tmpfile_spec.rb b/3rdparty/modules/systemd/spec/defines/tmpfile_spec.rb new file mode 100644 index 000000000..56323d28d --- /dev/null +++ b/3rdparty/modules/systemd/spec/defines/tmpfile_spec.rb @@ -0,0 +1,24 @@ +require 'spec_helper' + +describe 'systemd::tmpfile' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + let(:title) { 'random_tmpfile' } + + let(:params) {{ + :content => 'random stuff' + }} + + it { is_expected.to compile.with_all_deps } + it { is_expected.to create_file("/etc/tmpfiles.d/#{title}").with( + :ensure => 'file', + :content => /#{params[:content]}/, + :mode => '0444' + ) } + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/defines/unit_file_spec.rb b/3rdparty/modules/systemd/spec/defines/unit_file_spec.rb new file mode 100644 index 000000000..d151d457d --- /dev/null +++ b/3rdparty/modules/systemd/spec/defines/unit_file_spec.rb @@ -0,0 +1,55 @@ +require 'spec_helper' + +describe 'systemd::unit_file' do + context 'supported operating systems' do + on_supported_os.each do |os, facts| + context "on #{os}" do + let(:facts) { facts } + + let(:title) { 'test.service' } + + let(:params) {{ + :content => 'random stuff' + }} + + it { is_expected.to compile.with_all_deps } + + it { is_expected.to create_file("/etc/systemd/system/#{title}").with( + :ensure => 'file', + :content => /#{params[:content]}/, + :mode => '0444' + ) } + + it { is_expected.to create_file("/etc/systemd/system/#{title}").that_notifies('Class[systemd::systemctl::daemon_reload]') } + + context 'with a bad unit type' do + let(:title) { 'test.badtype' } + + it { + expect{ + is_expected.to compile.with_all_deps + }.to raise_error(/expects a match for Systemd::Unit/) + } + end + + context 'with enable => true and active => true' do + let(:params) do + super().merge({ + :enable => true, + :active => true + }) + end + + it { is_expected.to contain_service('test.service').with( + :ensure => true, + :enable => true, + :provider => 'systemd' + ) } + + it { is_expected.to contain_service('test.service').that_subscribes_to("File[/etc/systemd/system/#{title}]") } + it { is_expected.to contain_service('test.service').that_requires('Class[systemd::systemctl::daemon_reload]') } + end + end + end + end +end diff --git a/3rdparty/modules/systemd/spec/spec.opts b/3rdparty/modules/systemd/spec/spec.opts new file mode 100644 index 000000000..91cd6427e --- /dev/null +++ b/3rdparty/modules/systemd/spec/spec.opts @@ -0,0 +1,6 @@ +--format +s +--colour +--loadby +mtime +--backtrace diff --git a/3rdparty/modules/systemd/spec/spec_helper.rb b/3rdparty/modules/systemd/spec/spec_helper.rb new file mode 100644 index 000000000..35b452adb --- /dev/null +++ b/3rdparty/modules/systemd/spec/spec_helper.rb @@ -0,0 +1,35 @@ +require 'puppetlabs_spec_helper/module_spec_helper' +require 'rspec-puppet-facts' +include RspecPuppetFacts + + +add_custom_fact :systemd_internal_services, YAML.load(File.read(File.expand_path('../default_module_facts.yaml', __FILE__))) + +RSpec.configure do |c| + c.include PuppetlabsSpec::Files + + # Useless backtrace noise + backtrace_exclusion_patterns = [ + /spec_helper/, + /gems/ + ] + + if c.respond_to?(:backtrace_exclusion_patterns) + c.backtrace_exclusion_patterns = backtrace_exclusion_patterns + elsif c.respond_to?(:backtrace_clean_patterns) + c.backtrace_clean_patterns = backtrace_exclusion_patterns + end + + c.before :each do + # Store any environment variables away to be restored later + @old_env = {} + ENV.each_key {|k| @old_env[k] = ENV[k]} + + c.strict_variables = Gem::Version.new(Puppet.version) >= Gem::Version.new('3.5') + Puppet.features.stubs(:root?).returns(true) + end + + c.after :each do + PuppetlabsSpec::Files.cleanup + end +end diff --git a/3rdparty/modules/systemd/spec/unit/facter/systemd_spec.rb b/3rdparty/modules/systemd/spec/unit/facter/systemd_spec.rb new file mode 100644 index 000000000..e1b44eb18 --- /dev/null +++ b/3rdparty/modules/systemd/spec/unit/facter/systemd_spec.rb @@ -0,0 +1,36 @@ +require "spec_helper" + +describe Facter::Util::Fact do + before { Facter.clear } + after { Facter.clear } + + describe 'systemd' do + context 'returns true when systemd present' do + before do + Facter.fact(:kernel).stubs(:value).returns(:linux) + Facter.add(:service_provider) { setcode { 'systemd' } } + end + + it { expect(Facter.value(:service_provider)).to eq('systemd') } + it { expect(Facter.value(:systemd)).to be true } + end + + context 'returns false when systemd not present' do + before do + Facter.fact(:kernel).stubs(:value).returns(:linux) + Facter.add(:service_provider) { setcode { 'redhat' } } + end + + it { expect(Facter.value(:service_provider)).to eq('redhat') } + it { expect(Facter.value(:systemd)).to be false } + end + + context 'returns nil when kernel is not linux' do + before do + Facter.fact(:kernel).stubs(:value).returns(:windows) + end + + it { expect(Facter.value(:systemd)).to be_nil } + end + end +end diff --git a/3rdparty/modules/systemd/spec/unit/facter/systemd_version_spec.rb b/3rdparty/modules/systemd/spec/unit/facter/systemd_version_spec.rb new file mode 100644 index 000000000..5007dc69c --- /dev/null +++ b/3rdparty/modules/systemd/spec/unit/facter/systemd_version_spec.rb @@ -0,0 +1,31 @@ +require "spec_helper" + +describe Facter::Util::Fact do + before { + Facter.clear + } + + describe "systemd_version" do + context 'returns version when systemd fact present' do + before do + Facter.fact(:systemd).stubs(:value).returns(true) + end + let(:facts) { {:systemd => true} } + it do + Facter::Util::Resolution.expects(:exec).with("systemctl --version | awk '/systemd/{ print $2 }'").returns('229') + expect(Facter.value(:systemd_version)).to eq('229') + end + end + context 'returns nil when systemd fact not present' do + before do + Facter.fact(:systemd).stubs(:value).returns(false) + end + let(:facts) { {:systemd => false } } + it do + Facter::Util::Resolution.stubs(:exec) + Facter::Util::Resolution.expects(:exec).with("systemctl --version | awk '/systemd/{ print $2 }'").never + expect(Facter.value(:systemd_version)).to eq(nil) + end + end + end +end diff --git a/3rdparty/modules/systemd/templates/limits.erb b/3rdparty/modules/systemd/templates/limits.erb new file mode 100644 index 000000000..f51d756b7 --- /dev/null +++ b/3rdparty/modules/systemd/templates/limits.erb @@ -0,0 +1,16 @@ +# This file managed by Puppet - DO NOT EDIT +[Service] +<% + @limits.keys.sort.each do |k| + + # Handles the Path and Option entries + if @limits[k].is_a?(Array) + output = @limits[k].map{|x| + x = %(#{k}=#{x.to_a.flatten.join(' ')}) + }.join("\n") + else + output = %(#{k}=#{@limits[k]}) + end +-%> +<%= output %> +<% end -%> diff --git a/3rdparty/modules/systemd/types/dropin.pp b/3rdparty/modules/systemd/types/dropin.pp new file mode 100644 index 000000000..d9085a4d6 --- /dev/null +++ b/3rdparty/modules/systemd/types/dropin.pp @@ -0,0 +1 @@ +type Systemd::Dropin = Pattern['^.+\.conf$'] diff --git a/3rdparty/modules/systemd/types/servicelimits.pp b/3rdparty/modules/systemd/types/servicelimits.pp new file mode 100644 index 000000000..efdf6fb12 --- /dev/null +++ b/3rdparty/modules/systemd/types/servicelimits.pp @@ -0,0 +1,44 @@ +# Matches Systemd Service Limit Struct +type Systemd::ServiceLimits = Struct[ + { + Optional['LimitCPU'] => Pattern['^\d+(s|m|h|d|w|M|y)?(:\d+(s|m|h|d|w|M|y)?)?$'], + Optional['LimitFSIZE'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitDATA'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitSTACK'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitCORE'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitRSS'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitNOFILE'] => Variant[Integer[-1],Pattern['^(infinity|\d+(:(infinity|\d+))?)$']], + Optional['LimitAS'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitNPROC'] => Integer[1], + Optional['LimitMEMLOCK'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitLOCKS'] => Integer[1], + Optional['LimitSIGPENDING'] => Integer[1], + Optional['LimitMSGQUEUE'] => Pattern['^(infinity|((\d+(K|M|G|T|P|E)(:\d+(K|M|G|T|P|E))?)))$'], + Optional['LimitNICE'] => Variant[Integer[0,40], Pattern['^(-\+([0-1]?[0-9]|20))|([0-3]?[0-9]|40)$']], + Optional['LimitRTPRIO'] => Integer[0], + Optional['LimitRTTIME'] => Pattern['^\d+(ms|s|m|h|d|w|M|y)?(:\d+(ms|s|m|h|d|w|M|y)?)?$'], + Optional['CPUAccounting'] => Boolean, + Optional['CPUShares'] => Integer[2,262144], + Optional['StartupCPUShares'] => Integer[2,262144], + Optional['CPUQuota'] => Pattern['^([1-9][0-9]?$|^100)%$'], + Optional['MemoryAccounting'] => Boolean, + Optional['MemoryLow'] => Pattern['^(\d+(K|M|G|T)?)$'], + Optional['MemoryHigh'] => Pattern['^(\d+(K|M|G|T)?)$'], + Optional['MemoryMax'] => Pattern['^(\d+(K|M|G|T)?)$'], + Optional['MemoryLimit'] => Pattern['^(\d+(K|M|G|T)?)$'], + Optional['TasksAccounting'] => Boolean, + Optional['TasksMax'] => Variant[Integer[1],Pattern['^(infinity|([1-9][0-9]?$|^100)%)$']], + Optional['IOAccounting'] => Boolean, + Optional['IOWeight'] => Integer[1,10000], + Optional['StartupIOWeight'] => Integer[1,10000], + Optional['IODeviceWeight'] => Array[Hash[Stdlib::Absolutepath, Integer[1,10000], 1, 1]], + Optional['IOReadBandwidthMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]], + Optional['IOWriteBandwidthMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]], + Optional['IOReadIOPSMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]], + Optional['IOWriteIOPSMax'] => Array[Hash[Stdlib::Absolutepath, Pattern['^(\d+(K|M|G|T)?)$'], 1, 1]], + Optional['DeviceAllow'] => String[1], + Optional['DevicePolicy'] => Enum['auto','closed','strict'], + Optional['Slice'] => String[1], + Optional['Delegate'] => Boolean + } +] diff --git a/3rdparty/modules/systemd/types/unit.pp b/3rdparty/modules/systemd/types/unit.pp new file mode 100644 index 000000000..a96cd54bf --- /dev/null +++ b/3rdparty/modules/systemd/types/unit.pp @@ -0,0 +1 @@ +type Systemd::Unit = Pattern['^.+\.(service|socket|device|mount|automount|swap|target|path|timer|slice|scope)$'] -- 2.20.1