diff --git a/.gitignore b/.gitignore
index c817477a0aea992fe70e44977a62078cc9310079..a9965320a67cf67e14f5bfa41aaf270ebbd32906 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,7 +16,7 @@
 /log/
 /pkg/
 /spec/fixtures/manifests/
-/spec/fixtures/modules/*
+/spec/fixtures/modules/
 /tmp/
 /vendor/
 /convert_report.txt
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 97ebb8b9fc3bcad7a221e5c224f28e468c01a780..d49a282204f95e69b20f82be215ceefc76129d11 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,7 +2,3 @@
 include:
   - project: 'puppet-infra/shared-ci-piplines'
     file: '/puppet-module-pipeline.yaml'
-  - local: .local-ci.yml
-    rules:
-      - exists:
-          - .local-ci.yml
diff --git a/.pdkignore b/.pdkignore
index 8bbed40cca2034410bafc4820c5887a849bdf48d..f96299629ecb210a0cdd0fdb38a4b955515392d6 100644
--- a/.pdkignore
+++ b/.pdkignore
@@ -16,7 +16,7 @@
 /log/
 /pkg/
 /spec/fixtures/manifests/
-/spec/fixtures/modules/*
+/spec/fixtures/modules/
 /tmp/
 /vendor/
 /convert_report.txt
@@ -29,17 +29,20 @@
 *~
 \#*\#
 .\#*
+/appveyor.yml
+/.editorconfig
 /.fixtures.yml
 /Gemfile
 /.gitattributes
-/.github/
 /.gitignore
+/.gitlab-ci.yml
 /.pdkignore
 /.puppet-lint.rc
 /Rakefile
 /rakelib/
 /.rspec
-/..yml
+/.rubocop.yml
+/.travis.yml
 /.yardopts
 /spec/
 /.vscode/
diff --git a/.rubocop.yml b/.rubocop.yml
index 5be1f9fa994085890c3fe9db117a937b8928f8cb..8f782e741528905cd59743f73283f8a39e9bf210 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -4,7 +4,7 @@ require:
 - rubocop-rspec
 AllCops:
   DisplayCopNames: true
-  TargetRubyVersion: '2.6'
+  TargetRubyVersion: '2.4'
   Include:
   - "**/*.rb"
   Exclude:
@@ -111,14 +111,8 @@ Style/MethodCalledOnDoEndBlock:
   Enabled: true
 Style/StringMethods:
   Enabled: true
-Bundler/GemFilename:
-  Enabled: false
 Bundler/InsecureProtocolSource:
   Enabled: false
-Capybara/CurrentPathExpectation:
-  Enabled: false
-Capybara/VisibilityMatcher:
-  Enabled: false
 Gemspec/DuplicatedAssignment:
   Enabled: false
 Gemspec/OrderedDependencies:
@@ -293,9 +287,11 @@ Performance/UriDefaultParser:
   Enabled: false
 RSpec/Be:
   Enabled: false
+RSpec/Capybara/CurrentPathExpectation:
+  Enabled: false
 RSpec/Capybara/FeatureMethods:
   Enabled: false
-RSpec/ContainExactly:
+RSpec/Capybara/VisibilityMatcher:
   Enabled: false
 RSpec/ContextMethod:
   Enabled: false
@@ -335,8 +331,6 @@ RSpec/LeakyConstantDeclaration:
   Enabled: false
 RSpec/LetBeforeExamples:
   Enabled: false
-RSpec/MatchArray:
-  Enabled: false
 RSpec/MissingExampleGroupArgument:
   Enabled: false
 RSpec/MultipleExpectations:
@@ -379,6 +373,8 @@ Style/AccessModifierDeclarations:
   Enabled: false
 Style/AccessorGrouping:
   Enabled: false
+Style/AsciiComments:
+  Enabled: false
 Style/BisectedAttrAccessor:
   Enabled: false
 Style/CaseLikeIf:
@@ -489,235 +485,35 @@ Style/TrailingMethodEndStatement:
   Enabled: false
 Style/UnpackFirst:
   Enabled: false
-Capybara/MatchStyle:
-  Enabled: false
-Capybara/NegationMatcher:
-  Enabled: false
-Capybara/SpecificActions:
-  Enabled: false
-Capybara/SpecificFinders:
-  Enabled: false
-Capybara/SpecificMatcher:
-  Enabled: false
-Gemspec/DeprecatedAttributeAssignment:
-  Enabled: false
-Gemspec/DevelopmentDependencies:
-  Enabled: false
-Gemspec/RequireMFA:
-  Enabled: false
-Layout/LineContinuationLeadingSpace:
-  Enabled: false
-Layout/LineContinuationSpacing:
-  Enabled: false
-Layout/LineEndStringConcatenationIndentation:
-  Enabled: false
-Layout/SpaceBeforeBrackets:
-  Enabled: false
-Lint/AmbiguousAssignment:
-  Enabled: false
-Lint/AmbiguousOperatorPrecedence:
-  Enabled: false
-Lint/AmbiguousRange:
-  Enabled: false
-Lint/ConstantOverwrittenInRescue:
-  Enabled: false
-Lint/DeprecatedConstants:
-  Enabled: false
 Lint/DuplicateBranch:
   Enabled: false
-Lint/DuplicateMagicComment:
-  Enabled: false
 Lint/DuplicateRegexpCharacterClassElement:
   Enabled: false
 Lint/EmptyBlock:
   Enabled: false
 Lint/EmptyClass:
   Enabled: false
-Lint/EmptyInPattern:
-  Enabled: false
-Lint/IncompatibleIoSelectWithFiberScheduler:
-  Enabled: false
-Lint/LambdaWithoutLiteralBlock:
-  Enabled: false
 Lint/NoReturnInBeginEndBlocks:
   Enabled: false
-Lint/NonAtomicFileOperation:
-  Enabled: false
-Lint/NumberedParameterAssignment:
-  Enabled: false
-Lint/OrAssignmentToConstant:
-  Enabled: false
-Lint/RedundantDirGlobSort:
-  Enabled: false
-Lint/RefinementImportMethods:
-  Enabled: false
-Lint/RequireRangeParentheses:
-  Enabled: false
-Lint/RequireRelativeSelfPath:
-  Enabled: false
-Lint/SymbolConversion:
-  Enabled: false
 Lint/ToEnumArguments:
   Enabled: false
-Lint/TripleQuotes:
-  Enabled: false
 Lint/UnexpectedBlockArity:
   Enabled: false
 Lint/UnmodifiedReduceAccumulator:
   Enabled: false
-Lint/UselessRescue:
-  Enabled: false
-Lint/UselessRuby2Keywords:
-  Enabled: false
-Metrics/CollectionLiteralLength:
-  Enabled: false
-Naming/BlockForwarding:
-  Enabled: false
 Performance/CollectionLiteralInLoop:
   Enabled: false
-Performance/ConcurrentMonotonicTime:
-  Enabled: false
-Performance/MapCompact:
-  Enabled: false
-Performance/RedundantEqualityComparisonBlock:
-  Enabled: false
-Performance/RedundantSplitRegexpArgument:
-  Enabled: false
-Performance/StringIdentifierArgument:
-  Enabled: false
-RSpec/BeEq:
-  Enabled: false
-RSpec/BeNil:
-  Enabled: false
-RSpec/ChangeByZero:
-  Enabled: false
-RSpec/ClassCheck:
-  Enabled: false
-RSpec/DuplicatedMetadata:
-  Enabled: false
-RSpec/ExcessiveDocstringSpacing:
-  Enabled: false
-RSpec/FactoryBot/ConsistentParenthesesStyle:
-  Enabled: false
-RSpec/FactoryBot/FactoryNameStyle:
-  Enabled: false
-RSpec/FactoryBot/SyntaxMethods:
-  Enabled: false
-RSpec/IdenticalEqualityAssertion:
-  Enabled: false
-RSpec/NoExpectationExample:
-  Enabled: false
-RSpec/PendingWithoutReason:
-  Enabled: false
-RSpec/Rails/AvoidSetupHook:
-  Enabled: false
-RSpec/Rails/HaveHttpStatus:
-  Enabled: false
-RSpec/Rails/InferredSpecType:
-  Enabled: false
-RSpec/Rails/MinitestAssertions:
-  Enabled: false
-RSpec/Rails/TravelAround:
-  Enabled: false
-RSpec/RedundantAround:
-  Enabled: false
-RSpec/SkipBlockInsideExample:
-  Enabled: false
-RSpec/SortMetadata:
-  Enabled: false
-RSpec/SubjectDeclaration:
-  Enabled: false
-RSpec/VerifiedDoubleReference:
-  Enabled: false
-Security/CompoundHash:
-  Enabled: false
-Security/IoMethods:
-  Enabled: false
 Style/ArgumentsForwarding:
   Enabled: false
-Style/ArrayIntersect:
-  Enabled: false
 Style/CollectionCompact:
   Enabled: false
-Style/ComparableClamp:
-  Enabled: false
-Style/ConcatArrayLiterals:
-  Enabled: false
-Style/DirEmpty:
-  Enabled: false
 Style/DocumentDynamicEvalDefinition:
   Enabled: false
-Style/EmptyHeredoc:
-  Enabled: false
-Style/EndlessMethod:
-  Enabled: false
-Style/EnvHome:
-  Enabled: false
-Style/FetchEnvVar:
-  Enabled: false
-Style/FileEmpty:
-  Enabled: false
-Style/FileRead:
-  Enabled: false
-Style/FileWrite:
-  Enabled: false
-Style/HashConversion:
-  Enabled: false
-Style/HashExcept:
-  Enabled: false
-Style/IfWithBooleanLiteralBranches:
-  Enabled: false
-Style/InPatternThen:
-  Enabled: false
-Style/MagicCommentFormat:
-  Enabled: false
-Style/MapCompactWithConditionalBlock:
-  Enabled: false
-Style/MapToHash:
-  Enabled: false
-Style/MapToSet:
-  Enabled: false
-Style/MinMaxComparison:
-  Enabled: false
-Style/MultilineInPatternThen:
-  Enabled: false
 Style/NegatedIfElseCondition:
   Enabled: false
-Style/NestedFileDirname:
-  Enabled: false
 Style/NilLambda:
   Enabled: false
-Style/NumberedParameters:
-  Enabled: false
-Style/NumberedParametersLimit:
-  Enabled: false
-Style/ObjectThen:
-  Enabled: false
-Style/OpenStructUse:
-  Enabled: false
-Style/OperatorMethodCall:
-  Enabled: false
-Style/QuotedSymbols:
-  Enabled: false
 Style/RedundantArgument:
   Enabled: false
-Style/RedundantConstantBase:
-  Enabled: false
-Style/RedundantDoubleSplatHashBraces:
-  Enabled: false
-Style/RedundantEach:
-  Enabled: false
-Style/RedundantHeredocDelimiterQuotes:
-  Enabled: false
-Style/RedundantInitialize:
-  Enabled: false
-Style/RedundantSelfAssignmentBranch:
-  Enabled: false
-Style/RedundantStringEscape:
-  Enabled: false
-Style/SelectByRegexp:
-  Enabled: false
-Style/StringChars:
-  Enabled: false
 Style/SwapValues:
   Enabled: false
diff --git a/Gemfile b/Gemfile
index ca0e773ecda0523822c56f423572a35d57d7ed83..18272fd72e8b95feb3fe64e34a51a9b75a7af794 100644
--- a/Gemfile
+++ b/Gemfile
@@ -13,37 +13,28 @@ def location_for(place_or_version, fake_version = nil)
   end
 end
 
+ruby_version_segments = Gem::Version.new(RUBY_VERSION.dup).segments
+minor_version = ruby_version_segments[0..1].join('.')
+
 group :development do
-  gem "json", '= 2.1.0',                         require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "json", '= 2.3.0',                         require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "json", '= 2.5.1',                         require: false if Gem::Requirement.create(['>= 3.0.0', '< 3.0.5']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "json", '= 2.6.1',                         require: false if Gem::Requirement.create(['>= 3.1.0', '< 3.1.3']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "json", '= 2.6.3',                         require: false if Gem::Requirement.create(['>= 3.2.0', '< 4.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "racc", '~> 1.4.0',                        require: false if Gem::Requirement.create(['>= 2.7.0', '< 3.0.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
-  gem "voxpupuli-puppet-lint-plugins", '~> 5.0', require: false
-  gem "facterdb", '~> 1.18',                     require: false
-  gem "metadata-json-lint", '~> 3.0',            require: false
-  gem "puppetlabs_spec_helper", '~> 6.0',        require: false
-  gem "rspec-puppet-facts", '~> 2.0',            require: false
-  gem "codecov", '~> 0.2',                       require: false
-  gem "dependency_checker", '~> 1.0.0',          require: false
-  gem "parallel_tests", '= 3.12.1',              require: false
-  gem "pry", '~> 0.10',                          require: false
-  gem "simplecov-console", '~> 0.5',             require: false
-  gem "puppet-debugger", '~> 1.0',               require: false
-  gem "rubocop", '= 1.48.1',                     require: false
-  gem "rubocop-performance", '= 1.16.0',         require: false
-  gem "rubocop-rspec", '= 2.19.0',               require: false
-  gem "puppet-strings", '~> 4.0',                require: false
-  gem "rb-readline", '= 0.5.5',                  require: false, platforms: [:mswin, :mingw, :x64_mingw]
+  gem "json", '= 2.0.4',                                         require: false if Gem::Requirement.create('~> 2.4.2').satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
+  gem "json", '= 2.1.0',                                         require: false if Gem::Requirement.create(['>= 2.5.0', '< 2.7.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
+  gem "json", '= 2.3.0',                                         require: false if Gem::Requirement.create(['>= 2.7.0', '< 2.8.0']).satisfied_by?(Gem::Version.new(RUBY_VERSION.dup))
+  gem "puppet-module-posix-default-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
+  gem "puppet-module-posix-dev-r#{minor_version}", '~> 1.0',     require: false, platforms: [:ruby]
+  gem "puppet-module-win-default-r#{minor_version}", '~> 1.0',   require: false, platforms: [:mswin, :mingw, :x64_mingw]
+  gem "puppet-module-win-dev-r#{minor_version}", '~> 1.0',       require: false, platforms: [:mswin, :mingw, :x64_mingw]
+  gem "puppet-lint-absolute_classname-check", '3.0.1',           require: false
+  gem "puppet-lint-absolute_template_path", '1.0.1',             require: false
+  gem "puppet-lint-empty_trailing_lines", '0.0.1',               require: false
+  gem "puppet-lint-file_ensure-check", '1.0.0',                  require: false
+  gem "puppet-lint-strict_indent-check", '2.0.8',                require: false
+  gem "puppet-lint-trailing_comma-check", '0.4.2',               require: false
+  gem "puppet-lint-unquoted_string-check", '2.1.0',              require: false
 end
 group :system_tests do
-  gem "puppet_litmus", '~> 1.0', require: false, platforms: [:ruby, :x64_mingw]
-  gem "serverspec", '~> 2.41',   require: false
-end
-group :release_prep do
-  gem "puppet-strings", '~> 4.0',         require: false
-  gem "puppetlabs_spec_helper", '~> 6.0', require: false
+  gem "puppet-module-posix-system-r#{minor_version}", '~> 1.0', require: false, platforms: [:ruby]
+  gem "puppet-module-win-system-r#{minor_version}", '~> 1.0',   require: false, platforms: [:mswin, :mingw, :x64_mingw]
 end
 
 puppet_version = ENV['PUPPET_GEM_VERSION']
diff --git a/Rakefile b/Rakefile
index 74415a96f53d00b92550f6c697bb02093faecf76..0f8754eb61e400db1d117cad5026f06d3ba6ff89 100644
--- a/Rakefile
+++ b/Rakefile
@@ -1,11 +1,12 @@
 # frozen_string_literal: true
 
 require 'bundler'
-require 'puppet_litmus/rake_tasks' if Gem.loaded_specs.key? 'puppet_litmus'
+require 'puppet_litmus/rake_tasks' if Bundler.rubygems.find_name('puppet_litmus').any?
 require 'puppetlabs_spec_helper/rake_tasks'
 require 'puppet-syntax/tasks/puppet-syntax'
-require 'github_changelog_generator/task' if Gem.loaded_specs.key? 'github_changelog_generator'
-require 'puppet-strings/tasks' if Gem.loaded_specs.key? 'puppet-strings'
+require 'puppet_blacksmith/rake_tasks' if Bundler.rubygems.find_name('puppet-blacksmith').any?
+require 'github_changelog_generator/task' if Bundler.rubygems.find_name('github_changelog_generator').any?
+require 'puppet-strings/tasks' if Bundler.rubygems.find_name('puppet-strings').any?
 
 def changelog_user
   return unless Rake.application.top_level_tasks.include? "changelog"
@@ -43,7 +44,7 @@ end
 PuppetLint.configuration.send('disable_relative')
 
 
-if Gem.loaded_specs.key? 'github_changelog_generator'
+if Bundler.rubygems.find_name('github_changelog_generator').any?
   GitHubChangelogGenerator::RakeTask.new :changelog do |config|
     raise "Set CHANGELOG_GITHUB_TOKEN environment variable eg 'export CHANGELOG_GITHUB_TOKEN=valid_token_here'" if Rake.application.top_level_tasks.include? "changelog" and ENV['CHANGELOG_GITHUB_TOKEN'].nil?
     config.user = "#{changelog_user}"
diff --git a/manifests/init.pp b/manifests/init.pp
index 3e97df295f2efd420fb3333b9632150110082ac6..a889fdab03f7374a8e443c7f72d32e190645ea28 100644
--- a/manifests/init.pp
+++ b/manifests/init.pp
@@ -6,39 +6,39 @@
 # @example
 #   none
 class vlc {
-  firewalld_service { 'Allow http in the liu Zone':
+  firewalld_service {'Allow http in the liu Zone':
     ensure  => present,
     zone    => 'liu',
     service => 'http',
   }
-  firewalld_service { 'Allow https in the liu Zone':
+  firewalld_service {'Allow https in the liu Zone':
     ensure  => present,
     zone    => 'liu',
     service => 'https',
   }
-  firewalld_service { 'Allow http in the public Zone':
+  firewalld_service {'Allow http in the public Zone':
     ensure  => present,
     zone    => 'public',
     service => 'http',
   }
-  firewalld_service { 'Allow https in the public Zone':
+  firewalld_service {'Allow https in the public Zone':
     ensure  => present,
     zone    => 'public',
     service => 'https',
   }
 
   # Känner firewall till servicen syncthing ??
-  firewalld_service { 'Allow syncthing in the public Zone':
+  firewalld_service {'Allow http in the public Zone':
     ensure  => present,
     zone    => 'public',
     service => 'syncthing',
   }
-  firewalld_service { 'Allow syncthing in the liu Zone':
+  firewalld_service {'Allow https in the public Zone':
     ensure  => present,
     zone    => 'liu',
     service => 'syncthing',
   }
-  firewalld_service { 'Allow syncthing-gui in the liu Zone':
+  firewalld_service {'Allow https in the public Zone':
     ensure  => present,
     zone    => 'liu',
     service => 'syncthing-gui',
diff --git a/metadata.json b/metadata.json
index 2a6e3e0d179fb25998bc04124790476fcd810920..b46ee45066f41bb4a1bd957d35f6856d6b4b5667 100644
--- a/metadata.json
+++ b/metadata.json
@@ -59,7 +59,7 @@
       "version_requirement": ">= 6.21.0 < 8.0.0"
     }
   ],
-  "pdk-version": "3.0.1",
+  "pdk-version": "2.4.0",
   "template-url": "https://gitlab.it.liu.se/puppet-infra/pdk-templates.git#liu",
-  "template-ref": "heads/liu-0-g522eb00"
+  "template-ref": "heads/liu-0-gdb0722b"
 }
diff --git a/pdk.yaml b/pdk.yaml
deleted file mode 100644
index 4bef4bd0f902390cfeb13e968d1879c74963b50e..0000000000000000000000000000000000000000
--- a/pdk.yaml
+++ /dev/null
@@ -1,2 +0,0 @@
----
-ignore: []
diff --git a/spec/default_facts.yml b/spec/default_facts.yml
index 3346c394df5a06fba389c76f1e2ccbb04c77ee6c..f777abfc9905202e7ccf5b5fcc76b9b4c59a39fb 100644
--- a/spec/default_facts.yml
+++ b/spec/default_facts.yml
@@ -2,8 +2,7 @@
 #
 # Facts specified here will override the values provided by rspec-puppet-facts.
 ---
-networking:
-  ip: "172.16.254.254"
-  ip6: "FE80:0000:0000:0000:AAAA:AAAA:AAAA"
-  mac: "AA:AA:AA:AA:AA:AA"
+ipaddress: "172.16.254.254"
+ipaddress6: "FE80:0000:0000:0000:AAAA:AAAA:AAAA"
 is_pe: false
+macaddress: "AA:AA:AA:AA:AA:AA"
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index 3f9a6c717863bd2eb4bdd13cf9c6b0399fe09129..ee9e00395e4a18319dfa49b95f7030797471cc8a 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -28,8 +28,8 @@ default_fact_files.each do |f|
   next unless File.exist?(f) && File.readable?(f) && File.size?(f)
 
   begin
-    default_facts.merge!(YAML.safe_load(File.read(f), permitted_classes: [], permitted_symbols: [], aliases: true))
-  rescue StandardError => e
+    default_facts.merge!(YAML.safe_load(File.read(f), [], [], true))
+  rescue => e
     RSpec.configuration.reporter.message "WARNING: Unable to load #{f}: #{e}"
   end
 end