puppetlabs-onceover 5.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.devcontainer/devcontainer.json +31 -0
- data/.gitattributes +2 -0
- data/.github/workflows/ci.yml +81 -0
- data/.github/workflows/mend.yml +14 -0
- data/.github/workflows/nightly.yml +66 -0
- data/.github/workflows/release.yaml +16 -0
- data/.github/workflows/release_prep.yml +20 -0
- data/.gitignore +19 -0
- data/.rubocop.yml +19 -0
- data/.rubocop_todo.yml +804 -0
- data/.vscode/extensions.json +4 -0
- data/ARCHIVE.md +395 -0
- data/CHANGELOG.md +25 -0
- data/CODEOWNERS +2 -0
- data/Gemfile +65 -0
- data/LICENSE +202 -0
- data/README.md +965 -0
- data/Rakefile +86 -0
- data/bin/puppetlabs-onceover +17 -0
- data/cucumber.yml +1 -0
- data/factsets/AIX-6.1-powerpc.json +210 -0
- data/factsets/AIX-7.1-powerpc.json +215 -0
- data/factsets/Amazon-2018.03.json +420 -0
- data/factsets/CentOS-5.11-32.json +263 -0
- data/factsets/CentOS-5.11-64.json +263 -0
- data/factsets/CentOS-6.6-32.json +306 -0
- data/factsets/CentOS-6.6-64.json +342 -0
- data/factsets/CentOS-7.0-64.json +352 -0
- data/factsets/CentOS-8.3.2011-64.json +485 -0
- data/factsets/Debian-10.4-64.json +476 -0
- data/factsets/Debian-6.0.10-32.json +322 -0
- data/factsets/Debian-6.0.10-64.json +322 -0
- data/factsets/Debian-7.8-32.json +338 -0
- data/factsets/Debian-7.8-64.json +338 -0
- data/factsets/Debian-8.11-64.json +480 -0
- data/factsets/Debian-9.12-64.json +476 -0
- data/factsets/RHEL-6.7.json +415 -0
- data/factsets/RHEL-7.4.json +489 -0
- data/factsets/SLES-11.3-64.json +317 -0
- data/factsets/SLES-12.1-64.json +353 -0
- data/factsets/Ubuntu-12.04-32.json +328 -0
- data/factsets/Ubuntu-12.04-64.json +328 -0
- data/factsets/Ubuntu-14.04-32.json +337 -0
- data/factsets/Ubuntu-14.04-64.json +373 -0
- data/factsets/Ubuntu-18.04-64.json +556 -0
- data/factsets/Ubuntu-20.04-64.json +504 -0
- data/factsets/Windows_Server-2008r2-64.json +184 -0
- data/factsets/Windows_Server-2012r2-64.json +165 -0
- data/factsets/solaris-10_u9-sparc-64.json +769 -0
- data/factsets/solaris-11.2-sparc-64.json +774 -0
- data/factsets/windows-10-64.json +104 -0
- data/features/auto_vendored.feature +27 -0
- data/features/cache.feature +38 -0
- data/features/factsets.feature +48 -0
- data/features/formatting.feature +36 -0
- data/features/help.feature +14 -0
- data/features/init.feature +18 -0
- data/features/show.feature +28 -0
- data/features/step_definitions/cache.rb +38 -0
- data/features/step_definitions/common.rb +123 -0
- data/features/step_definitions/formatter.rb +41 -0
- data/features/step_definitions/init.rb +17 -0
- data/features/step_definitions/run.rb +17 -0
- data/features/support/cache_helper.rb +54 -0
- data/features/support/command_helper.rb +32 -0
- data/features/support/controlrepo_helper.rb +36 -0
- data/features/support/env.rb +2 -0
- data/features/windows.feature +35 -0
- data/features/zzz_run.feature +93 -0
- data/lib/puppetlabs-onceover/beaker/spec_helper.rb +71 -0
- data/lib/puppetlabs-onceover/beaker.rb +241 -0
- data/lib/puppetlabs-onceover/class.rb +56 -0
- data/lib/puppetlabs-onceover/cli/init.rb +34 -0
- data/lib/puppetlabs-onceover/cli/plugins.rb +10 -0
- data/lib/puppetlabs-onceover/cli/run.rb +85 -0
- data/lib/puppetlabs-onceover/cli/show.rb +79 -0
- data/lib/puppetlabs-onceover/cli/update.rb +48 -0
- data/lib/puppetlabs-onceover/cli.rb +47 -0
- data/lib/puppetlabs-onceover/controlrepo.rb +688 -0
- data/lib/puppetlabs-onceover/deploy.rb +171 -0
- data/lib/puppetlabs-onceover/group.rb +78 -0
- data/lib/puppetlabs-onceover/logger.rb +32 -0
- data/lib/puppetlabs-onceover/node.rb +72 -0
- data/lib/puppetlabs-onceover/rake_tasks.rb +95 -0
- data/lib/puppetlabs-onceover/rspec/formatters.rb +315 -0
- data/lib/puppetlabs-onceover/runner.rb +139 -0
- data/lib/puppetlabs-onceover/test.rb +135 -0
- data/lib/puppetlabs-onceover/testconfig.rb +315 -0
- data/lib/puppetlabs-onceover/vendored_modules.rb +202 -0
- data/lib/puppetlabs-onceover/version.rb +5 -0
- data/puppetlabs-onceover.gemspec +40 -0
- data/spec/fixtures/controlrepos/basic/Puppetfile +17 -0
- data/spec/fixtures/controlrepos/basic/environment.conf +7 -0
- data/spec/fixtures/controlrepos/basic/hieradata/common.yaml +2 -0
- data/spec/fixtures/controlrepos/basic/hieradata/nodes/example-node.yaml +1 -0
- data/spec/fixtures/controlrepos/basic/manifests/site.pp +32 -0
- data/spec/fixtures/controlrepos/basic/manifests_alternate/site.pp +2 -0
- data/spec/fixtures/controlrepos/basic/site/profile/manifests/base.pp +5 -0
- data/spec/fixtures/controlrepos/basic/site/profile/manifests/example.pp +3 -0
- data/spec/fixtures/controlrepos/basic/site/role/manifests/database_server.pp +7 -0
- data/spec/fixtures/controlrepos/basic/site/role/manifests/example.pp +3 -0
- data/spec/fixtures/controlrepos/basic/site/role/manifests/webserver.pp +7 -0
- data/spec/fixtures/controlrepos/caching/.gitignore +1 -0
- data/spec/fixtures/controlrepos/caching/.travis.yml +2 -0
- data/spec/fixtures/controlrepos/caching/Gemfile +5 -0
- data/spec/fixtures/controlrepos/caching/Puppetfile +17 -0
- data/spec/fixtures/controlrepos/caching/Rakefile +1 -0
- data/spec/fixtures/controlrepos/caching/deleteme.txt +0 -0
- data/spec/fixtures/controlrepos/caching/environment.conf +2 -0
- data/spec/fixtures/controlrepos/caching/hieradata/common.yaml +2 -0
- data/spec/fixtures/controlrepos/caching/hieradata/nodes/example-node.yaml +1 -0
- data/spec/fixtures/controlrepos/caching/manifests/site.pp +33 -0
- data/spec/fixtures/controlrepos/caching/site/profile/manifests/base.pp +5 -0
- data/spec/fixtures/controlrepos/caching/site/profile/manifests/example.pp +3 -0
- data/spec/fixtures/controlrepos/caching/site/role/manifests/database_server.pp +7 -0
- data/spec/fixtures/controlrepos/caching/site/role/manifests/example.pp +3 -0
- data/spec/fixtures/controlrepos/caching/site/role/manifests/webserver.pp +7 -0
- data/spec/fixtures/controlrepos/caching/spec/factsets/Debian-10-facter-4.json +1091 -0
- data/spec/fixtures/controlrepos/caching/spec/factsets/README.md +7 -0
- data/spec/fixtures/controlrepos/caching/spec/onceover.yaml +55 -0
- data/spec/fixtures/controlrepos/caching/spec/pre_conditions/README.md +24 -0
- data/spec/fixtures/controlrepos/caching/spec/pre_conditions/escaping.pp +7 -0
- data/spec/fixtures/controlrepos/caching/spec/r10k.yaml +3 -0
- data/spec/fixtures/controlrepos/control_branch/Puppetfile +18 -0
- data/spec/fixtures/controlrepos/control_branch/environment.conf +2 -0
- data/spec/fixtures/controlrepos/custom_puppetfile/Puppetfile.custom +3 -0
- data/spec/fixtures/controlrepos/custom_puppetfile/environment.conf +7 -0
- data/spec/fixtures/controlrepos/factsets/environment.conf +1 -0
- data/spec/fixtures/controlrepos/factsets/site/profile/manifests/base.pp +6 -0
- data/spec/fixtures/controlrepos/factsets/site/role/manifests/example.pp +4 -0
- data/spec/fixtures/controlrepos/factsets/site/role/manifests/trusted_extensions.pp +6 -0
- data/spec/fixtures/controlrepos/factsets/site/role/manifests/trusted_external.pp +6 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/README.md +7 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_notrusted.json +530 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_extensions_nested.json +535 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_extensions_top.json +533 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_external_nested.json +537 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos7_trusted_external_top.json +535 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos_7_facter_4.json +706 -0
- data/spec/fixtures/controlrepos/factsets/spec/factsets/centos_with_env.json +353 -0
- data/spec/fixtures/controlrepos/function_mocking/.gitignore +1 -0
- data/spec/fixtures/controlrepos/function_mocking/Puppetfile +4 -0
- data/spec/fixtures/controlrepos/function_mocking/Rakefile +1 -0
- data/spec/fixtures/controlrepos/function_mocking/environment.conf +2 -0
- data/spec/fixtures/controlrepos/function_mocking/site/profile/functions/fail_puppet.pp +5 -0
- data/spec/fixtures/controlrepos/function_mocking/site/profile/lib/puppet/functions/profile/fail_ruby.rb +9 -0
- data/spec/fixtures/controlrepos/function_mocking/site/profile/manifests/base.pp +10 -0
- data/spec/fixtures/controlrepos/function_mocking/site/role/manifests/fail.pp +7 -0
- data/spec/fixtures/controlrepos/function_mocking/site/role/manifests/test_data_return.pp +19 -0
- data/spec/fixtures/controlrepos/function_mocking/site/role/manifests/test_new_functions.pp +12 -0
- data/spec/fixtures/controlrepos/function_mocking/spec/onceover.yaml +50 -0
- data/spec/fixtures/controlrepos/minimal/environment.conf +2 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/.atom-build.json +9 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/.gitignore +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/.ruby-version +1 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/.travis.yml +13 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/Gemfile +22 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/Jenkinsfile +50 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/Puppetfile +102 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/README.md +4 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/Rakefile +33 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/data/common.yaml +558 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/data/datacenter/melbourne.yaml +12 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/data/datacenter/singapore.yaml +12 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/data/environments/development.yaml +3 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/data/environments/production.yaml +3 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/data/size/vol.large.yaml +27 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/environment.conf +3 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/hiera.yaml +25 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/manifests/site.pp +11 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/code_manager_config_version.rb +19 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/config_version.rb +25 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/config_version.sh +12 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/count_changed_classes.rb +26 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/scripts/get_changed_classes.rb +26 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/console/functions/user/token.pp +10 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/console/manifests/init.pp +14 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/console/manifests/user.pp +35 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/deployments/lib/puppet/functions/deployments/generate.rb +15 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/deployments/plans/signed_deployment.pp +126 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/facts.d/test.sh +2 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/artifactory/config_descriptor.xml +265 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/autosign.sh +23 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/hudson.tasks.Shell.xml +4 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/motd +4 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/files/polar_clock/index.html +198 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/apt.pp +9 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/aws_nodes.pp +54 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/aws.pp +9 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/rhel.pp +50 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/windows/hardening.pp +57 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base/windows.pp +52 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/base.pp +79 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/artifactory.pp +64 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/connection.pp +95 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/haproxy.pp +65 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/cd4pe/replicated.pp +53 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/compile/balancer.pp +28 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/compile/master.pp +19 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/dns/host_record.pp +16 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/dns/server.pp +66 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/docker.pp +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/base.pp +43 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/core/database_connection.pp +42 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/core.pp +72 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/ctrl.pp +57 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/database.pp +32 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/eyeunify/exec.pp +11 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/file_sync/client.pp +165 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/file_sync/master_patch.pp +37 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/grafana/dashboard.pp +17 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/haproxy.pp +43 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/init.pp +3 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jenkins/plugins.pp +87 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jenkins.pp +65 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jira/aio.pp +39 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jira/app.pp +27 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/jira/db.pp +25 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/metrics/collectd/compile.pp +82 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/metrics/collectd.pp +28 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/metrics/dashboard.pp +28 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/mysql_server.pp +7 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/nginx.pp +24 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/polar_clock.pp +55 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/api_auth.pp +82 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/autosign.pp +33 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/aws.pp +58 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster/tuning.pp +139 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/puppetmaster.pp +139 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/rvm.pp +13 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/sumologic.pp +11 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/sunburst/windows.pp +104 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/vagrant.pp +25 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/manifests/windows/webserver.pp +27 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/cd4pe/connection_script.sh.epp +110 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/controlrepo_deploy_jenkins_job.xml.epp +51 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/dashboard.json.epp +403 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/jenkins_secret_text.json.epp +1 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/onceover_jenkins_job.xml.epp +51 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/profile/templates/userdata.epp +17 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/cd4pe.pp +29 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/clock.pp +16 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/compile/balancer.pp +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/compile/master.pp +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/aio.pp +10 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/controller.pp +10 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/database.pp +7 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/eyeunify/exec.pp +6 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/init.pp +3 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/lb.pp +14 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/metrics.pp +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/mysql.pp +13 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/windows/base.pp +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/site-modules/role/manifests/windows/webserver.pp +6 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/.gitignore +5 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/acceptance/nodesets/onceover-nodes.yml +94 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/classes/test_spec.rb +8 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/CentOS-7.0-64-master-2017.3.2.json +531 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/CentOS-7.0-64-master.json +429 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/CentOS-7.0-64.json +353 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/Windows_Server-2008r2-64.json +184 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/factsets/Windows_Server-2012r2-64.json +165 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/hiera.yaml +18 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/matchers/file_matchers.rb +16 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/onceover.yaml +54 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/pre_conditions/site.pp +150 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/r10k.yaml +2 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/shared_examples/helper.rb +91 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/unit/00_parse_spec.rb +76 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/unit/01_linting_spec_example.rb +69 -0
- data/spec/fixtures/controlrepos/puppet_controlrepo/spec/unit/03_puppetfile_spec_example.rb +35 -0
- data/spec/fixtures/controlrepos/vendored/Puppetfile +3 -0
- data/spec/fixtures/controlrepos/vendored/Puppetfile.cron +5 -0
- data/spec/fixtures/controlrepos/vendored/environment.conf +1 -0
- data/spec/fixtures/controlrepos/vendored/site-modules/role/manifests/cron.pp +9 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/augeas_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/augeas_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/cron_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/cron_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/host_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/host_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/mount_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/mount_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/repo_tree-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/repo_tree-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/scheduled_task-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/scheduled_task-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/selinux_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/selinux_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/sshkeys_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/sshkeys_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/yumrepo_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/yumrepo_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zfs_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zfs_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zone_core-puppet_agent-7.30.0.json +1 -0
- data/spec/fixtures/controlrepos/vendored/spec/vendored_modules/zone_core-puppet_agent-8.6.0.json +1 -0
- data/spec/fixtures/controlrepos/windows/Gemfile +3 -0
- data/spec/fixtures/controlrepos/windows/Puppetfile +8 -0
- data/spec/fixtures/controlrepos/windows/environment.conf +1 -0
- data/spec/fixtures/controlrepos/windows/site/role/manifests/groups.pp +8 -0
- data/spec/fixtures/controlrepos/windows/site/role/manifests/users.pp +9 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/acl.pp +12 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/choco.pp +9 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/groups.pp +8 -0
- data/spec/fixtures/controlrepos/windows/site-modules/role/manifests/users.pp +9 -0
- data/spec/fixtures/controlrepos/windows/spec/onceover.yaml +24 -0
- data/spec/puppetlabs-onceover/controlrepo_spec.rb +18 -0
- data/spec/spec_helper.rb +8 -0
- data/templates/.fixtures.yml.erb +24 -0
- data/templates/Gemfile.erb +3 -0
- data/templates/Rakefile.erb +1 -0
- data/templates/acceptance_test_spec.rb.erb +66 -0
- data/templates/controlrepo.yaml.erb +38 -0
- data/templates/error_summary.yaml.erb +17 -0
- data/templates/factsets_README.md.erb +10 -0
- data/templates/nodeset.yaml.erb +12 -0
- data/templates/pre_conditions_README.md.erb +24 -0
- data/templates/spec_helper.rb.erb +35 -0
- data/templates/spec_helper_acceptance.rb.erb +1 -0
- data/templates/test_spec.rb.erb +150 -0
- data/templates/testconfig_Rakefile.erb +47 -0
- metadata +602 -0
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
# handle local deployments (run r10k in .onceover dir)
|
|
2
|
+
class PuppetlabsOnceover
|
|
3
|
+
class Deploy
|
|
4
|
+
def deploy_local(repo = PuppetlabsOnceover::Controlrepo.new, opts = {})
|
|
5
|
+
require 'puppetlabs-onceover/controlrepo'
|
|
6
|
+
require 'pathname'
|
|
7
|
+
require 'fileutils'
|
|
8
|
+
require 'multi_json'
|
|
9
|
+
|
|
10
|
+
logger.debug 'Deploying locally (R10K)...'
|
|
11
|
+
|
|
12
|
+
# Only default to running r10k if there is a Puppetfile
|
|
13
|
+
skip_r10k_default = !(File.file?(repo.puppetfile))
|
|
14
|
+
skip_r10k = opts[:skip_r10k] || skip_r10k_default
|
|
15
|
+
force = opts[:force] || false
|
|
16
|
+
# Only attempt to resolve vendored modules if configured to do so
|
|
17
|
+
auto_vendored = opts[:auto_vendored] || false
|
|
18
|
+
|
|
19
|
+
require 'puppetlabs-onceover/vendored_modules' if auto_vendored
|
|
20
|
+
|
|
21
|
+
if repo.tempdir == nil
|
|
22
|
+
repo.tempdir = Dir.mktmpdir('r10k')
|
|
23
|
+
else
|
|
24
|
+
logger.debug "Creating #{repo.tempdir}"
|
|
25
|
+
FileUtils.mkdir_p(repo.tempdir)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# Overall plan: Copy everything in control repo to a tempdir then move the tempdir to the
|
|
29
|
+
# destination, just in case we get a recursive copy
|
|
30
|
+
|
|
31
|
+
# We need to exclude some files:
|
|
32
|
+
# * our own cache
|
|
33
|
+
# * stuff from git
|
|
34
|
+
# * stale puppet modules
|
|
35
|
+
# * random ruby gems (bundler/rvm?)
|
|
36
|
+
# * ...etc
|
|
37
|
+
excluded_dirs = [
|
|
38
|
+
File.join(repo.root, ".onceover"),
|
|
39
|
+
File.join(repo.root, ".git"),
|
|
40
|
+
File.join(repo.root, ".modules"),
|
|
41
|
+
File.join(repo.root, "vendor"),
|
|
42
|
+
]
|
|
43
|
+
excluded_dirs << ENV['GEM_HOME'] if ENV['GEM_HOME']
|
|
44
|
+
|
|
45
|
+
# A Local modules directory likely means that the user installed r10k folders into their local control repo
|
|
46
|
+
# This conflicts with the step where onceover installs r10k after copying the control repo to the temporary
|
|
47
|
+
# .onceover directory. The following skips copying the modules folder, to not later cause an error.
|
|
48
|
+
if File.directory?("modules")
|
|
49
|
+
logger.warn "Found modules directory in your controlrepo, skipping the copy of this directory. If you installed modules locally using r10k, this warning is normal, if you have created modules in a local modules directory, onceover does not support testing these files, please rename this directory to conform with Puppet best practices, as this folder will conflict with Puppet's native installation of modules."
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
logger.debug "Creating temp dir as a staging directory for copying the controlrepo to #{repo.tempdir}"
|
|
53
|
+
temp_controlrepo = Dir.mktmpdir('controlrepo')
|
|
54
|
+
|
|
55
|
+
# onceover stores a big list of all the relative paths it places within its cache directory
|
|
56
|
+
onceover_manifest = []
|
|
57
|
+
|
|
58
|
+
Find.find repo.root do |source|
|
|
59
|
+
# work out a relative path to this source, eg:
|
|
60
|
+
# /home/geoff/control-repo/foo/bar -> foo/bar
|
|
61
|
+
relative_source = Pathname.new(source).relative_path_from(Pathname.new(repo.root)).to_s
|
|
62
|
+
|
|
63
|
+
target = File.join(temp_controlrepo, relative_source)
|
|
64
|
+
|
|
65
|
+
# ignore the path "." which represents the root of our control repo
|
|
66
|
+
if relative_source != "."
|
|
67
|
+
# add to list of files copied to cache by onceover
|
|
68
|
+
onceover_manifest << relative_source
|
|
69
|
+
|
|
70
|
+
if File.symlink?(source)
|
|
71
|
+
# Handle symlinks
|
|
72
|
+
link_target = File.readlink(source) # Get the target of the symlink
|
|
73
|
+
FileUtils.ln_s link_target, target, force: true # Create symlink at target
|
|
74
|
+
elsif File.directory? source
|
|
75
|
+
Find.prune if excluded_dirs.include? source
|
|
76
|
+
FileUtils.mkdir target
|
|
77
|
+
else
|
|
78
|
+
FileUtils.copy source, target
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
logger.debug "Writing manifest of copied controlrepo files"
|
|
83
|
+
File.write("#{temp_controlrepo}/.onceover_manifest.json", onceover_manifest.to_json)
|
|
84
|
+
|
|
85
|
+
# When using puppetfile vs deploy with r10k, we want to respect the :control_branch
|
|
86
|
+
# located in the Puppetfile. To accomplish that, we use git and find the current
|
|
87
|
+
# branch name, then replace strings within the staged puppetfile, prior to copying.
|
|
88
|
+
logger.debug "Checking current working branch"
|
|
89
|
+
git_branch = `git rev-parse --abbrev-ref HEAD`.chomp
|
|
90
|
+
|
|
91
|
+
logger.debug "found #{git_branch} as current working branch"
|
|
92
|
+
# Only try to modify Puppetfile if it exists
|
|
93
|
+
unless skip_r10k
|
|
94
|
+
FileUtils.copy repo.puppetfile, "#{temp_controlrepo}/Puppetfile"
|
|
95
|
+
puppetfile_contents = File.read("#{temp_controlrepo}/Puppetfile")
|
|
96
|
+
|
|
97
|
+
# Avoid touching thing if we don't need to
|
|
98
|
+
if /:control_branch/.match(puppetfile_contents)
|
|
99
|
+
logger.debug "replacing :control_branch mentions in the Puppetfile with #{git_branch}"
|
|
100
|
+
new_puppetfile_contents = puppetfile_contents.gsub(":control_branch", "'#{git_branch}'")
|
|
101
|
+
File.write("#{temp_controlrepo}/Puppetfile", new_puppetfile_contents)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
if auto_vendored
|
|
105
|
+
tmp_puppetfile = File.join(temp_controlrepo, 'Puppetfile')
|
|
106
|
+
tmp_puppetfile_contents = File.read(tmp_puppetfile)
|
|
107
|
+
vm = PuppetlabsOnceover::VendoredModules.new({ repo: repo })
|
|
108
|
+
puppetfile = R10K::ModuleLoader::Puppetfile.new(basedir: temp_controlrepo)
|
|
109
|
+
vm.puppetfile_missing_vendored(puppetfile)
|
|
110
|
+
unless vm.missing_vendored.empty?
|
|
111
|
+
missing_slugs = vm.missing_vendored.map do |missing_mod|
|
|
112
|
+
missing_mod.keys[0]
|
|
113
|
+
end
|
|
114
|
+
logger.debug "Adding #{missing_slugs} to #{tmp_puppetfile}"
|
|
115
|
+
modlines = vm.missing_vendored.map do |missing_mod|
|
|
116
|
+
mod_slug = missing_mod.keys[0]
|
|
117
|
+
"mod '#{mod_slug}',\n git: '#{missing_mod[mod_slug][:git]}',\n ref: '#{missing_mod[mod_slug][:ref]}'"
|
|
118
|
+
end.join("\n")
|
|
119
|
+
File.write(tmp_puppetfile, "#{tmp_puppetfile_contents}\n# PuppetlabsOnceover Managed Vendored Modules\n#{modlines}")
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
# Remove all files written by the last onceover run, but not the ones
|
|
125
|
+
# added by r10k, because that's what we are trying to cache but we don't
|
|
126
|
+
# know what they are
|
|
127
|
+
old_manifest_path = "#{repo.tempdir}/#{repo.environmentpath}/production/.onceover_manifest.json"
|
|
128
|
+
if File.exist? old_manifest_path
|
|
129
|
+
logger.debug "Found manifest from previous run, parsing..."
|
|
130
|
+
old_manifest = MultiJson.load(File.read(old_manifest_path))
|
|
131
|
+
logger.debug "Removing #{old_manifest.count} files"
|
|
132
|
+
old_manifest.reverse.each do |file|
|
|
133
|
+
FileUtils.rm_f(File.join("#{repo.tempdir}/#{repo.environmentpath}/production/",file))
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
FileUtils.mkdir_p("#{repo.tempdir}/#{repo.environmentpath}")
|
|
137
|
+
|
|
138
|
+
logger.debug "Copying #{temp_controlrepo} to #{repo.tempdir}/#{repo.environmentpath}/production"
|
|
139
|
+
FileUtils.cp_r("#{temp_controlrepo}/.", "#{repo.tempdir}/#{repo.environmentpath}/production")
|
|
140
|
+
FileUtils.rm_rf(temp_controlrepo)
|
|
141
|
+
|
|
142
|
+
# Pull the trigger! If it's not already been pulled
|
|
143
|
+
if repo.tempdir and not skip_r10k
|
|
144
|
+
if File.directory?(repo.tempdir)
|
|
145
|
+
# TODO: Change this to call out to r10k directly to do this
|
|
146
|
+
# Probably something like:
|
|
147
|
+
# R10K::Settings.global_settings.evaluate(with_overrides)
|
|
148
|
+
# R10K::Action::Deploy::Environment
|
|
149
|
+
prod_dir = "#{repo.tempdir}/#{repo.environmentpath}/production"
|
|
150
|
+
Dir.chdir(prod_dir) do
|
|
151
|
+
install_cmd = []
|
|
152
|
+
install_cmd << 'r10k puppetfile install --color'
|
|
153
|
+
install_cmd << "--force" if force
|
|
154
|
+
install_cmd << "--config #{repo.r10k_config_file}" if repo.r10k_config_file
|
|
155
|
+
install_cmd << (logger.level > 0 ? "--verbose" : "--verbose debug") # Enable debugging if we're debugging
|
|
156
|
+
install_cmd << "--trace" if opts[:trace]
|
|
157
|
+
install_cmd = install_cmd.join(' ')
|
|
158
|
+
logger.debug "Running #{install_cmd} from #{prod_dir}"
|
|
159
|
+
system(install_cmd)
|
|
160
|
+
raise 'r10k could not install all required modules' unless $?.success?
|
|
161
|
+
end
|
|
162
|
+
else
|
|
163
|
+
raise "#{repo.tempdir} is not a directory"
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Return repo.tempdir for use
|
|
168
|
+
repo.tempdir
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
require 'puppetlabs-onceover/class'
|
|
2
|
+
require 'puppetlabs-onceover/node'
|
|
3
|
+
|
|
4
|
+
class PuppetlabsOnceover
|
|
5
|
+
class Group
|
|
6
|
+
@@all = []
|
|
7
|
+
|
|
8
|
+
# Work out how to do class variables so that I can keep track of all the groups easily
|
|
9
|
+
attr_accessor :name
|
|
10
|
+
attr_accessor :members
|
|
11
|
+
|
|
12
|
+
# You need to pass in an array of strings for members, not objects, it will find the objects
|
|
13
|
+
# by itself, and yes it will reference them, not just create additional ones, woo!
|
|
14
|
+
|
|
15
|
+
def initialize(name = nil, members = [])
|
|
16
|
+
@name = name
|
|
17
|
+
@members = []
|
|
18
|
+
|
|
19
|
+
case
|
|
20
|
+
when PuppetlabsOnceover::Group.valid_members?(members)
|
|
21
|
+
# If it's already a valid list just chuck it in there
|
|
22
|
+
@members = members
|
|
23
|
+
when members.is_a?(Hash)
|
|
24
|
+
# if it's a hash then do subtractive stuff
|
|
25
|
+
@members = PuppetlabsOnceover::TestConfig.subtractive_to_list(members)
|
|
26
|
+
when members.nil?
|
|
27
|
+
# Support empty groups yo
|
|
28
|
+
@members = []
|
|
29
|
+
else
|
|
30
|
+
# Turn it into a full list
|
|
31
|
+
# This should also handle lists that include groups
|
|
32
|
+
member_objects = members.map { |member| PuppetlabsOnceover::TestConfig.find_list(member) }
|
|
33
|
+
member_objects.flatten!
|
|
34
|
+
|
|
35
|
+
# Check that they are all the same type
|
|
36
|
+
unless PuppetlabsOnceover::Group.valid_members?(member_objects)
|
|
37
|
+
raise 'Groups must contain either all nodes or all classes. Either there was a mix, or something was spelled wrong'
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Smash it into the instance variable
|
|
41
|
+
@members = member_objects
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Finally add it to the list of all grops
|
|
45
|
+
@@all << self
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.find(group_name)
|
|
49
|
+
@@all.each do |group|
|
|
50
|
+
if group.name == group_name
|
|
51
|
+
return group
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def self.all
|
|
58
|
+
@@all
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
# rubocop:disable-next Lint/DuplicateBranch
|
|
62
|
+
def self.valid_members?(members)
|
|
63
|
+
# Check that they are all the same type
|
|
64
|
+
# Also catch any errors to assume it's invalid
|
|
65
|
+
begin
|
|
66
|
+
if members.all? { |item| item.is_a?(PuppetlabsOnceover::Class) }
|
|
67
|
+
return true
|
|
68
|
+
elsif members.all? { |item| item.is_a?(PuppetlabsOnceover::Node) }
|
|
69
|
+
return true
|
|
70
|
+
else
|
|
71
|
+
return false
|
|
72
|
+
end
|
|
73
|
+
rescue StandardError
|
|
74
|
+
return false
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'logging'
|
|
2
|
+
|
|
3
|
+
module PuppetlabsOnceover::Logger
|
|
4
|
+
def logger
|
|
5
|
+
unless $logger
|
|
6
|
+
# here we setup a color scheme called 'bright'
|
|
7
|
+
Logging.color_scheme(
|
|
8
|
+
'bright',
|
|
9
|
+
:levels => {
|
|
10
|
+
:debug => :cyan,
|
|
11
|
+
:info => :green,
|
|
12
|
+
:warn => :yellow,
|
|
13
|
+
:error => :red,
|
|
14
|
+
:fatal => [:white, :on_red]
|
|
15
|
+
}
|
|
16
|
+
)
|
|
17
|
+
|
|
18
|
+
Logging.appenders.stdout(
|
|
19
|
+
'stdout',
|
|
20
|
+
:layout => Logging.layouts.pattern(
|
|
21
|
+
:pattern => '%l\t -> %m\n',
|
|
22
|
+
:color_scheme => 'bright'
|
|
23
|
+
)
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
$logger = Logging.logger['Colors']
|
|
27
|
+
$logger.add_appenders 'stdout'
|
|
28
|
+
$logger.level = :info
|
|
29
|
+
end
|
|
30
|
+
$logger
|
|
31
|
+
end
|
|
32
|
+
end
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
require 'puppetlabs-onceover/controlrepo'
|
|
2
|
+
|
|
3
|
+
class PuppetlabsOnceover
|
|
4
|
+
class Node
|
|
5
|
+
@@all = []
|
|
6
|
+
|
|
7
|
+
attr_accessor :name
|
|
8
|
+
attr_accessor :beaker_node
|
|
9
|
+
attr_accessor :fact_set
|
|
10
|
+
attr_accessor :trusted_set
|
|
11
|
+
attr_accessor :trusted_external_set
|
|
12
|
+
|
|
13
|
+
def initialize(name)
|
|
14
|
+
@name = name
|
|
15
|
+
@beaker_node = nil
|
|
16
|
+
|
|
17
|
+
# If we can't find the factset it will fail, so just catch that error and ignore it
|
|
18
|
+
begin
|
|
19
|
+
facts_file_index = PuppetlabsOnceover::Controlrepo.facts_files.index {|facts_file|
|
|
20
|
+
File.basename(facts_file, '.json') == name
|
|
21
|
+
}
|
|
22
|
+
@fact_set = PuppetlabsOnceover::Node.clean_facts(PuppetlabsOnceover::Controlrepo.facts[facts_file_index])
|
|
23
|
+
|
|
24
|
+
# First see if we can find a 'trusted' hash at the top level of our factset
|
|
25
|
+
@trusted_set = PuppetlabsOnceover::Controlrepo.trusted_facts[facts_file_index]
|
|
26
|
+
# If we don't find it, attempt to find a 'trusted.extensions' hash nested in our fact_set
|
|
27
|
+
@trusted_set = @fact_set.dig('trusted', 'extensions') if @trusted_set.nil?
|
|
28
|
+
# If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
|
|
29
|
+
# let(:trusted_facts) { trusted_facts }
|
|
30
|
+
@trusted_set = {} if @trusted_set.nil?
|
|
31
|
+
|
|
32
|
+
# First see if we can find a 'trusted_external' hash at the top level of our factset
|
|
33
|
+
@trusted_external_set = PuppetlabsOnceover::Controlrepo.trusted_external_facts[facts_file_index]
|
|
34
|
+
# If we don't find it, attempt to find a 'trusted.external' hash nested in our fact_set
|
|
35
|
+
@trusted_external_set = @fact_set.dig('trusted', 'external') if @trusted_external_set.nil?
|
|
36
|
+
# If we still can't find any, return an empty hash so the following doesn't blow up user written tests:
|
|
37
|
+
# let(:trusted_external_data) { trusted_external_data }
|
|
38
|
+
@trusted_external_set = {} if @trusted_external_set.nil?
|
|
39
|
+
rescue TypeError
|
|
40
|
+
@fact_set = {}
|
|
41
|
+
@trusted_set = {}
|
|
42
|
+
@trusted_external_set = {}
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
@@all << self
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.find(node_name)
|
|
49
|
+
@@all.each do |node|
|
|
50
|
+
if node_name.is_a?(PuppetlabsOnceover::Node)
|
|
51
|
+
if node = node_name
|
|
52
|
+
return node
|
|
53
|
+
end
|
|
54
|
+
elsif node.name == node_name
|
|
55
|
+
return node
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
logger.warn "Node #{node_name} not found"
|
|
59
|
+
nil
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def self.all
|
|
63
|
+
@@all
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
# This method ensures that all facts are valid and clean anoything that we can't handle
|
|
67
|
+
def self.clean_facts(factset)
|
|
68
|
+
factset.delete('environment')
|
|
69
|
+
factset
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
end
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
require 'puppetlabs-onceover/controlrepo'
|
|
2
|
+
require 'pathname'
|
|
3
|
+
|
|
4
|
+
@repo = nil
|
|
5
|
+
@config = nil
|
|
6
|
+
|
|
7
|
+
desc 'Writes a `fixtures.yml` file based on the Puppetfile'
|
|
8
|
+
task :generate_fixtures do
|
|
9
|
+
repo = PuppetlabsOnceover::Controlrepo.new
|
|
10
|
+
if File.exist?(File.expand_path('./.fixtures.yml', repo.root))
|
|
11
|
+
raise ".fixtures.yml already exits, we won't overwrite because we are scared"
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
File.write(File.expand_path('./.fixtures.yml', repo.root), repo.fixtures)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
desc "Modifies your `hiera.yaml` to point at the hieradata relative to its position."
|
|
18
|
+
task :hiera_setup do
|
|
19
|
+
repo = PuppetlabsOnceover::Controlrepo.new
|
|
20
|
+
current_config = repo.hiera_config
|
|
21
|
+
current_config.each do |key, value|
|
|
22
|
+
if value.is_a?(Hash)
|
|
23
|
+
if value.has_key?(:datadir)
|
|
24
|
+
hiera_config_path = Pathname.new(File.expand_path('..', repo.hiera_config_file))
|
|
25
|
+
current_config[key][:datadir] = Pathname.new(repo.hiera_data).relative_path_from(hiera_config_path).to_s
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
puts "Changing hiera config from \n#{repo.hiera_config}\nto\n#{current_config}"
|
|
30
|
+
repo.hiera_config = current_config
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
task :controlrepo_details do
|
|
34
|
+
require 'puppetlabs-onceover/controlrepo'
|
|
35
|
+
puts PuppetlabsOnceover::Controlrepo.new.to_s
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
task :generate_onceover_yaml do
|
|
39
|
+
require 'puppetlabs-onceover/controlrepo'
|
|
40
|
+
repo = PuppetlabsOnceover::Controlrepo.new
|
|
41
|
+
template_dir = File.expand_path('../../templates', File.dirname(__FILE__))
|
|
42
|
+
onceover_yaml_template = File.read(File.expand_path('./controlrepo.yaml.erb', template_dir))
|
|
43
|
+
puts ERB.new(onceover_yaml_template, nil, '-').result(binding)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
task :generate_nodesets do
|
|
47
|
+
warn "[DEPRECATION] #{__method__} is deprecated due to the removal of Beaker"
|
|
48
|
+
|
|
49
|
+
require 'puppetlabs-onceover/beaker'
|
|
50
|
+
require 'net/http'
|
|
51
|
+
require 'multi_json'
|
|
52
|
+
|
|
53
|
+
repo = PuppetlabsOnceover::Controlrepo.new
|
|
54
|
+
|
|
55
|
+
puts "HOSTS:"
|
|
56
|
+
|
|
57
|
+
repo.facts.each do |fact_set|
|
|
58
|
+
node_name = File.basename(repo.facts_files[repo.facts.index(fact_set)], '.json')
|
|
59
|
+
boxname = PuppetlabsOnceover::Beaker.facts_to_vagrant_box(fact_set)
|
|
60
|
+
platform = PuppetlabsOnceover::Beaker.facts_to_platform(fact_set)
|
|
61
|
+
|
|
62
|
+
uri = URI("https://atlas.hashicorp.com:443/api/v1/box/#{boxname}")
|
|
63
|
+
request = Net::HTTP.new(uri.host, uri.port)
|
|
64
|
+
request.use_ssl = true
|
|
65
|
+
response = request.get(uri)
|
|
66
|
+
|
|
67
|
+
url = 'URL goes here'
|
|
68
|
+
|
|
69
|
+
if response.code == "404"
|
|
70
|
+
comment_out = true
|
|
71
|
+
else
|
|
72
|
+
comment_out = false
|
|
73
|
+
box_info = MultiJson.load(response.body)
|
|
74
|
+
box_info['current_version']['providers'].each do |provider|
|
|
75
|
+
if provider['name'] == 'virtualbox'
|
|
76
|
+
url = provider['original_url']
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
# Use an ERB template
|
|
82
|
+
template_dir = File.expand_path('../../templates', File.dirname(__FILE__))
|
|
83
|
+
fixtures_template = File.read(File.expand_path('./nodeset.yaml.erb', template_dir))
|
|
84
|
+
puts ERB.new(fixtures_template, nil, '-').result(binding)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
desc 'Create cache for vendored modules'
|
|
89
|
+
task :generate_vendor_cache do
|
|
90
|
+
require 'puppetlabs-onceover/controlrepo'
|
|
91
|
+
require 'puppetlabs-onceover/vendored_modules'
|
|
92
|
+
|
|
93
|
+
repo = PuppetlabsOnceover::Controlrepo.new(debug: true)
|
|
94
|
+
PuppetlabsOnceover::VendoredModules.new({ repo: repo, cachedir: File.join(repo.spec_dir, 'vendored_modules'), force_update: true })
|
|
95
|
+
end
|