puppet 6.13.0-universal-darwin → 6.18.0-universal-darwin
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of puppet might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/CODEOWNERS +2 -7
- data/CONTRIBUTING.md +7 -13
- data/Gemfile +4 -2
- data/Gemfile.lock +36 -32
- data/README.md +17 -24
- data/ext/windows/service/daemon.rb +3 -3
- data/lib/puppet.rb +33 -9
- data/lib/puppet/agent.rb +20 -14
- data/lib/puppet/application/agent.rb +26 -17
- data/lib/puppet/application/apply.rb +18 -20
- data/lib/puppet/application/describe.rb +7 -5
- data/lib/puppet/application/device.rb +2 -2
- data/lib/puppet/application/filebucket.rb +19 -15
- data/lib/puppet/application/lookup.rb +16 -4
- data/lib/puppet/application/plugin.rb +1 -0
- data/lib/puppet/application/ssl.rb +4 -4
- data/lib/puppet/configurer.rb +58 -57
- data/lib/puppet/configurer/downloader.rb +31 -10
- data/lib/puppet/configurer/plugin_handler.rb +10 -1
- data/lib/puppet/confine.rb +2 -2
- data/lib/puppet/confine/any.rb +1 -1
- data/lib/puppet/context/trusted_information.rb +14 -8
- data/lib/puppet/daemon.rb +13 -27
- data/lib/puppet/defaults.rb +92 -12
- data/lib/puppet/environments.rb +4 -5
- data/lib/puppet/face/facts.rb +1 -1
- data/lib/puppet/face/help.rb +29 -3
- data/lib/puppet/face/module/search.rb +5 -0
- data/lib/puppet/face/plugin.rb +2 -2
- data/lib/puppet/feature/base.rb +1 -1
- data/lib/puppet/file_serving/http_metadata.rb +14 -2
- data/lib/puppet/file_serving/metadata.rb +4 -1
- data/lib/puppet/file_serving/mount/locales.rb +1 -2
- data/lib/puppet/file_serving/mount/pluginfacts.rb +1 -2
- data/lib/puppet/file_serving/mount/plugins.rb +1 -2
- data/lib/puppet/file_serving/terminus_selector.rb +7 -8
- data/lib/puppet/file_system/file_impl.rb +17 -13
- data/lib/puppet/file_system/uniquefile.rb +12 -16
- data/lib/puppet/forge.rb +1 -1
- data/lib/puppet/forge/cache.rb +1 -1
- data/lib/puppet/forge/repository.rb +4 -7
- data/lib/puppet/functions/call.rb +1 -1
- data/lib/puppet/functions/eyaml_lookup_key.rb +13 -8
- data/lib/puppet/functions/filter.rb +1 -0
- data/lib/puppet/functions/lstrip.rb +4 -4
- data/lib/puppet/functions/reduce.rb +2 -4
- data/lib/puppet/functions/reverse_each.rb +1 -1
- data/lib/puppet/functions/rstrip.rb +4 -4
- data/lib/puppet/functions/step.rb +1 -1
- data/lib/puppet/functions/strip.rb +4 -4
- data/lib/puppet/gettext/config.rb +5 -5
- data/lib/puppet/gettext/module_translations.rb +4 -4
- data/lib/puppet/http.rb +3 -0
- data/lib/puppet/http/client.rb +263 -73
- data/lib/puppet/http/external_client.rb +90 -0
- data/lib/puppet/http/redirector.rb +43 -7
- data/lib/puppet/http/resolver.rb +46 -3
- data/lib/puppet/http/resolver/server_list.rb +76 -16
- data/lib/puppet/http/resolver/settings.rb +23 -3
- data/lib/puppet/http/resolver/srv.rb +29 -3
- data/lib/puppet/http/response.rb +87 -1
- data/lib/puppet/http/retry_after_handler.rb +39 -0
- data/lib/puppet/http/service.rb +97 -12
- data/lib/puppet/http/service/ca.rb +76 -14
- data/lib/puppet/http/service/compiler.rb +249 -16
- data/lib/puppet/http/service/file_server.rb +141 -20
- data/lib/puppet/http/service/report.rb +47 -17
- data/lib/puppet/http/session.rb +96 -7
- data/lib/puppet/indirector.rb +1 -1
- data/lib/puppet/indirector/catalog/rest.rb +34 -0
- data/lib/puppet/indirector/exec.rb +1 -1
- data/lib/puppet/indirector/facts/facter.rb +3 -3
- data/lib/puppet/indirector/facts/rest.rb +42 -0
- data/lib/puppet/indirector/file_bucket_file/rest.rb +48 -0
- data/lib/puppet/indirector/file_content/http.rb +5 -0
- data/lib/puppet/indirector/file_content/rest.rb +30 -0
- data/lib/puppet/indirector/file_metadata/http.rb +28 -8
- data/lib/puppet/indirector/file_metadata/rest.rb +52 -0
- data/lib/puppet/indirector/hiera.rb +4 -0
- data/lib/puppet/indirector/indirection.rb +1 -1
- data/lib/puppet/indirector/node/rest.rb +24 -0
- data/lib/puppet/indirector/report/processor.rb +2 -2
- data/lib/puppet/indirector/report/rest.rb +19 -0
- data/lib/puppet/indirector/report/yaml.rb +23 -0
- data/lib/puppet/indirector/request.rb +1 -1
- data/lib/puppet/indirector/rest.rb +12 -0
- data/lib/puppet/indirector/status/rest.rb +18 -0
- data/lib/puppet/loaders.rb +6 -0
- data/lib/puppet/metatype/manager.rb +80 -80
- data/lib/puppet/module.rb +1 -2
- data/lib/puppet/network/format_support.rb +2 -2
- data/lib/puppet/network/http/api/indirected_routes.rb +1 -1
- data/lib/puppet/network/http/api/master/v3/environment.rb +3 -0
- data/lib/puppet/network/http/base_pool.rb +7 -2
- data/lib/puppet/network/http/compression.rb +7 -0
- data/lib/puppet/network/http/connection.rb +2 -0
- data/lib/puppet/network/http/connection_adapter.rb +184 -0
- data/lib/puppet/network/http/nocache_pool.rb +1 -0
- data/lib/puppet/network/http/pool.rb +8 -5
- data/lib/puppet/network/http/route.rb +2 -2
- data/lib/puppet/network/http_pool.rb +2 -1
- data/lib/puppet/node/environment.rb +22 -5
- data/lib/puppet/pal/catalog_compiler.rb +5 -0
- data/lib/puppet/pal/pal_impl.rb +30 -31
- data/lib/puppet/parameter.rb +1 -1
- data/lib/puppet/parser/ast/leaf.rb +5 -5
- data/lib/puppet/parser/ast/pops_bridge.rb +0 -4
- data/lib/puppet/parser/compiler.rb +43 -33
- data/lib/puppet/parser/compiler/catalog_validator/env_relationship_validator.rb +2 -0
- data/lib/puppet/parser/compiler/catalog_validator/site_validator.rb +2 -0
- data/lib/puppet/parser/environment_compiler.rb +4 -1
- data/lib/puppet/parser/functions.rb +18 -9
- data/lib/puppet/parser/functions/create_resources.rb +11 -7
- data/lib/puppet/parser/functions/filter.rb +1 -0
- data/lib/puppet/parser/resource.rb +3 -2
- data/lib/puppet/parser/resource/param.rb +6 -0
- data/lib/puppet/parser/type_loader.rb +2 -2
- data/lib/puppet/pops/adaptable.rb +7 -13
- data/lib/puppet/pops/adapters.rb +8 -4
- data/lib/puppet/pops/evaluator/evaluator_impl.rb +5 -5
- data/lib/puppet/pops/issues.rb +5 -0
- data/lib/puppet/pops/loader/runtime3_type_loader.rb +4 -2
- data/lib/puppet/pops/loaders.rb +24 -15
- data/lib/puppet/pops/lookup/context.rb +1 -1
- data/lib/puppet/pops/lookup/hiera_config.rb +14 -1
- data/lib/puppet/pops/resource/resource_type_impl.rb +2 -0
- data/lib/puppet/pops/types/iterable.rb +34 -8
- data/lib/puppet/pops/validation/checker4_0.rb +29 -15
- data/lib/puppet/pops/validation/validator_factory_4_0.rb +1 -0
- data/lib/puppet/provider/file/windows.rb +1 -1
- data/lib/puppet/provider/group/groupadd.rb +9 -4
- data/lib/puppet/provider/group/windows_adsi.rb +3 -3
- data/lib/puppet/provider/package/aix.rb +17 -2
- data/lib/puppet/provider/package/apt.rb +98 -1
- data/lib/puppet/provider/package/aptitude.rb +1 -1
- data/lib/puppet/provider/package/dnfmodule.rb +61 -14
- data/lib/puppet/provider/package/gem.rb +45 -9
- data/lib/puppet/provider/package/pacman.rb +2 -5
- data/lib/puppet/provider/package/pip.rb +143 -48
- data/lib/puppet/provider/package/pip3.rb +0 -2
- data/lib/puppet/provider/package/pkgdmg.rb +1 -1
- data/lib/puppet/provider/package/pkgng.rb +16 -4
- data/lib/puppet/provider/package/portage.rb +2 -2
- data/lib/puppet/provider/package/puppet_gem.rb +11 -2
- data/lib/puppet/provider/package/rpm.rb +6 -213
- data/lib/puppet/provider/package/yum.rb +100 -20
- data/lib/puppet/provider/package/zypper.rb +62 -1
- data/lib/puppet/provider/service/systemd.rb +22 -4
- data/lib/puppet/provider/service/windows.rb +23 -7
- data/lib/puppet/provider/user/aix.rb +1 -1
- data/lib/puppet/provider/user/user_role_add.rb +1 -1
- data/lib/puppet/provider/user/useradd.rb +16 -5
- data/lib/puppet/provider/user/windows_adsi.rb +18 -1
- data/lib/puppet/reports/http.rb +15 -9
- data/lib/puppet/resource.rb +2 -1
- data/lib/puppet/resource/type.rb +8 -0
- data/lib/puppet/resource/type_collection.rb +20 -16
- data/lib/puppet/runtime.rb +31 -1
- data/lib/puppet/settings.rb +3 -1
- data/lib/puppet/settings/http_extra_headers_setting.rb +25 -0
- data/lib/puppet/ssl.rb +1 -0
- data/lib/puppet/ssl/host.rb +4 -4
- data/lib/puppet/ssl/oids.rb +1 -0
- data/lib/puppet/ssl/ssl_context.rb +2 -2
- data/lib/puppet/ssl/ssl_provider.rb +20 -1
- data/lib/puppet/ssl/state_machine.rb +81 -35
- data/lib/puppet/ssl/validator/default_validator.rb +1 -1
- data/lib/puppet/ssl/verifier_adapter.rb +9 -1
- data/lib/puppet/test/test_helper.rb +21 -14
- data/lib/puppet/transaction.rb +2 -2
- data/lib/puppet/transaction/persistence.rb +1 -1
- data/lib/puppet/transaction/report.rb +3 -3
- data/lib/puppet/trusted_external.rb +29 -1
- data/lib/puppet/type.rb +21 -8
- data/lib/puppet/type/file.rb +51 -13
- data/lib/puppet/type/file/checksum.rb +4 -4
- data/lib/puppet/type/file/source.rb +75 -64
- data/lib/puppet/type/notify.rb +2 -2
- data/lib/puppet/type/package.rb +41 -3
- data/lib/puppet/type/service.rb +59 -8
- data/lib/puppet/type/user.rb +19 -29
- data/lib/puppet/util.rb +41 -3
- data/lib/puppet/util/at_fork.rb +1 -1
- data/lib/puppet/util/autoload.rb +13 -25
- data/lib/puppet/util/character_encoding.rb +9 -5
- data/lib/puppet/util/checksums.rb +19 -4
- data/lib/puppet/util/execution.rb +2 -2
- data/lib/puppet/util/fileparsing.rb +2 -2
- data/lib/puppet/util/instance_loader.rb +14 -10
- data/lib/puppet/util/log/destinations.rb +1 -10
- data/lib/puppet/util/package/version/debian.rb +175 -0
- data/lib/puppet/util/package/version/gem.rb +15 -0
- data/lib/puppet/util/package/version/pip.rb +167 -0
- data/lib/puppet/util/package/version/range.rb +53 -0
- data/lib/puppet/util/package/version/range/eq.rb +14 -0
- data/lib/puppet/util/package/version/range/gt.rb +14 -0
- data/lib/puppet/util/package/version/range/gt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/lt.rb +14 -0
- data/lib/puppet/util/package/version/range/lt_eq.rb +14 -0
- data/lib/puppet/util/package/version/range/min_max.rb +21 -0
- data/lib/puppet/util/package/version/range/simple.rb +11 -0
- data/lib/puppet/util/package/version/rpm.rb +73 -0
- data/lib/puppet/util/pidlock.rb +13 -7
- data/lib/puppet/util/platform.rb +5 -0
- data/lib/puppet/util/provider_features.rb +1 -1
- data/lib/puppet/util/reference.rb +1 -1
- data/lib/puppet/util/rpm_compare.rb +193 -0
- data/lib/puppet/util/windows.rb +1 -0
- data/lib/puppet/util/windows/adsi.rb +2 -2
- data/lib/puppet/util/windows/api_types.rb +60 -33
- data/lib/puppet/util/windows/eventlog.rb +1 -6
- data/lib/puppet/util/windows/monkey_patches/dir.rb +40 -0
- data/lib/puppet/util/windows/principal.rb +8 -6
- data/lib/puppet/util/windows/process.rb +15 -14
- data/lib/puppet/util/windows/registry.rb +11 -11
- data/lib/puppet/util/windows/security.rb +5 -4
- data/lib/puppet/util/windows/service.rb +43 -26
- data/lib/puppet/util/windows/sid.rb +3 -3
- data/lib/puppet/util/windows/user.rb +242 -8
- data/lib/puppet/version.rb +1 -1
- data/locales/puppet.pot +641 -511
- data/man/man5/puppet.conf.5 +75 -10
- data/man/man8/puppet-agent.8 +7 -7
- data/man/man8/puppet-apply.8 +1 -1
- data/man/man8/puppet-catalog.8 +1 -1
- data/man/man8/puppet-config.8 +1 -1
- data/man/man8/puppet-describe.8 +1 -1
- data/man/man8/puppet-device.8 +2 -2
- data/man/man8/puppet-doc.8 +1 -1
- data/man/man8/puppet-epp.8 +1 -1
- data/man/man8/puppet-facts.8 +1 -1
- data/man/man8/puppet-filebucket.8 +17 -2
- data/man/man8/puppet-generate.8 +1 -1
- data/man/man8/puppet-help.8 +6 -3
- data/man/man8/puppet-key.8 +1 -1
- data/man/man8/puppet-lookup.8 +2 -2
- data/man/man8/puppet-man.8 +1 -1
- data/man/man8/puppet-module.8 +4 -1
- data/man/man8/puppet-node.8 +1 -1
- data/man/man8/puppet-parser.8 +1 -1
- data/man/man8/puppet-plugin.8 +1 -1
- data/man/man8/puppet-report.8 +1 -1
- data/man/man8/puppet-resource.8 +1 -1
- data/man/man8/puppet-script.8 +1 -1
- data/man/man8/puppet-ssl.8 +2 -2
- data/man/man8/puppet-status.8 +1 -1
- data/man/man8/puppet.8 +2 -2
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/provider/applytest/applytest.rb +2 -0
- data/spec/fixtures/integration/application/apply/environments/spec/modules/amod/lib/puppet/type/applytest.rb +25 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-127.0.0.1.pem +48 -0
- data/spec/fixtures/ssl/unknown-ca-key.pem +67 -0
- data/spec/fixtures/ssl/unknown-ca.pem +59 -0
- data/spec/fixtures/unit/forge/bacula-releases.json +128 -0
- data/spec/fixtures/unit/forge/bacula.tar.gz +0 -0
- data/spec/fixtures/unit/provider/package/dnfmodule/{dnf-module-list-installed.txt → dnf-module-list.txt} +8 -0
- data/spec/fixtures/unit/provider/package/pkgng/pkg.version +2 -0
- data/spec/fixtures/unit/provider/package/yum/yum-check-update-subscription-manager.txt +9 -0
- data/spec/fixtures/unit/provider/package/zypper/zypper-search-uninstalled.out +13 -0
- data/spec/fixtures/unit/provider/service/systemd/list_unit_files_services +9 -0
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_not_update_if_content_on_disk_is_up-to-date.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_md5/should_update_if_content_differs_on_disk.yml +1 -69
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_mtime_is_older_on_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_no_header_specified.yml +1 -65
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_fetch_if_not_on_the_local_disk.yml +1 -67
- data/spec/fixtures/vcr/cassettes/Puppet_Type_File/when_sourcing/from_http/using_mtime/should_not_update_if_mtime_is_newer_on_disk.yml +1 -67
- data/spec/integration/application/agent_spec.rb +475 -0
- data/spec/integration/application/apply_spec.rb +279 -150
- data/spec/integration/application/config_spec.rb +74 -0
- data/spec/integration/application/doc_spec.rb +16 -6
- data/spec/integration/application/filebucket_spec.rb +239 -0
- data/spec/integration/application/help_spec.rb +42 -0
- data/spec/integration/application/lookup_spec.rb +13 -0
- data/spec/integration/application/module_spec.rb +68 -0
- data/spec/integration/application/plugin_spec.rb +123 -0
- data/spec/integration/data_binding_spec.rb +82 -0
- data/spec/integration/defaults_spec.rb +1 -2
- data/spec/integration/directory_environments_spec.rb +17 -17
- data/spec/integration/http/client_spec.rb +47 -37
- data/spec/integration/indirector/facts/facter_spec.rb +8 -6
- data/spec/integration/indirector/report/yaml.rb +83 -0
- data/spec/integration/network/http_pool_spec.rb +93 -20
- data/spec/integration/node/environment_spec.rb +15 -0
- data/spec/integration/parser/compiler_spec.rb +11 -0
- data/spec/integration/type/file_spec.rb +1 -1
- data/spec/integration/util/execution_spec.rb +22 -0
- data/spec/integration/util/windows/adsi_spec.rb +6 -1
- data/spec/integration/util/windows/monkey_patches/dir_spec.rb +11 -0
- data/spec/integration/util/windows/process_spec.rb +26 -32
- data/spec/integration/util/windows/registry_spec.rb +7 -7
- data/spec/integration/util/windows/user_spec.rb +47 -5
- data/spec/integration/util_spec.rb +7 -33
- data/spec/lib/puppet/test_ca.rb +2 -2
- data/spec/lib/puppet_spec/https.rb +16 -7
- data/spec/lib/puppet_spec/matchers.rb +0 -80
- data/spec/lib/puppet_spec/puppetserver.rb +127 -0
- data/spec/shared_contexts/https.rb +29 -0
- data/spec/unit/agent_spec.rb +80 -26
- data/spec/unit/application/agent_spec.rb +12 -9
- data/spec/unit/application/describe_spec.rb +88 -50
- data/spec/unit/application/device_spec.rb +2 -2
- data/spec/unit/application/face_base_spec.rb +6 -4
- data/spec/unit/application/facts_spec.rb +39 -10
- data/spec/unit/application/filebucket_spec.rb +22 -2
- data/spec/unit/application/man_spec.rb +52 -0
- data/spec/unit/application/resource_spec.rb +3 -1
- data/spec/unit/application/ssl_spec.rb +15 -2
- data/spec/unit/configurer/downloader_spec.rb +10 -0
- data/spec/unit/configurer/fact_handler_spec.rb +4 -4
- data/spec/unit/configurer/plugin_handler_spec.rb +36 -19
- data/spec/unit/configurer_spec.rb +64 -46
- data/spec/unit/confine_spec.rb +2 -1
- data/spec/unit/context/trusted_information_spec.rb +25 -2
- data/spec/unit/daemon_spec.rb +5 -64
- data/spec/unit/defaults_spec.rb +24 -1
- data/spec/unit/environments_spec.rb +8 -0
- data/spec/unit/face/config_spec.rb +3 -1
- data/spec/unit/face/module/search_spec.rb +17 -0
- data/spec/unit/face/plugin_spec.rb +12 -10
- data/spec/unit/file_serving/http_metadata_spec.rb +37 -14
- data/spec/unit/file_serving/mount/locales_spec.rb +2 -2
- data/spec/unit/file_serving/mount/pluginfacts_spec.rb +2 -2
- data/spec/unit/file_serving/mount/plugins_spec.rb +2 -2
- data/spec/unit/file_serving/terminus_selector_spec.rb +45 -26
- data/spec/unit/file_system/uniquefile_spec.rb +29 -0
- data/spec/unit/file_system_spec.rb +10 -0
- data/spec/unit/functions/lookup_spec.rb +13 -0
- data/spec/unit/http/client_spec.rb +321 -36
- data/spec/unit/http/external_client_spec.rb +201 -0
- data/spec/unit/http/resolver_spec.rb +34 -3
- data/spec/unit/http/response_spec.rb +75 -0
- data/spec/unit/http/service/ca_spec.rb +53 -12
- data/spec/unit/http/service/compiler_spec.rb +332 -28
- data/spec/unit/http/service/file_server_spec.rb +100 -12
- data/spec/unit/http/service/report_spec.rb +19 -9
- data/spec/unit/http/service_spec.rb +94 -6
- data/spec/unit/http/session_spec.rb +159 -8
- data/spec/unit/indirector/catalog/compiler_spec.rb +1 -0
- data/spec/unit/indirector/catalog/rest_spec.rb +59 -2
- data/spec/unit/indirector/facts/rest_spec.rb +79 -24
- data/spec/unit/indirector/file_bucket_file/rest_spec.rb +82 -2
- data/spec/unit/indirector/file_content/rest_spec.rb +53 -2
- data/spec/unit/indirector/file_metadata/http_spec.rb +194 -0
- data/spec/unit/indirector/file_metadata/rest_spec.rb +110 -2
- data/spec/unit/indirector/node/rest_spec.rb +57 -2
- data/spec/unit/indirector/report/rest_spec.rb +58 -51
- data/spec/unit/indirector/request_spec.rb +1 -1
- data/spec/unit/indirector/resource/ral_spec.rb +7 -8
- data/spec/unit/indirector/rest_spec.rb +13 -0
- data/spec/unit/indirector/status/rest_spec.rb +43 -2
- data/spec/unit/interface_spec.rb +3 -3
- data/spec/unit/module_tool/tar/mini_spec.rb +20 -0
- data/spec/unit/network/format_support_spec.rb +3 -2
- data/spec/unit/network/http/api/indirected_routes_spec.rb +2 -1
- data/spec/unit/network/http/connection_spec.rb +552 -190
- data/spec/unit/network/http/nocache_pool_spec.rb +22 -0
- data/spec/unit/network/http/pool_spec.rb +59 -13
- data/spec/unit/network/http_pool_spec.rb +63 -57
- data/spec/unit/network/http_spec.rb +1 -1
- data/spec/unit/node/environment_spec.rb +33 -0
- data/spec/unit/parser/ast/block_expression_spec.rb +1 -1
- data/spec/unit/parser/environment_compiler_spec.rb +7 -0
- data/spec/unit/parser/scope_spec.rb +1 -1
- data/spec/unit/pops/evaluator/evaluating_parser_spec.rb +15 -1
- data/spec/unit/pops/loaders/loaders_spec.rb +71 -1
- data/spec/unit/pops/lookup/lookup_spec.rb +25 -0
- data/spec/unit/pops/types/type_calculator_spec.rb +1 -11
- data/spec/unit/provider/group/groupadd_spec.rb +22 -8
- data/spec/unit/provider/group/windows_adsi_spec.rb +43 -10
- data/spec/unit/provider/package/aix_spec.rb +29 -0
- data/spec/unit/provider/package/apt_spec.rb +107 -0
- data/spec/unit/provider/package/aptitude_spec.rb +1 -0
- data/spec/unit/provider/package/dnfmodule_spec.rb +54 -15
- data/spec/unit/provider/package/gem_spec.rb +40 -0
- data/spec/unit/provider/package/pacman_spec.rb +6 -21
- data/spec/unit/provider/package/pip_spec.rb +68 -19
- data/spec/unit/provider/package/pkgdmg_spec.rb +1 -1
- data/spec/unit/provider/package/pkgng_spec.rb +38 -0
- data/spec/unit/provider/package/portage_spec.rb +5 -0
- data/spec/unit/provider/package/puppet_gem_spec.rb +12 -1
- data/spec/unit/provider/package/rpm_spec.rb +0 -212
- data/spec/unit/provider/package/yum_spec.rb +243 -1
- data/spec/unit/provider/package/zypper_spec.rb +98 -0
- data/spec/unit/provider/service/init_spec.rb +42 -0
- data/spec/unit/provider/service/openbsd_spec.rb +9 -0
- data/spec/unit/provider/service/openwrt_spec.rb +1 -0
- data/spec/unit/provider/service/redhat_spec.rb +9 -0
- data/spec/unit/provider/service/systemd_spec.rb +93 -18
- data/spec/unit/provider/service/windows_spec.rb +50 -14
- data/spec/unit/provider/user/openbsd_spec.rb +1 -0
- data/spec/unit/provider/user/useradd_spec.rb +30 -16
- data/spec/unit/provider/user/windows_adsi_spec.rb +85 -3
- data/spec/unit/puppet_pal_2pec.rb +11 -0
- data/spec/unit/puppet_pal_catalog_spec.rb +43 -0
- data/spec/unit/puppet_spec.rb +33 -0
- data/spec/unit/reports/http_spec.rb +70 -52
- data/spec/unit/reports/store_spec.rb +17 -13
- data/spec/unit/resource_spec.rb +3 -3
- data/spec/unit/settings/autosign_setting_spec.rb +1 -1
- data/spec/unit/settings/http_extra_headers_spec.rb +64 -0
- data/spec/unit/ssl/host_spec.rb +4 -2
- data/spec/unit/ssl/oids_spec.rb +1 -0
- data/spec/unit/ssl/ssl_provider_spec.rb +69 -43
- data/spec/unit/ssl/state_machine_spec.rb +99 -13
- data/spec/unit/test/test_helper_spec.rb +17 -0
- data/spec/unit/transaction/persistence_spec.rb +15 -0
- data/spec/unit/transaction/report_spec.rb +5 -1
- data/spec/unit/transaction_spec.rb +0 -2
- data/spec/unit/type/file/ensure_spec.rb +1 -2
- data/spec/unit/type/file/source_spec.rb +89 -38
- data/spec/unit/type/file_spec.rb +122 -96
- data/spec/unit/type/service_spec.rb +218 -8
- data/spec/unit/type/user_spec.rb +32 -3
- data/spec/unit/type_spec.rb +50 -0
- data/spec/unit/util/at_fork_spec.rb +3 -2
- data/spec/unit/util/autoload_spec.rb +2 -1
- data/spec/unit/util/character_encoding_spec.rb +4 -4
- data/spec/unit/util/checksums_spec.rb +16 -0
- data/spec/unit/util/command_line_spec.rb +11 -6
- data/spec/unit/util/log/destinations_spec.rb +1 -29
- data/spec/unit/util/package/version/debian_spec.rb +83 -0
- data/spec/unit/util/package/version/pip_spec.rb +464 -0
- data/spec/unit/util/package/version/range_spec.rb +175 -0
- data/spec/unit/util/package/version/rpm_spec.rb +121 -0
- data/spec/unit/util/pidlock_spec.rb +102 -54
- data/spec/unit/util/rpm_compare_spec.rb +196 -0
- data/spec/unit/util/windows/adsi_spec.rb +4 -4
- data/spec/unit/util/windows/api_types_spec.rb +104 -40
- data/spec/unit/util/windows/service_spec.rb +4 -4
- data/spec/unit/util/windows/sid_spec.rb +2 -2
- data/spec/unit/util_spec.rb +3 -3
- data/spec/unit/x509/cert_provider_spec.rb +1 -1
- data/tasks/generate_cert_fixtures.rake +15 -1
- data/tasks/manpages.rake +5 -35
- metadata +84 -52
- data/COMMITTERS.md +0 -244
- data/spec/integration/faces/config_spec.rb +0 -91
- data/spec/integration/faces/documentation_spec.rb +0 -57
- data/spec/integration/faces/plugin_spec.rb +0 -61
- data/spec/integration/file_bucket/file_spec.rb +0 -50
- data/spec/integration/file_serving/content_spec.rb +0 -7
- data/spec/integration/file_serving/fileset_spec.rb +0 -12
- data/spec/integration/file_serving/metadata_spec.rb +0 -8
- data/spec/integration/file_serving/terminus_helper_spec.rb +0 -20
- data/spec/integration/file_system/uniquefile_spec.rb +0 -26
- data/spec/integration/module_tool/forge_spec.rb +0 -64
- data/spec/integration/module_tool/tar/mini_spec.rb +0 -28
- data/spec/integration/provider/service/init_spec.rb +0 -48
- data/spec/integration/provider/service/systemd_spec.rb +0 -25
- data/spec/integration/provider/service/windows_spec.rb +0 -50
- data/spec/integration/reference/providers_spec.rb +0 -21
- data/spec/integration/reports_spec.rb +0 -13
- data/spec/integration/ssl/certificate_request_spec.rb +0 -44
- data/spec/integration/ssl/host_spec.rb +0 -72
- data/spec/integration/ssl/key_spec.rb +0 -99
- data/spec/integration/test/test_helper_spec.rb +0 -31
- data/spec/shared_behaviours/file_serving_model.rb +0 -51
- data/spec/unit/face/man_spec.rb +0 -25
- data/spec/unit/man_spec.rb +0 -31
@@ -39,6 +39,7 @@ class Puppet::Application::Agent < Puppet::Application
|
|
39
39
|
:graph => true,
|
40
40
|
:fingerprint => false,
|
41
41
|
:sourceaddress => nil,
|
42
|
+
:start_time => Time.now,
|
42
43
|
}.each do |opt,val|
|
43
44
|
options[opt] = val
|
44
45
|
end
|
@@ -90,7 +91,7 @@ puppet-agent(8) -- #{summary}
|
|
90
91
|
|
91
92
|
SYNOPSIS
|
92
93
|
--------
|
93
|
-
Retrieves the client configuration from the
|
94
|
+
Retrieves the client configuration from the Puppet master and applies it to
|
94
95
|
the local host.
|
95
96
|
|
96
97
|
This service may be run as a daemon, run periodically using cron (or something
|
@@ -164,13 +165,15 @@ when signing certificates).
|
|
164
165
|
only resources not tagged with the specified tags will be applied.
|
165
166
|
Values must be comma-separated.
|
166
167
|
|
168
|
+
|
167
169
|
OPTIONS
|
168
170
|
-------
|
169
171
|
|
170
172
|
Note that any Puppet setting that's valid in the configuration file is also a
|
171
173
|
valid long argument. For example, 'server' is a valid setting, so you can
|
172
|
-
specify '--server <servername>' as an argument. Boolean settings
|
173
|
-
'--setting' and '--no-setting'
|
174
|
+
specify '--server <servername>' as an argument. Boolean settings accept a '--no-'
|
175
|
+
prefix to turn off a behavior, translating into '--setting' and '--no-setting'
|
176
|
+
pairs, such as `--daemonize` and `--no-daemonize`.
|
174
177
|
|
175
178
|
See the configuration file documentation at
|
176
179
|
https://puppet.com/docs/puppet/latest/configuration.html for the
|
@@ -237,15 +240,14 @@ generated by running puppet agent with '--genconfig'.
|
|
237
240
|
* --enable:
|
238
241
|
Enable working on the local system. This removes any lock file,
|
239
242
|
causing 'puppet agent' to start managing the local system again
|
240
|
-
|
241
|
-
not start for another half hour
|
243
|
+
However, it continues to use its normal scheduling, so it might
|
244
|
+
not start for another half hour.
|
242
245
|
|
243
246
|
'puppet agent' exits after executing this.
|
244
247
|
|
245
248
|
* --evaltrace:
|
246
249
|
Logs each resource as it is being evaluated. This allows you to interactively see exactly what is being done. (This is a Puppet setting, and can go in puppet.conf. Note the special 'no-' prefix for boolean settings on the command line.)
|
247
250
|
|
248
|
-
|
249
251
|
* --fingerprint:
|
250
252
|
Display the current certificate or certificate signing request
|
251
253
|
fingerprint and then exit. Use the '--digest' option to change the
|
@@ -256,7 +258,9 @@ generated by running puppet agent with '--genconfig'.
|
|
256
258
|
|
257
259
|
* --job-id:
|
258
260
|
Attach the specified job id to the catalog request and the report used for
|
259
|
-
this agent run. This option only works when '--onetime' is used.
|
261
|
+
this agent run. This option only works when '--onetime' is used. When using
|
262
|
+
Puppet Enterprise this flag should not be used as the orchestrator sets the
|
263
|
+
job-id for you and it must be unique.
|
260
264
|
|
261
265
|
* --logdest:
|
262
266
|
Where to send log messages. Choose between 'syslog' (the POSIX syslog
|
@@ -278,7 +282,7 @@ generated by running puppet agent with '--genconfig'.
|
|
278
282
|
|
279
283
|
* --noop:
|
280
284
|
Use 'noop' mode where the daemon runs in a no-op or dry-run mode. This
|
281
|
-
is useful for seeing what changes Puppet
|
285
|
+
is useful for seeing what changes Puppet would make without actually
|
282
286
|
executing the changes.
|
283
287
|
(This is a Puppet setting, and can go in puppet.conf. Note the special 'no-'
|
284
288
|
prefix for boolean settings on the command line.)
|
@@ -302,8 +306,6 @@ generated by running puppet agent with '--genconfig'.
|
|
302
306
|
* --trace
|
303
307
|
Prints stack traces on some errors. (This is a Puppet setting, and can go in puppet.conf. Note the special 'no-' prefix for boolean settings on the command line.)
|
304
308
|
|
305
|
-
|
306
|
-
|
307
309
|
* --verbose:
|
308
310
|
Turn on verbose reporting.
|
309
311
|
|
@@ -317,8 +319,7 @@ generated by running puppet agent with '--genconfig'.
|
|
317
319
|
it to sign a certificate request. This is useful for the initial setup
|
318
320
|
of a puppet client. You can turn off waiting for certificates by
|
319
321
|
specifying a time of 0.
|
320
|
-
(This is a Puppet setting, and can go in puppet.conf.
|
321
|
-
prefix for boolean settings on the command line.)
|
322
|
+
(This is a Puppet setting, and can go in puppet.conf.)
|
322
323
|
|
323
324
|
|
324
325
|
EXAMPLE
|
@@ -364,8 +365,17 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
364
365
|
daemon.set_signal_traps
|
365
366
|
|
366
367
|
log_config if Puppet[:daemonize]
|
367
|
-
|
368
|
-
|
368
|
+
|
369
|
+
# run ssl state machine, waiting if needed
|
370
|
+
ssl_context = wait_for_certificates
|
371
|
+
|
372
|
+
# Each application is responsible for pushing loaders onto the context.
|
373
|
+
# Use the current environment that has already been established, though
|
374
|
+
# it may change later during the configurer run.
|
375
|
+
env = Puppet.lookup(:current_environment)
|
376
|
+
Puppet.override(ssl_context: ssl_context,
|
377
|
+
current_environment: env,
|
378
|
+
loaders: Puppet::Pops::Loaders.new(env, true)) do
|
369
379
|
if Puppet[:onetime]
|
370
380
|
onetime(daemon)
|
371
381
|
else
|
@@ -407,7 +417,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
407
417
|
|
408
418
|
def onetime(daemon)
|
409
419
|
begin
|
410
|
-
exitstatus = daemon.agent.run(:job_id => options[:job_id])
|
420
|
+
exitstatus = daemon.agent.run({:job_id => options[:job_id], :start_time => options[:start_time]})
|
411
421
|
rescue => detail
|
412
422
|
Puppet.log_exception(detail)
|
413
423
|
end
|
@@ -490,9 +500,8 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
490
500
|
end
|
491
501
|
|
492
502
|
def daemonize_process_when(should_daemonize)
|
493
|
-
daemon = Puppet::Daemon.new(Puppet::Util::Pidlock.new(Puppet[:pidfile]))
|
503
|
+
daemon = Puppet::Daemon.new(@agent, Puppet::Util::Pidlock.new(Puppet[:pidfile]))
|
494
504
|
daemon.argv = @argv
|
495
|
-
daemon.agent = @agent
|
496
505
|
|
497
506
|
daemon.daemonize if should_daemonize
|
498
507
|
|
@@ -190,7 +190,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
190
190
|
text = Puppet::FileSystem.read(options[:catalog], :encoding => 'utf-8')
|
191
191
|
end
|
192
192
|
env = Puppet.lookup(:environments).get(Puppet[:environment])
|
193
|
-
Puppet.override(:current_environment => env, :loaders =>
|
193
|
+
Puppet.override(:current_environment => env, :loaders => create_loaders(env)) do
|
194
194
|
catalog = read_catalog(text)
|
195
195
|
apply_catalog(catalog)
|
196
196
|
end
|
@@ -204,7 +204,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
204
204
|
apply_environment = get_configured_environment(node, manifest)
|
205
205
|
|
206
206
|
# TRANSLATORS "puppet apply" is a program command and should not be translated
|
207
|
-
Puppet.override({:current_environment => apply_environment}, _("For puppet apply")) do
|
207
|
+
Puppet.override({:current_environment => apply_environment, :loaders => create_loaders(apply_environment)}, _("For puppet apply")) do
|
208
208
|
configure_node_facts(node, facts)
|
209
209
|
|
210
210
|
# Allow users to load the classes that puppet agent creates.
|
@@ -235,30 +235,23 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
235
235
|
exit(1)
|
236
236
|
end
|
237
237
|
|
238
|
-
#
|
239
|
-
|
240
|
-
# required steps as it is expensive to set up loaders twice (once for
|
241
|
-
# resolution and once for the apply).
|
242
|
-
#
|
243
|
-
exit_status = Puppet.override(:loaders => Puppet::Pops::Loaders.new(apply_environment)) do
|
238
|
+
# Resolve all deferred values and replace them / mutate the catalog
|
239
|
+
Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(node.facts, catalog)
|
244
240
|
|
245
|
-
|
246
|
-
|
241
|
+
# Translate it to a RAL catalog
|
242
|
+
catalog = catalog.to_ral
|
247
243
|
|
248
|
-
|
249
|
-
catalog = catalog.to_ral
|
244
|
+
catalog.finalize
|
250
245
|
|
251
|
-
|
246
|
+
catalog.retrieval_duration = Time.now - starttime
|
252
247
|
|
253
|
-
|
248
|
+
if options[:write_catalog_summary]
|
249
|
+
catalog.write_class_file
|
250
|
+
catalog.write_resource_file
|
251
|
+
end
|
254
252
|
|
255
|
-
|
256
|
-
catalog.write_class_file
|
257
|
-
catalog.write_resource_file
|
258
|
-
end
|
253
|
+
exit_status = apply_catalog(catalog)
|
259
254
|
|
260
|
-
apply_catalog(catalog)
|
261
|
-
end
|
262
255
|
if not exit_status
|
263
256
|
exit(1)
|
264
257
|
elsif options[:detailed_exitcodes] then
|
@@ -313,6 +306,11 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
313
306
|
|
314
307
|
private
|
315
308
|
|
309
|
+
def create_loaders(env)
|
310
|
+
# Ignore both 'cached_puppet_lib' and pcore resource type loaders
|
311
|
+
Puppet::Pops::Loaders.new(env, false, false)
|
312
|
+
end
|
313
|
+
|
316
314
|
def read_catalog(text)
|
317
315
|
facts = get_facts()
|
318
316
|
node = get_node()
|
@@ -67,13 +67,15 @@ class TypeDoc
|
|
67
67
|
@types.keys.sort_by(&:to_s).each do |name|
|
68
68
|
type = @types[name]
|
69
69
|
s = type.doc.gsub(/\s+/, " ")
|
70
|
-
|
71
|
-
if n.nil?
|
70
|
+
if s.empty?
|
72
71
|
s = ".. no documentation .."
|
73
|
-
elsif n > 45
|
74
|
-
s = s[0, 45] + " ..."
|
75
72
|
else
|
76
|
-
|
73
|
+
n = s.index(".") || s.length
|
74
|
+
if n > 45
|
75
|
+
s = s[0, 45] + " ..."
|
76
|
+
else
|
77
|
+
s = s[0, n]
|
78
|
+
end
|
77
79
|
end
|
78
80
|
printf "%-15s - %s\n", name, s
|
79
81
|
end
|
@@ -194,7 +194,7 @@ you can specify '--server <servername>' as an argument.
|
|
194
194
|
|
195
195
|
* --resource:
|
196
196
|
Displays a resource state as Puppet code, roughly equivalent to
|
197
|
-
`puppet resource`. Can be
|
197
|
+
`puppet resource`. Can be filtered by title. Requires --target be specified.
|
198
198
|
|
199
199
|
* --target:
|
200
200
|
Target a specific device/certificate in the device.conf. Doing so will perform a
|
@@ -259,7 +259,7 @@ Licensed under the Apache 2.0 License
|
|
259
259
|
end
|
260
260
|
end
|
261
261
|
devices.collect do |devicename,device|
|
262
|
-
pool = Puppet
|
262
|
+
pool = Puppet.runtime[:http].pool
|
263
263
|
Puppet.override(:http_pool => pool) do
|
264
264
|
# TODO when we drop support for ruby < 2.5 we can remove the extra block here
|
265
265
|
begin
|
@@ -69,6 +69,19 @@ running as a user with valid Puppet certificates. Alternatively, you can
|
|
69
69
|
use your local file bucket by specifying '--local', or by specifying
|
70
70
|
'--bucket' with a local path.
|
71
71
|
|
72
|
+
> **Note**: Enabling and using the backup option, and by extension the
|
73
|
+
filebucket resource, requires appropriate planning and management to ensure
|
74
|
+
that sufficient disk space is available for the file backups. Generally, you
|
75
|
+
can implement this using one of the following two options:
|
76
|
+
- Use a `find` command and `crontab` entry to retain only the last X days
|
77
|
+
of file backups. For example:
|
78
|
+
|
79
|
+
```shell
|
80
|
+
find /opt/puppetlabs/server/data/puppetserver/bucket -type f -mtime +45 -atime +45 -print0 | xargs -0 rm
|
81
|
+
```
|
82
|
+
|
83
|
+
- Restrict the directory to a maximum size after which the oldest items are removed.
|
84
|
+
|
72
85
|
|
73
86
|
OPTIONS
|
74
87
|
-------
|
@@ -108,7 +121,7 @@ configuration options can also be generated by running puppet with
|
|
108
121
|
by default.
|
109
122
|
|
110
123
|
* --server_list:
|
111
|
-
A list of comma
|
124
|
+
A list of comma separated servers; only the first entry is used for file storage.
|
112
125
|
This setting takes precidence over `server`.
|
113
126
|
|
114
127
|
* --server:
|
@@ -279,7 +292,7 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
279
292
|
Puppet::Log.level = :info
|
280
293
|
end
|
281
294
|
|
282
|
-
|
295
|
+
exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs?
|
283
296
|
|
284
297
|
require 'puppet/file_bucket/dipper'
|
285
298
|
begin
|
@@ -287,19 +300,10 @@ Copyright (c) 2011 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
287
300
|
path = options[:bucket] || Puppet[:clientbucketdir]
|
288
301
|
@client = Puppet::FileBucket::Dipper.new(:Path => path)
|
289
302
|
else
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
@client = Puppet::FileBucket::Dipper.new(
|
295
|
-
:Server => server[0],
|
296
|
-
:Port => server[1]
|
297
|
-
)
|
298
|
-
else
|
299
|
-
#TRANSLATORS 'server' is the name of a setting and should not be translated
|
300
|
-
Puppet.debug _("Selected server from the `server` setting: %{server}") % {server: Puppet[:server]}
|
301
|
-
@client = Puppet::FileBucket::Dipper.new(:Server => Puppet[:server])
|
302
|
-
end
|
303
|
+
session = Puppet.lookup(:http_session)
|
304
|
+
api = session.route_to(:puppet)
|
305
|
+
|
306
|
+
@client = Puppet::FileBucket::Dipper.new(Server: api.url.host, Port: api.url.port)
|
303
307
|
end
|
304
308
|
rescue => detail
|
305
309
|
Puppet.log_exception(detail)
|
@@ -90,8 +90,14 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
90
90
|
|
91
91
|
exit(Puppet.settings.print_configs ? 0 : 1) if Puppet.settings.print_configs?
|
92
92
|
|
93
|
-
|
94
|
-
|
93
|
+
if options[:node]
|
94
|
+
Puppet::Util.skip_external_facts do
|
95
|
+
Puppet.settings.use :main, :master, :ssl, :metrics
|
96
|
+
end
|
97
|
+
else
|
98
|
+
Puppet.settings.use :main, :master, :ssl, :metrics
|
99
|
+
end
|
100
|
+
|
95
101
|
setup_terminuses
|
96
102
|
end
|
97
103
|
|
@@ -102,7 +108,7 @@ class Puppet::Application::Lookup < Puppet::Application
|
|
102
108
|
def help
|
103
109
|
<<-HELP
|
104
110
|
|
105
|
-
puppet
|
111
|
+
puppet-lookup(8) -- #{summary}
|
106
112
|
========
|
107
113
|
|
108
114
|
SYNOPSIS
|
@@ -364,6 +370,12 @@ Copyright (c) 2015 Puppet Inc., LLC Licensed under the Apache 2.0 License
|
|
364
370
|
|
365
371
|
Puppet[:code] = 'undef' unless options[:compile]
|
366
372
|
compiler = Puppet::Parser::Compiler.new(node)
|
367
|
-
|
373
|
+
if options[:node]
|
374
|
+
Puppet::Util.skip_external_facts do
|
375
|
+
compiler.compile { |catalog| yield(compiler.topscope); catalog }
|
376
|
+
end
|
377
|
+
else
|
378
|
+
compiler.compile { |catalog| yield(compiler.topscope); catalog }
|
379
|
+
end
|
368
380
|
end
|
369
381
|
end
|
@@ -28,7 +28,7 @@ OPTIONS
|
|
28
28
|
-------
|
29
29
|
|
30
30
|
* --help:
|
31
|
-
Print this help
|
31
|
+
Print this help message.
|
32
32
|
|
33
33
|
* --verbose:
|
34
34
|
Print extra information.
|
@@ -90,7 +90,7 @@ HELP
|
|
90
90
|
@cert_provider = Puppet::X509::CertProvider.new
|
91
91
|
@ssl_provider = Puppet::SSL::SSLProvider.new
|
92
92
|
@machine = Puppet::SSL::StateMachine.new
|
93
|
-
@session = Puppet.runtime[
|
93
|
+
@session = Puppet.runtime[:http].create_session
|
94
94
|
end
|
95
95
|
|
96
96
|
def setup_logs
|
@@ -182,7 +182,7 @@ HELP
|
|
182
182
|
route = create_route(ssl_context)
|
183
183
|
Puppet.info _("Downloading certificate '%{name}' from %{url}") % { name: Puppet[:certname], url: route.url }
|
184
184
|
|
185
|
-
x509 = route.get_certificate(Puppet[:certname], ssl_context: ssl_context)
|
185
|
+
_, x509 = route.get_certificate(Puppet[:certname], ssl_context: ssl_context)
|
186
186
|
cert = OpenSSL::X509::Certificate.new(x509)
|
187
187
|
Puppet.notice _("Downloaded certificate '%{name}' with fingerprint %{fingerprint}") % { name: Puppet[:certname], fingerprint: fingerprint(cert) }
|
188
188
|
|
@@ -226,7 +226,7 @@ HELP
|
|
226
226
|
begin
|
227
227
|
ssl_context = @machine.ensure_ca_certificates
|
228
228
|
route = create_route(ssl_context)
|
229
|
-
cert = route.get_certificate(certname, ssl_context: ssl_context)
|
229
|
+
_, cert = route.get_certificate(certname, ssl_context: ssl_context)
|
230
230
|
rescue Puppet::HTTP::ResponseError => e
|
231
231
|
if e.response.code.to_i != 404
|
232
232
|
raise Puppet::Error.new(_("Failed to connect to the CA to determine if certificate %{certname} has been cleaned") % { certname: certname }, e)
|
data/lib/puppet/configurer.rb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
# The client for interacting with the puppetmaster config server.
|
2
2
|
require 'timeout'
|
3
|
-
require 'puppet/network/http_pool'
|
4
3
|
require 'puppet/util'
|
5
4
|
require 'securerandom'
|
6
5
|
#require 'puppet/parser/script_compiler'
|
@@ -64,7 +63,7 @@ class Puppet::Configurer
|
|
64
63
|
end
|
65
64
|
|
66
65
|
# Get the remote catalog, yo. Returns nil if no catalog can be found.
|
67
|
-
def retrieve_catalog(query_options)
|
66
|
+
def retrieve_catalog(facts, query_options)
|
68
67
|
query_options ||= {}
|
69
68
|
result = retrieve_catalog_from_cache(query_options) if Puppet[:use_cached_catalog]
|
70
69
|
if result
|
@@ -72,7 +71,7 @@ class Puppet::Configurer
|
|
72
71
|
|
73
72
|
Puppet.info _("Using cached catalog from environment '%{environment}'") % { environment: result.environment }
|
74
73
|
else
|
75
|
-
result = retrieve_new_catalog(query_options)
|
74
|
+
result = retrieve_new_catalog(facts, query_options)
|
76
75
|
|
77
76
|
if !result
|
78
77
|
if !Puppet[:usecacheonfailure]
|
@@ -99,12 +98,11 @@ class Puppet::Configurer
|
|
99
98
|
end
|
100
99
|
|
101
100
|
# Convert a plain resource catalog into our full host catalog.
|
102
|
-
def convert_catalog(result, duration, options = {})
|
101
|
+
def convert_catalog(result, duration, facts, options = {})
|
103
102
|
catalog = nil
|
104
103
|
|
105
104
|
catalog_conversion_time = thinmark do
|
106
105
|
# Will mutate the result and replace all Deferred values with resolved values
|
107
|
-
facts = options[:convert_with_facts]
|
108
106
|
if facts
|
109
107
|
Puppet::Pops::Evaluator::DeferredResolver.resolve_and_replace(facts, result)
|
110
108
|
end
|
@@ -133,6 +131,7 @@ class Puppet::Configurer
|
|
133
131
|
end
|
134
132
|
|
135
133
|
facts_hash = {}
|
134
|
+
facts = nil
|
136
135
|
if Puppet::Resource::Catalog.indirection.terminus_class == :rest
|
137
136
|
# This is a bit complicated. We need the serialized and escaped facts,
|
138
137
|
# and we need to know which format they're encoded in. Thus, we
|
@@ -141,15 +140,14 @@ class Puppet::Configurer
|
|
141
140
|
# facts_for_uploading may set Puppet[:node_name_value] as a side effect
|
142
141
|
facter_time = thinmark do
|
143
142
|
facts = find_facts
|
144
|
-
options[:convert_with_facts] = facts
|
145
143
|
facts_hash = encode_facts(facts) # encode for uploading # was: facts_for_uploading
|
146
144
|
end
|
147
145
|
options[:report].add_times(:fact_generation, facter_time) if options[:report]
|
148
146
|
end
|
149
|
-
facts_hash
|
147
|
+
[facts_hash, facts]
|
150
148
|
end
|
151
149
|
|
152
|
-
def prepare_and_retrieve_catalog(cached_catalog, options, query_options)
|
150
|
+
def prepare_and_retrieve_catalog(cached_catalog, facts, options, query_options)
|
153
151
|
# set report host name now that we have the fact
|
154
152
|
options[:report].host = Puppet[:node_name_value]
|
155
153
|
|
@@ -165,7 +163,7 @@ class Puppet::Configurer
|
|
165
163
|
catalog = cached_catalog || options[:catalog]
|
166
164
|
unless catalog
|
167
165
|
# retrieve_catalog returns resource catalog
|
168
|
-
catalog = retrieve_catalog(query_options)
|
166
|
+
catalog = retrieve_catalog(facts, query_options)
|
169
167
|
Puppet.err _("Could not retrieve catalog; skipping run") unless catalog
|
170
168
|
end
|
171
169
|
catalog
|
@@ -196,12 +194,12 @@ class Puppet::Configurer
|
|
196
194
|
# This just passes any options on to the catalog,
|
197
195
|
# which accepts :tags and :ignoreschedules.
|
198
196
|
def run(options = {})
|
199
|
-
pool = Puppet
|
197
|
+
pool = Puppet.runtime[:http].pool
|
200
198
|
# We create the report pre-populated with default settings for
|
201
199
|
# environment and transaction_uuid very early, this is to ensure
|
202
200
|
# they are sent regardless of any catalog compilation failures or
|
203
201
|
# exceptions.
|
204
|
-
options[:report] ||= Puppet::Transaction::Report.new(nil, @environment, @transaction_uuid, @job_id)
|
202
|
+
options[:report] ||= Puppet::Transaction::Report.new(nil, @environment, @transaction_uuid, @job_id, options[:start_time] || Time.now)
|
205
203
|
report = options[:report]
|
206
204
|
init_storage
|
207
205
|
|
@@ -210,13 +208,9 @@ class Puppet::Configurer
|
|
210
208
|
completed = nil
|
211
209
|
begin
|
212
210
|
Puppet.override(:http_pool => pool) do
|
213
|
-
|
214
211
|
# Skip failover logic if the server_list setting is empty
|
215
|
-
|
216
|
-
|
217
|
-
else
|
218
|
-
do_failover = true
|
219
|
-
end
|
212
|
+
do_failover = Puppet.settings[:server_list] && !Puppet.settings[:server_list].empty?
|
213
|
+
|
220
214
|
# When we are passed a catalog, that means we're in apply
|
221
215
|
# mode. We shouldn't try to do any failover in that case.
|
222
216
|
if options[:catalog].nil? && do_failover
|
@@ -224,8 +218,6 @@ class Puppet::Configurer
|
|
224
218
|
if server.nil?
|
225
219
|
raise Puppet::Error, _("Could not select a functional puppet master from server_list: '%{server_list}'") % { server_list: Puppet.settings.value(:server_list, Puppet[:environment].to_sym, true) }
|
226
220
|
else
|
227
|
-
#TRANSLATORS 'server_list' is the name of a setting and should not be translated
|
228
|
-
Puppet.debug _("Selected puppet server from the `server_list` setting: %{server}:%{port}") % { server: server, port: port }
|
229
221
|
report.master_used = "#{server}:#{port}"
|
230
222
|
end
|
231
223
|
Puppet.override(server: server, serverport: port) do
|
@@ -243,9 +235,13 @@ class Puppet::Configurer
|
|
243
235
|
end
|
244
236
|
|
245
237
|
def run_internal(options)
|
246
|
-
start = Time.now
|
247
238
|
report = options[:report]
|
248
239
|
|
240
|
+
if options[:start_time]
|
241
|
+
startup_time = Time.now - options[:start_time]
|
242
|
+
report.add_times(:startup_time, startup_time)
|
243
|
+
end
|
244
|
+
|
249
245
|
# If a cached catalog is explicitly requested, attempt to retrieve it. Skip the node request,
|
250
246
|
# don't pluginsync and switch to the catalog's environment if we successfully retrieve it.
|
251
247
|
if Puppet[:use_cached_catalog]
|
@@ -273,7 +269,7 @@ class Puppet::Configurer
|
|
273
269
|
|
274
270
|
begin
|
275
271
|
unless Puppet[:node_name_fact].empty?
|
276
|
-
query_options = get_facts(options)
|
272
|
+
query_options, facts = get_facts(options)
|
277
273
|
end
|
278
274
|
|
279
275
|
configured_environment = Puppet[:environment] if Puppet.settings.set_by_config?(:environment)
|
@@ -306,6 +302,16 @@ class Puppet::Configurer
|
|
306
302
|
@environment = node.environment.to_s
|
307
303
|
report.environment = @environment
|
308
304
|
query_options = nil
|
305
|
+
facts = nil
|
306
|
+
|
307
|
+
new_env = Puppet::Node::Environment.remote(@environment)
|
308
|
+
Puppet.push_context(
|
309
|
+
{
|
310
|
+
current_environment: new_env,
|
311
|
+
loaders: Puppet::Pops::Loaders.new(new_env, true)
|
312
|
+
},
|
313
|
+
"Local node environment #{@environment} for configurer transaction"
|
314
|
+
)
|
309
315
|
else
|
310
316
|
Puppet.info _("Using configured environment '%{env}'") % { env: @environment }
|
311
317
|
end
|
@@ -316,25 +322,24 @@ class Puppet::Configurer
|
|
316
322
|
end
|
317
323
|
end
|
318
324
|
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
326
|
-
|
325
|
+
# This is to maintain compatibility with anyone using this class
|
326
|
+
# aside from agent, apply, device.
|
327
|
+
unless Puppet.lookup(:loaders) { nil }
|
328
|
+
new_env = Puppet::Node::Environment.remote(@environment)
|
329
|
+
Puppet.push_context(
|
330
|
+
{
|
331
|
+
current_environment: new_env,
|
332
|
+
loaders: Puppet::Pops::Loaders.new(new_env, true)
|
333
|
+
},
|
334
|
+
"Local node environment #{@environment} for configurer transaction"
|
335
|
+
)
|
327
336
|
end
|
328
|
-
Puppet.push_context({
|
329
|
-
:current_environment => local_node_environment,
|
330
|
-
:loaders => Puppet::Pops::Loaders.new(local_node_environment, true)
|
331
|
-
}, "Local node environment for configurer transaction")
|
332
337
|
|
333
|
-
query_options = get_facts(options) unless query_options
|
338
|
+
query_options, facts = get_facts(options) unless query_options
|
334
339
|
query_options[:configured_environment] = configured_environment
|
335
340
|
options[:convert_for_node] = node
|
336
341
|
|
337
|
-
catalog = prepare_and_retrieve_catalog(cached_catalog, options, query_options)
|
342
|
+
catalog = prepare_and_retrieve_catalog(cached_catalog, facts, options, query_options)
|
338
343
|
unless catalog
|
339
344
|
return nil
|
340
345
|
end
|
@@ -357,11 +362,11 @@ class Puppet::Configurer
|
|
357
362
|
@environment = catalog.environment
|
358
363
|
report.environment = @environment
|
359
364
|
|
360
|
-
query_options = get_facts(options)
|
365
|
+
query_options, facts = get_facts(options)
|
361
366
|
query_options[:configured_environment] = configured_environment
|
362
367
|
|
363
368
|
# if we get here, ignore the cached catalog
|
364
|
-
catalog = prepare_and_retrieve_catalog(nil, options, query_options)
|
369
|
+
catalog = prepare_and_retrieve_catalog(nil, facts, options, query_options)
|
365
370
|
return nil unless catalog
|
366
371
|
tries += 1
|
367
372
|
end
|
@@ -373,7 +378,7 @@ class Puppet::Configurer
|
|
373
378
|
else
|
374
379
|
# REMIND @duration is the time spent loading the last catalog, and doesn't
|
375
380
|
# account for things like we failed to download and fell back to the cache
|
376
|
-
ral_catalog = convert_catalog(catalog, @duration, options)
|
381
|
+
ral_catalog = convert_catalog(catalog, @duration, facts, options)
|
377
382
|
|
378
383
|
# If not noop, commit the cached resource catalog (not ral catalog). Ideally
|
379
384
|
# we'd just copy the downloaded response body, instead of serializing the
|
@@ -409,7 +414,7 @@ class Puppet::Configurer
|
|
409
414
|
end
|
410
415
|
|
411
416
|
report.cached_catalog_status ||= @cached_catalog_status
|
412
|
-
report.add_times(:total, Time.now -
|
417
|
+
report.add_times(:total, Time.now - report.time)
|
413
418
|
report.finalize_report
|
414
419
|
Puppet::Util::Log.close(report)
|
415
420
|
send_report(report)
|
@@ -418,21 +423,16 @@ class Puppet::Configurer
|
|
418
423
|
private :run_internal
|
419
424
|
|
420
425
|
def find_functional_server
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
{ host: host, port: port, code: response.code, reason: response.message })
|
432
|
-
rescue => detail
|
433
|
-
#TRANSLATORS 'server_list' is the name of a setting and should not be translated
|
434
|
-
Puppet.debug _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail}
|
435
|
-
end
|
426
|
+
begin
|
427
|
+
session = Puppet.lookup(:http_session)
|
428
|
+
service = session.route_to(:puppet)
|
429
|
+
return [service.url.host, service.url.port]
|
430
|
+
rescue Puppet::HTTP::ResponseError => e
|
431
|
+
Puppet.debug(_("Puppet server %{host}:%{port} is unavailable: %{code} %{reason}") %
|
432
|
+
{ host: e.response.url.host, port: e.response.url.port, code: e.response.code, reason: e.response.reason })
|
433
|
+
rescue => detail
|
434
|
+
#TRANSLATORS 'server_list' is the name of a setting and should not be translated
|
435
|
+
Puppet.debug _("Unable to connect to server from server_list setting: %{detail}") % {detail: detail}
|
436
436
|
end
|
437
437
|
[nil, nil]
|
438
438
|
end
|
@@ -467,7 +467,7 @@ class Puppet::Configurer
|
|
467
467
|
::Facter.clear
|
468
468
|
facts = find_facts
|
469
469
|
|
470
|
-
client = Puppet.runtime[
|
470
|
+
client = Puppet.runtime[:http]
|
471
471
|
session = client.create_session
|
472
472
|
puppet = session.route_to(:puppet)
|
473
473
|
|
@@ -516,7 +516,7 @@ class Puppet::Configurer
|
|
516
516
|
return nil
|
517
517
|
end
|
518
518
|
|
519
|
-
def retrieve_new_catalog(query_options)
|
519
|
+
def retrieve_new_catalog(facts, query_options)
|
520
520
|
result = nil
|
521
521
|
@duration = thinmark do
|
522
522
|
result = Puppet::Resource::Catalog.indirection.find(
|
@@ -526,7 +526,8 @@ class Puppet::Configurer
|
|
526
526
|
# don't update cache until after environment converges
|
527
527
|
:ignore_cache_save => true,
|
528
528
|
:environment => Puppet::Node::Environment.remote(@environment),
|
529
|
-
:fail_on_404 => true
|
529
|
+
:fail_on_404 => true,
|
530
|
+
:facts_for_catalog => facts
|
530
531
|
)
|
531
532
|
)
|
532
533
|
end
|