knife 18.6.2 → 18.7.9
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 +4 -4
- data/Gemfile +23 -27
- data/LICENSE +201 -201
- data/Rakefile +33 -33
- data/bin/knife +24 -24
- data/knife.gemspec +65 -64
- data/lib/chef/application/knife.rb +237 -237
- data/lib/chef/chef_fs/knife.rb +162 -162
- data/lib/chef/knife/acl_add.rb +57 -57
- data/lib/chef/knife/acl_base.rb +183 -183
- data/lib/chef/knife/acl_bulk_add.rb +78 -78
- data/lib/chef/knife/acl_bulk_remove.rb +83 -83
- data/lib/chef/knife/acl_remove.rb +62 -62
- data/lib/chef/knife/acl_show.rb +56 -56
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +160 -160
- data/lib/chef/knife/bootstrap/client_builder.rb +212 -212
- data/lib/chef/knife/bootstrap/templates/README.md +11 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +249 -249
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +278 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +334 -334
- data/lib/chef/knife/bootstrap.rb +1229 -1219
- data/lib/chef/knife/client_bulk_delete.rb +104 -104
- data/lib/chef/knife/client_create.rb +140 -140
- data/lib/chef/knife/client_delete.rb +62 -62
- data/lib/chef/knife/client_edit.rb +52 -52
- data/lib/chef/knife/client_key_create.rb +73 -73
- data/lib/chef/knife/client_key_delete.rb +80 -80
- data/lib/chef/knife/client_key_edit.rb +83 -83
- data/lib/chef/knife/client_key_list.rb +73 -73
- data/lib/chef/knife/client_key_show.rb +80 -80
- data/lib/chef/knife/client_list.rb +41 -41
- data/lib/chef/knife/client_reregister.rb +58 -58
- data/lib/chef/knife/client_show.rb +48 -48
- data/lib/chef/knife/config_get.rb +39 -39
- data/lib/chef/knife/config_get_profile.rb +37 -37
- data/lib/chef/knife/config_list.rb +139 -139
- data/lib/chef/knife/config_list_profiles.rb +37 -37
- data/lib/chef/knife/config_show.rb +127 -127
- data/lib/chef/knife/config_use.rb +61 -61
- data/lib/chef/knife/config_use_profile.rb +47 -47
- data/lib/chef/knife/configure.rb +150 -150
- data/lib/chef/knife/configure_client.rb +48 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +71 -71
- data/lib/chef/knife/cookbook_delete.rb +151 -151
- data/lib/chef/knife/cookbook_download.rb +142 -142
- data/lib/chef/knife/cookbook_list.rb +47 -47
- data/lib/chef/knife/cookbook_metadata.rb +106 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +49 -49
- data/lib/chef/knife/cookbook_show.rb +98 -98
- data/lib/chef/knife/cookbook_upload.rb +313 -313
- data/lib/chef/knife/core/bootstrap_context.rb +274 -274
- data/lib/chef/knife/core/cookbook_scm_repo.rb +159 -159
- data/lib/chef/knife/core/cookbook_site_streaming_uploader.rb +249 -249
- data/lib/chef/knife/core/formatting_options.rb +49 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +134 -134
- data/lib/chef/knife/core/generic_presenter.rb +238 -238
- data/lib/chef/knife/core/hashed_command_loader.rb +100 -100
- data/lib/chef/knife/core/node_editor.rb +130 -130
- data/lib/chef/knife/core/node_presenter.rb +133 -133
- data/lib/chef/knife/core/object_loader.rb +115 -115
- data/lib/chef/knife/core/status_presenter.rb +147 -147
- data/lib/chef/knife/core/subcommand_loader.rb +208 -208
- data/lib/chef/knife/core/text_formatter.rb +85 -85
- data/lib/chef/knife/core/ui.rb +339 -339
- data/lib/chef/knife/core/windows_bootstrap_context.rb +441 -443
- data/lib/chef/knife/data_bag_create.rb +81 -81
- data/lib/chef/knife/data_bag_delete.rb +49 -49
- data/lib/chef/knife/data_bag_edit.rb +74 -74
- data/lib/chef/knife/data_bag_from_file.rb +113 -113
- data/lib/chef/knife/data_bag_list.rb +42 -42
- data/lib/chef/knife/data_bag_secret_options.rb +122 -122
- data/lib/chef/knife/data_bag_show.rb +69 -69
- data/lib/chef/knife/delete.rb +125 -125
- data/lib/chef/knife/deps.rb +156 -156
- data/lib/chef/knife/diff.rb +83 -83
- data/lib/chef/knife/download.rb +85 -85
- data/lib/chef/knife/edit.rb +88 -88
- data/lib/chef/knife/environment_compare.rb +128 -128
- data/lib/chef/knife/environment_create.rb +52 -52
- data/lib/chef/knife/environment_delete.rb +44 -44
- data/lib/chef/knife/environment_edit.rb +44 -44
- data/lib/chef/knife/environment_from_file.rb +84 -84
- data/lib/chef/knife/environment_list.rb +41 -41
- data/lib/chef/knife/environment_show.rb +47 -47
- data/lib/chef/knife/exec.rb +99 -99
- data/lib/chef/knife/group_add.rb +55 -55
- data/lib/chef/knife/group_create.rb +49 -49
- data/lib/chef/knife/group_destroy.rb +53 -53
- data/lib/chef/knife/group_list.rb +43 -43
- data/lib/chef/knife/group_remove.rb +56 -56
- data/lib/chef/knife/group_show.rb +49 -49
- data/lib/chef/knife/key_create.rb +112 -112
- data/lib/chef/knife/key_create_base.rb +50 -50
- data/lib/chef/knife/key_delete.rb +55 -55
- data/lib/chef/knife/key_edit.rb +118 -118
- data/lib/chef/knife/key_edit_base.rb +55 -55
- data/lib/chef/knife/key_list.rb +90 -90
- data/lib/chef/knife/key_list_base.rb +45 -45
- data/lib/chef/knife/key_show.rb +53 -53
- data/lib/chef/knife/license.rb +52 -52
- data/lib/chef/knife/list.rb +177 -177
- data/lib/chef/knife/node_bulk_delete.rb +75 -75
- data/lib/chef/knife/node_create.rb +47 -47
- data/lib/chef/knife/node_delete.rb +46 -46
- data/lib/chef/knife/node_edit.rb +70 -70
- data/lib/chef/knife/node_environment_set.rb +53 -53
- data/lib/chef/knife/node_from_file.rb +51 -51
- data/lib/chef/knife/node_list.rb +44 -44
- data/lib/chef/knife/node_policy_set.rb +79 -79
- data/lib/chef/knife/node_run_list_add.rb +104 -104
- data/lib/chef/knife/node_run_list_remove.rb +67 -67
- data/lib/chef/knife/node_run_list_set.rb +66 -66
- data/lib/chef/knife/node_show.rb +63 -63
- data/lib/chef/knife/null.rb +12 -12
- data/lib/chef/knife/org_create.rb +70 -70
- data/lib/chef/knife/org_delete.rb +32 -32
- data/lib/chef/knife/org_edit.rb +48 -48
- data/lib/chef/knife/org_list.rb +44 -44
- data/lib/chef/knife/org_show.rb +31 -31
- data/lib/chef/knife/org_user_add.rb +62 -62
- data/lib/chef/knife/org_user_remove.rb +103 -103
- data/lib/chef/knife/raw.rb +123 -123
- data/lib/chef/knife/recipe_list.rb +32 -32
- data/lib/chef/knife/rehash.rb +50 -50
- data/lib/chef/knife/role_bulk_delete.rb +66 -66
- data/lib/chef/knife/role_create.rb +53 -53
- data/lib/chef/knife/role_delete.rb +46 -46
- data/lib/chef/knife/role_edit.rb +45 -45
- data/lib/chef/knife/role_env_run_list_add.rb +87 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_env_run_list_set.rb +70 -70
- data/lib/chef/knife/role_from_file.rb +51 -51
- data/lib/chef/knife/role_list.rb +42 -42
- data/lib/chef/knife/role_run_list_add.rb +87 -87
- data/lib/chef/knife/role_run_list_clear.rb +55 -55
- data/lib/chef/knife/role_run_list_remove.rb +56 -56
- data/lib/chef/knife/role_run_list_replace.rb +60 -60
- data/lib/chef/knife/role_run_list_set.rb +69 -69
- data/lib/chef/knife/role_show.rb +48 -48
- data/lib/chef/knife/search.rb +194 -194
- data/lib/chef/knife/serve.rb +65 -65
- data/lib/chef/knife/show.rb +72 -72
- data/lib/chef/knife/ssh.rb +657 -657
- data/lib/chef/knife/ssl_check.rb +284 -284
- data/lib/chef/knife/ssl_fetch.rb +162 -162
- data/lib/chef/knife/status.rb +95 -95
- data/lib/chef/knife/supermarket_download.rb +119 -119
- data/lib/chef/knife/supermarket_install.rb +192 -192
- data/lib/chef/knife/supermarket_list.rb +76 -76
- data/lib/chef/knife/supermarket_search.rb +53 -53
- data/lib/chef/knife/supermarket_share.rb +166 -166
- data/lib/chef/knife/supermarket_show.rb +66 -66
- data/lib/chef/knife/supermarket_unshare.rb +62 -62
- data/lib/chef/knife/tag_create.rb +52 -52
- data/lib/chef/knife/tag_delete.rb +60 -60
- data/lib/chef/knife/tag_list.rb +47 -47
- data/lib/chef/knife/upload.rb +87 -87
- data/lib/chef/knife/user_create.rb +180 -180
- data/lib/chef/knife/user_delete.rb +151 -151
- data/lib/chef/knife/user_dissociate.rb +42 -42
- data/lib/chef/knife/user_edit.rb +94 -94
- data/lib/chef/knife/user_invite_add.rb +43 -43
- data/lib/chef/knife/user_invite_list.rb +34 -34
- data/lib/chef/knife/user_invite_rescind.rb +63 -63
- data/lib/chef/knife/user_key_create.rb +73 -73
- data/lib/chef/knife/user_key_delete.rb +80 -80
- data/lib/chef/knife/user_key_edit.rb +83 -83
- data/lib/chef/knife/user_key_list.rb +73 -73
- data/lib/chef/knife/user_key_show.rb +80 -80
- data/lib/chef/knife/user_list.rb +43 -43
- data/lib/chef/knife/user_password.rb +70 -70
- data/lib/chef/knife/user_reregister.rb +59 -59
- data/lib/chef/knife/user_show.rb +52 -52
- data/lib/chef/knife/version.rb +24 -24
- data/lib/chef/knife/xargs.rb +282 -282
- data/lib/chef/knife/yaml_convert.rb +91 -91
- data/lib/chef/knife.rb +677 -677
- data/lib/chef/utils/licensing_config.rb +9 -9
- data/lib/chef/utils/licensing_handler.rb +72 -46
- data/spec/data/apt/chef-integration-test-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/changelog +11 -11
- data/spec/data/apt/chef-integration-test-1.1/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/control +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test-1.1/debian/files +1 -1
- data/spec/data/apt/chef-integration-test-1.1/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test-1.1/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/changelog +5 -5
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/control +10 -10
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2/DEBIAN/md5sums +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.debhelper.log +45 -45
- data/spec/data/apt/chef-integration-test2-1.0/debian/chef-integration-test2.substvars +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/compat +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/conffiles +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/control +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/copyright +34 -34
- data/spec/data/apt/chef-integration-test2-1.0/debian/files +1 -1
- data/spec/data/apt/chef-integration-test2-1.0/debian/rules +13 -13
- data/spec/data/apt/chef-integration-test2-1.0/debian/source/format +1 -1
- data/spec/data/apt/chef-integration-test2_1.0-1.dsc +18 -18
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.build +91 -91
- data/spec/data/apt/chef-integration-test2_1.0-1_amd64.changes +31 -31
- data/spec/data/apt/chef-integration-test_1.0-1_amd64.changes +22 -22
- data/spec/data/apt/chef-integration-test_1.1-1_amd64.changes +22 -22
- data/spec/data/apt/var/www/apt/conf/distributions +7 -7
- data/spec/data/apt/var/www/apt/conf/incoming +4 -4
- data/spec/data/apt/var/www/apt/conf/pulls +3 -3
- data/spec/data/apt/var/www/apt/db/version +4 -4
- data/spec/data/apt/var/www/apt/dists/sid/Release +19 -19
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Packages +16 -16
- data/spec/data/apt/var/www/apt/dists/sid/main/binary-amd64/Release +5 -5
- data/spec/data/bootstrap/encrypted_data_bag_secret +1 -1
- data/spec/data/bootstrap/no_proxy.erb +2 -2
- data/spec/data/bootstrap/secret.erb +9 -9
- data/spec/data/bootstrap/test-hints.erb +12 -12
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/tatft/README.rdoc +2 -2
- data/spec/data/cb_version_cookbooks/tatft/attributes/default.rb +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-600hhz-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ahd2gq-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-api8ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-b0r1m1-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-bfygsi-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-el14l6-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ivrl3y-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-kkbs85-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ory1ux-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-pgsq76-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ra8uim-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t7k1g-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-t8g0sv-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-ufy6g3-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-x2d6j9-0 +1 -1
- data/spec/data/checksum_cache/chef-file--tmp-chef-rendered-template20100929-10863-xi0l6h-0 +1 -1
- data/spec/data/client.d_00/00-foo.rb +2 -2
- data/spec/data/client.d_00/01-bar.rb +1 -1
- data/spec/data/client.d_00/02-strings.rb +2 -2
- data/spec/data/client.d_00/bar +1 -1
- data/spec/data/client.d_01/foo/bar.rb +1 -1
- data/spec/data/client.d_02/foo.rb/foo.txt +1 -1
- data/spec/data/config.rb +6 -6
- data/spec/data/cookbooks/angrybash/metadata.rb +2 -2
- data/spec/data/cookbooks/angrybash/recipes/default.rb +8 -8
- data/spec/data/cookbooks/apache2/files/default/apache2_module_conf_generate.pl +2 -2
- data/spec/data/cookbooks/apache2/metadata.json +33 -33
- data/spec/data/cookbooks/apache2/metadata.rb +2 -2
- data/spec/data/cookbooks/apache2/recipes/default.rb +2 -2
- data/spec/data/cookbooks/borken/metadata.rb +2 -2
- data/spec/data/cookbooks/borken/recipes/default.rb +1 -1
- data/spec/data/cookbooks/borken/templates/default/borken.erb +1 -1
- data/spec/data/cookbooks/chefignore +8 -8
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -2
- data/spec/data/cookbooks/ignorken/metadata.rb +2 -2
- data/spec/data/cookbooks/ignorken/recipes/ignoreme.rb +1 -1
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -2
- data/spec/data/cookbooks/irssi/files/default/irssi.response +2 -2
- data/spec/data/cookbooks/java/files/default/java.response +1 -1
- data/spec/data/cookbooks/java/metadata.json +33 -33
- data/spec/data/cookbooks/java/metadata.rb +2 -2
- data/spec/data/cookbooks/name-mismatch-versionnumber/README.md +4 -4
- data/spec/data/cookbooks/name-mismatch-versionnumber/metadata.rb +8 -8
- data/spec/data/cookbooks/name-mismatch-versionnumber/recipes/default.rb +8 -8
- data/spec/data/cookbooks/openldap/attributes/default.rb +16 -16
- data/spec/data/cookbooks/openldap/attributes/smokey.rb +1 -1
- data/spec/data/cookbooks/openldap/definitions/client.rb +5 -5
- data/spec/data/cookbooks/openldap/definitions/server.rb +5 -5
- data/spec/data/cookbooks/openldap/files/default/.dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/.a_dotdir/.a_dotfile_in_a_dotdir +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/not_a_template.erb +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remote_dir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/.a_dotfile +1 -1
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file1.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/remotesubdir/remote_subdir_file2.txt +2 -2
- data/spec/data/cookbooks/openldap/files/default/remotedir/subdir_with_no_file_just_a_subsubdir/the_subsubdir/some_file.txt +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -3
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -4
- data/spec/data/cookbooks/openldap/metadata.rb +8 -8
- data/spec/data/cookbooks/openldap/recipes/default.rb +4 -4
- data/spec/data/cookbooks/openldap/recipes/gigantor.rb +3 -3
- data/spec/data/cookbooks/openldap/recipes/one.rb +15 -15
- data/spec/data/cookbooks/openldap/recipes/return.rb +2 -2
- data/spec/data/cookbooks/openldap/templates/default/helper_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/helpers.erb +14 -14
- data/spec/data/cookbooks/openldap/templates/default/helpers_via_partial_test.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_openldap_partials.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/nested_partial.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/no_windows_line_endings.erb +4 -4
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/openldap_variable_stuff.conf.erb +1 -1
- data/spec/data/cookbooks/openldap/templates/default/test.erb +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-file.seed +1 -1
- data/spec/data/cookbooks/preseed/files/default/preseed-template.seed +4 -4
- data/spec/data/cookbooks/preseed/metadata.rb +2 -2
- data/spec/data/cookbooks/preseed/templates/default/preseed-template-variables.seed +1 -1
- data/spec/data/cookbooks/preseed/templates/default/preseed-template.seed +1 -1
- data/spec/data/cookbooks/starter/chefignore +8 -8
- data/spec/data/cookbooks/starter/metadata.rb +2 -2
- data/spec/data/cookbooks/starter/recipes/default.rb +4 -4
- data/spec/data/cookbooks/supports-platform-constraints/metadata.rb +5 -5
- data/spec/data/cookbooks/wget/files/default/wget.response +2 -2
- data/spec/data/definitions/test.rb +4 -4
- data/spec/data/environment-config.rb +4 -4
- data/spec/data/file-providers-method-snapshot-chef-11-4.json +127 -127
- data/spec/data/fileedit/hosts +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/README.md +4 -4
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/metadata.rb +13 -13
- data/spec/data/incomplete-metadata-chef-repo/incomplete-metadata/recipes/default.rb +8 -8
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/README.md +4 -4
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/metadata.rb +9 -9
- data/spec/data/invalid-metadata-chef-repo/invalid-metadata/recipes/default.rb +8 -8
- data/spec/data/kitchen/chefignore +6 -6
- data/spec/data/kitchen/openldap/attributes/default.rb +3 -3
- data/spec/data/kitchen/openldap/attributes/robinson.rb +2 -2
- data/spec/data/kitchen/openldap/definitions/client.rb +3 -3
- data/spec/data/kitchen/openldap/definitions/drewbarrymore.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/gigantor.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/ignoreme.rb +2 -2
- data/spec/data/kitchen/openldap/recipes/woot.rb +3 -3
- data/spec/data/knife_subcommand/test_explicit_category.rb +6 -6
- data/spec/data/knife_subcommand/test_name_mapping.rb +4 -4
- data/spec/data/knife_subcommand/test_yourself.rb +21 -21
- data/spec/data/lwrp/providers/buck_passer.rb +28 -28
- data/spec/data/lwrp/providers/buck_passer_2.rb +26 -26
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +28 -28
- data/spec/data/lwrp/providers/inline_compiler.rb +24 -24
- data/spec/data/lwrp/providers/monkey_name_printer.rb +5 -5
- data/spec/data/lwrp/providers/paint_drying_watcher.rb +7 -7
- data/spec/data/lwrp/providers/thumb_twiddler.rb +7 -7
- data/spec/data/lwrp/resources/bar.rb +4 -4
- data/spec/data/lwrp/resources/buck_passer.rb +6 -6
- data/spec/data/lwrp/resources/buck_passer_2.rb +4 -4
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +4 -4
- data/spec/data/lwrp/resources/foo.rb +6 -6
- data/spec/data/lwrp/resources/inline_compiler.rb +4 -4
- data/spec/data/lwrp/resources/monkey_name_printer.rb +6 -6
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +4 -4
- data/spec/data/lwrp/resources/thumb_twiddler.rb +4 -4
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +3 -3
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -1
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -5
- data/spec/data/lwrp_override/resources/foo.rb +11 -11
- data/spec/data/mac_users/10.9.plist.xml +560 -560
- data/spec/data/mac_users/10.9.shadow.xml +21 -21
- data/spec/data/metadata/quick_start/metadata.rb +14 -14
- data/spec/data/mixin/invalid_data.rb +3 -3
- data/spec/data/mixin/real_data.rb +2 -2
- data/spec/data/nested.json +2 -2
- data/spec/data/nodes/default.rb +15 -15
- data/spec/data/nodes/test.example.com.rb +17 -17
- data/spec/data/nodes/test.rb +15 -15
- data/spec/data/null_config.rb +1 -1
- data/spec/data/object_loader/environments/test.json +7 -7
- data/spec/data/object_loader/environments/test.rb +2 -2
- data/spec/data/object_loader/environments/test_json_class.json +8 -8
- data/spec/data/object_loader/nodes/test.json +7 -7
- data/spec/data/object_loader/nodes/test.rb +2 -2
- data/spec/data/object_loader/nodes/test_json_class.json +8 -8
- data/spec/data/object_loader/roles/test.json +7 -7
- data/spec/data/object_loader/roles/test.rb +2 -2
- data/spec/data/object_loader/roles/test_json_class.json +8 -8
- data/spec/data/partial_one.erb +1 -1
- data/spec/data/prefer_metadata_json/metadata.json +51 -51
- data/spec/data/prefer_metadata_json/metadata.rb +6 -6
- data/spec/data/recipes/test.rb +7 -7
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -3
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -3
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -1
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -2
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -3
- data/spec/data/rubygems.org/sexp_processor-info +49 -49
- data/spec/data/run_context/cookbooks/circular-dep1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/definitions/circular_dep1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/definitions/circular_dep2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/circular-dep2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/aa_first.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/attributes/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/attributes/zz_last.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/definitions/dependency1_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/definitions/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/libraries/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency1/providers/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/recipes/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency1/resources/unparsed_file +1 -1
- data/spec/data/run_context/cookbooks/dependency2/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/definitions/dependency2_res.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/dependency2/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/include/recipes/default.rb +24 -24
- data/spec/data/run_context/cookbooks/include/recipes/includee.rb +3 -3
- data/spec/data/run_context/cookbooks/no-default-attr/attributes/server.rb +2 -2
- data/spec/data/run_context/cookbooks/no-default-attr/definitions/no_default-attr_res.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +2 -2
- data/spec/data/run_context/cookbooks/test/attributes/george.rb +1 -1
- data/spec/data/run_context/cookbooks/test/definitions/new_animals.rb +9 -9
- data/spec/data/run_context/cookbooks/test/definitions/new_cat.rb +5 -5
- data/spec/data/run_context/cookbooks/test/definitions/test_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test/recipes/default.rb +5 -5
- data/spec/data/run_context/cookbooks/test/recipes/one.rb +7 -7
- data/spec/data/run_context/cookbooks/test/recipes/two.rb +7 -7
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-circular-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/definitions/test_with-circular-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/libraries/lib.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/metadata.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-circular-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/attributes/default.rb +2 -2
- data/spec/data/run_context/cookbooks/test-with-deps/definitions/test_with-deps_res.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/libraries/lib.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/metadata.rb +3 -3
- data/spec/data/run_context/cookbooks/test-with-deps/providers/provider.rb +1 -1
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +2 -2
- data/spec/data/run_context/nodes/run_context.rb +5 -5
- data/spec/data/sample_msu1.xml +10 -10
- data/spec/data/sample_msu2.xml +14 -14
- data/spec/data/sample_msu3.xml +16 -16
- data/spec/data/search_queries_to_transform.txt +98 -98
- data/spec/data/shef-config.rb +11 -11
- data/spec/data/snap_package/async_result_success.json +6 -6
- data/spec/data/snap_package/change_id_result.json +175 -175
- data/spec/data/snap_package/find_result_failure.json +10 -10
- data/spec/data/snap_package/find_result_success.json +70 -70
- data/spec/data/snap_package/get_by_name_result_failure.json +10 -10
- data/spec/data/snap_package/get_by_name_result_success.json +38 -38
- data/spec/data/snap_package/get_conf_success.json +10 -10
- data/spec/data/snap_package/result_failure.json +9 -9
- data/spec/data/ssl/5e707473.0 +18 -18
- data/spec/data/ssl/chef-rspec.cert +27 -27
- data/spec/data/ssl/chef-rspec.key +27 -27
- data/spec/data/ssl/key.pem +15 -15
- data/spec/data/ssl/private_key.pem +27 -27
- data/spec/data/ssl/private_key_with_whitespace.pem +32 -32
- data/spec/data/standalone_cookbook/chefignore +9 -9
- data/spec/data/standalone_cookbook/recipes/default.rb +2 -2
- data/spec/data/templates/failed.erb +5 -5
- data/spec/data/trusted_certs/example.crt +22 -22
- data/spec/data/trusted_certs/example_no_cn.crt +36 -36
- data/spec/data/trusted_certs/intermediate.pem +27 -27
- data/spec/data/trusted_certs/opscode.pem +57 -57
- data/spec/data/trusted_certs/root.pem +22 -22
- data/spec/data/windows_certificates/base64_test.cer +20 -20
- data/spec/data/windows_certificates/othertest.cer +20 -20
- data/spec/data/windows_certificates/test.cer +20 -20
- data/spec/data/windows_certificates/test.pem +20 -20
- data/spec/functional/configure_spec.rb +33 -33
- data/spec/functional/cookbook_delete_spec.rb +157 -156
- data/spec/functional/exec_spec.rb +55 -55
- data/spec/functional/rehash_spec.rb +39 -39
- data/spec/functional/smoke_test.rb +42 -42
- data/spec/functional/ssh_spec.rb +352 -352
- data/spec/functional/version_spec.rb +26 -26
- data/spec/integration/chef_fs_data_store_spec.rb +557 -557
- data/spec/integration/chef_repo_path_spec.rb +962 -962
- data/spec/integration/chef_repository_file_system_spec.rb +200 -200
- data/spec/integration/chefignore_spec.rb +301 -301
- data/spec/integration/client_bulk_delete_spec.rb +131 -131
- data/spec/integration/client_create_spec.rb +70 -70
- data/spec/integration/client_delete_spec.rb +64 -64
- data/spec/integration/client_key_create_spec.rb +66 -66
- data/spec/integration/client_key_delete_spec.rb +43 -43
- data/spec/integration/client_key_list_spec.rb +61 -61
- data/spec/integration/client_key_show_spec.rb +45 -45
- data/spec/integration/client_list_spec.rb +49 -49
- data/spec/integration/client_show_spec.rb +37 -37
- data/spec/integration/commands_spec.rb +55 -55
- data/spec/integration/common_options_spec.rb +174 -174
- data/spec/integration/config_list_spec.rb +220 -220
- data/spec/integration/config_show_spec.rb +192 -192
- data/spec/integration/config_use_spec.rb +198 -198
- data/spec/integration/cookbook_api_ipv6_spec.rb +113 -113
- data/spec/integration/cookbook_bulk_delete_spec.rb +65 -65
- data/spec/integration/cookbook_download_spec.rb +72 -72
- data/spec/integration/cookbook_list_spec.rb +55 -55
- data/spec/integration/cookbook_show_spec.rb +149 -149
- data/spec/integration/cookbook_upload_spec.rb +128 -128
- data/spec/integration/data_bag_create_spec.rb +125 -125
- data/spec/integration/data_bag_delete_spec.rb +59 -59
- data/spec/integration/data_bag_edit_spec.rb +105 -105
- data/spec/integration/data_bag_from_file_spec.rb +116 -116
- data/spec/integration/data_bag_list_spec.rb +44 -44
- data/spec/integration/data_bag_show_spec.rb +95 -95
- data/spec/integration/delete_spec.rb +1018 -1018
- data/spec/integration/deps_spec.rb +703 -703
- data/spec/integration/diff_spec.rb +605 -605
- data/spec/integration/download_spec.rb +1336 -1336
- data/spec/integration/environment_compare_spec.rb +75 -75
- data/spec/integration/environment_create_spec.rb +41 -41
- data/spec/integration/environment_delete_spec.rb +37 -37
- data/spec/integration/environment_from_file_spec.rb +116 -116
- data/spec/integration/environment_list_spec.rb +42 -42
- data/spec/integration/environment_show_spec.rb +77 -77
- data/spec/integration/list_spec.rb +1060 -1060
- data/spec/integration/node_bulk_delete_spec.rb +52 -52
- data/spec/integration/node_create_spec.rb +47 -47
- data/spec/integration/node_delete_spec.rb +48 -48
- data/spec/integration/node_environment_set_spec.rb +46 -46
- data/spec/integration/node_from_file_spec.rb +59 -59
- data/spec/integration/node_list_spec.rb +45 -45
- data/spec/integration/node_run_list_add_spec.rb +54 -54
- data/spec/integration/node_run_list_remove_spec.rb +36 -36
- data/spec/integration/node_run_list_set_spec.rb +41 -41
- data/spec/integration/node_show_spec.rb +36 -36
- data/spec/integration/raw_spec.rb +297 -297
- data/spec/integration/redirection_spec.rb +64 -64
- data/spec/integration/role_bulk_delete_spec.rb +52 -52
- data/spec/integration/role_create_spec.rb +41 -41
- data/spec/integration/role_delete_spec.rb +48 -48
- data/spec/integration/role_from_file_spec.rb +96 -96
- data/spec/integration/role_list_spec.rb +45 -45
- data/spec/integration/role_show_spec.rb +51 -51
- data/spec/integration/search_node_spec.rb +40 -40
- data/spec/integration/serve_spec.rb +92 -92
- data/spec/integration/show_spec.rb +197 -197
- data/spec/integration/upload_spec.rb +1616 -1616
- data/spec/knife_spec_helper.rb +241 -241
- data/spec/support/chef_helpers.rb +79 -79
- data/spec/support/key_helpers.rb +102 -102
- data/spec/support/platform_helpers.rb +255 -255
- data/spec/support/platforms/prof/gc.rb +51 -51
- data/spec/support/platforms/prof/win32.rb +45 -45
- data/spec/support/platforms/win32/spec_service.rb +57 -57
- data/spec/support/recipe_dsl_helper.rb +83 -83
- data/spec/support/shared/context/config.rb +18 -18
- data/spec/support/shared/functional/knife.rb +37 -37
- data/spec/support/shared/integration/integration_helper.rb +122 -122
- data/spec/support/shared/integration/knife_support.rb +192 -192
- data/spec/support/shared/matchers/exit_with_code.rb +32 -32
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -17
- data/spec/support/shared/unit/knife_shared.rb +39 -39
- data/spec/support/shared/unit/mock_shellout.rb +49 -49
- data/spec/tiny_server.rb +193 -190
- data/spec/unit/application/knife_spec.rb +241 -241
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +152 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +207 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +244 -244
- data/spec/unit/knife/bootstrap_spec.rb +2311 -2288
- data/spec/unit/knife/client_bulk_delete_spec.rb +166 -166
- data/spec/unit/knife/client_create_spec.rb +232 -232
- data/spec/unit/knife/client_delete_spec.rb +99 -99
- data/spec/unit/knife/client_edit_spec.rb +53 -53
- data/spec/unit/knife/client_list_spec.rb +34 -34
- data/spec/unit/knife/client_reregister_spec.rb +62 -62
- data/spec/unit/knife/client_show_spec.rb +52 -52
- data/spec/unit/knife/configure_client_spec.rb +81 -81
- data/spec/unit/knife/configure_spec.rb +190 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +87 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +239 -239
- data/spec/unit/knife/cookbook_download_spec.rb +255 -255
- data/spec/unit/knife/cookbook_list_spec.rb +88 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +72 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +182 -182
- data/spec/unit/knife/cookbook_show_spec.rb +253 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +426 -426
- data/spec/unit/knife/core/bootstrap_context_spec.rb +287 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +187 -187
- data/spec/unit/knife/core/cookbook_site_streaming_uploader_spec.rb +198 -198
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +242 -242
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +112 -112
- data/spec/unit/knife/core/node_editor_spec.rb +211 -211
- data/spec/unit/knife/core/object_loader_spec.rb +81 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +54 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +64 -64
- data/spec/unit/knife/core/ui_spec.rb +656 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +282 -238
- data/spec/unit/knife/data_bag_create_spec.rb +175 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +126 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +174 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +173 -173
- data/spec/unit/knife/data_bag_show_spec.rb +139 -139
- data/spec/unit/knife/environment_compare_spec.rb +112 -112
- data/spec/unit/knife/environment_create_spec.rb +91 -91
- data/spec/unit/knife/environment_delete_spec.rb +71 -71
- data/spec/unit/knife/environment_edit_spec.rb +79 -79
- data/spec/unit/knife/environment_from_file_spec.rb +90 -90
- data/spec/unit/knife/environment_list_spec.rb +54 -54
- data/spec/unit/knife/environment_show_spec.rb +52 -52
- data/spec/unit/knife/key_create_spec.rb +223 -223
- data/spec/unit/knife/key_delete_spec.rb +133 -133
- data/spec/unit/knife/key_edit_spec.rb +264 -264
- data/spec/unit/knife/key_helper.rb +74 -74
- data/spec/unit/knife/key_list_spec.rb +216 -216
- data/spec/unit/knife/key_show_spec.rb +126 -126
- data/spec/unit/knife/license_spec.rb +89 -89
- data/spec/unit/knife/node_bulk_delete_spec.rb +94 -94
- data/spec/unit/knife/node_delete_spec.rb +77 -77
- data/spec/unit/knife/node_edit_spec.rb +116 -116
- data/spec/unit/knife/node_environment_set_spec.rb +61 -61
- data/spec/unit/knife/node_from_file_spec.rb +59 -59
- data/spec/unit/knife/node_list_spec.rb +62 -62
- data/spec/unit/knife/node_policy_set_spec.rb +122 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +145 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +106 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +115 -115
- data/spec/unit/knife/node_show_spec.rb +65 -65
- data/spec/unit/knife/org_create_spec.rb +76 -76
- data/spec/unit/knife/org_delete_spec.rb +41 -41
- data/spec/unit/knife/org_edit_spec.rb +49 -49
- data/spec/unit/knife/org_list_spec.rb +58 -58
- data/spec/unit/knife/org_show_spec.rb +45 -45
- data/spec/unit/knife/org_user_add_spec.rb +39 -39
- data/spec/unit/knife/raw_spec.rb +43 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +80 -80
- data/spec/unit/knife/role_create_spec.rb +80 -80
- data/spec/unit/knife/role_delete_spec.rb +67 -67
- data/spec/unit/knife/role_edit_spec.rb +77 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +94 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +102 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +105 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +99 -99
- data/spec/unit/knife/role_from_file_spec.rb +69 -69
- data/spec/unit/knife/role_list_spec.rb +54 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +84 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +92 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +98 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +89 -89
- data/spec/unit/knife/role_show_spec.rb +59 -59
- data/spec/unit/knife/search_spec.rb +147 -147
- data/spec/unit/knife/ssh_spec.rb +403 -403
- data/spec/unit/knife/ssl_check_spec.rb +256 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +222 -222
- data/spec/unit/knife/status_spec.rb +112 -112
- data/spec/unit/knife/supermarket_download_spec.rb +152 -152
- data/spec/unit/knife/supermarket_install_spec.rb +203 -203
- data/spec/unit/knife/supermarket_list_spec.rb +70 -70
- data/spec/unit/knife/supermarket_search_spec.rb +85 -85
- data/spec/unit/knife/supermarket_share_spec.rb +208 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +78 -78
- data/spec/unit/knife/tag_create_spec.rb +23 -23
- data/spec/unit/knife/tag_delete_spec.rb +25 -25
- data/spec/unit/knife/tag_list_spec.rb +23 -23
- data/spec/unit/knife/user_create_spec.rb +282 -282
- data/spec/unit/knife/user_delete_spec.rb +171 -171
- data/spec/unit/knife/user_edit_spec.rb +54 -54
- data/spec/unit/knife/user_list_spec.rb +73 -73
- data/spec/unit/knife/user_password_spec.rb +64 -64
- data/spec/unit/knife/user_reregister_spec.rb +56 -56
- data/spec/unit/knife/user_show_spec.rb +91 -91
- data/spec/unit/knife_spec.rb +637 -637
- data/spec/unit/utils/licensing_handler_spec.rb +140 -0
- metadata +36 -21
data/lib/chef/knife/ssl_check.rb
CHANGED
@@ -1,284 +1,284 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Daniel DeLeo (<dan@chef.io>)
|
3
|
-
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
-
# License:: Apache License, Version 2.0
|
5
|
-
#
|
6
|
-
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
-
# you may not use this file except in compliance with the License.
|
8
|
-
# You may obtain a copy of the License at
|
9
|
-
#
|
10
|
-
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
-
#
|
12
|
-
# Unless required by applicable law or agreed to in writing, software
|
13
|
-
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
-
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
-
# See the License for the specific language governing permissions and
|
16
|
-
# limitations under the License.
|
17
|
-
#
|
18
|
-
|
19
|
-
require_relative "../knife"
|
20
|
-
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
21
|
-
|
22
|
-
class Chef
|
23
|
-
class Knife
|
24
|
-
class SslCheck < Chef::Knife
|
25
|
-
|
26
|
-
deps do
|
27
|
-
require "chef/config" unless defined?(Chef::Config)
|
28
|
-
require "pp" unless defined?(PP)
|
29
|
-
require "socket" unless defined?(Socket)
|
30
|
-
require "uri" unless defined?(URI)
|
31
|
-
require "chef/http/ssl_policies" unless defined?(Chef::HTTP::DefaultSSLPolicy)
|
32
|
-
require "openssl" unless defined?(OpenSSL)
|
33
|
-
require "chef/mixin/proxified_socket" unless defined?(Chef::Mixin::ProxifiedSocket)
|
34
|
-
include Chef::Mixin::ProxifiedSocket
|
35
|
-
end
|
36
|
-
|
37
|
-
banner "knife ssl check [URL] (options)"
|
38
|
-
|
39
|
-
def initialize(*args)
|
40
|
-
@host = nil
|
41
|
-
@verify_peer_socket = nil
|
42
|
-
@ssl_policy = HTTP::DefaultSSLPolicy
|
43
|
-
super
|
44
|
-
end
|
45
|
-
|
46
|
-
def uri
|
47
|
-
@uri ||= begin
|
48
|
-
Chef::Log.trace("Checking SSL cert on #{given_uri}")
|
49
|
-
URI.parse(given_uri)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
def given_uri
|
54
|
-
(name_args[0] || Chef::Config.chef_server_url)
|
55
|
-
end
|
56
|
-
|
57
|
-
def host
|
58
|
-
uri.host
|
59
|
-
end
|
60
|
-
|
61
|
-
def port
|
62
|
-
uri.port
|
63
|
-
end
|
64
|
-
|
65
|
-
def validate_uri
|
66
|
-
unless host && port
|
67
|
-
invalid_uri!
|
68
|
-
end
|
69
|
-
rescue URI::Error
|
70
|
-
invalid_uri!
|
71
|
-
end
|
72
|
-
|
73
|
-
def invalid_uri!
|
74
|
-
ui.error("Given URI: `#{given_uri}' is invalid")
|
75
|
-
show_usage
|
76
|
-
exit 1
|
77
|
-
end
|
78
|
-
|
79
|
-
def verify_peer_socket
|
80
|
-
@verify_peer_socket ||= begin
|
81
|
-
tcp_connection = proxified_socket(host, port)
|
82
|
-
ssl_client = OpenSSL::SSL::SSLSocket.new(tcp_connection, verify_peer_ssl_context)
|
83
|
-
ssl_client.hostname = host
|
84
|
-
ssl_client
|
85
|
-
end
|
86
|
-
end
|
87
|
-
|
88
|
-
def verify_peer_ssl_context
|
89
|
-
@verify_peer_ssl_context ||= begin
|
90
|
-
verify_peer_context = OpenSSL::SSL::SSLContext.new
|
91
|
-
@ssl_policy.apply_to(verify_peer_context)
|
92
|
-
verify_peer_context.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
93
|
-
verify_peer_context
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
def noverify_socket
|
98
|
-
@noverify_socket ||= begin
|
99
|
-
tcp_connection = proxified_socket(host, port)
|
100
|
-
OpenSSL::SSL::SSLSocket.new(tcp_connection, noverify_peer_ssl_context)
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
def noverify_peer_ssl_context
|
105
|
-
@noverify_peer_ssl_context ||= begin
|
106
|
-
noverify_peer_context = OpenSSL::SSL::SSLContext.new
|
107
|
-
@ssl_policy.apply_to(noverify_peer_context)
|
108
|
-
noverify_peer_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
109
|
-
noverify_peer_context
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def verify_X509
|
114
|
-
cert_debug_msg = ""
|
115
|
-
trusted_certificates.each do |cert_name|
|
116
|
-
message = check_X509_certificate(cert_name)
|
117
|
-
unless message.nil?
|
118
|
-
cert_debug_msg << File.expand_path(cert_name) + ": " + message + "\n"
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
unless cert_debug_msg.empty?
|
123
|
-
debug_invalid_X509(cert_debug_msg)
|
124
|
-
end
|
125
|
-
|
126
|
-
true # Maybe the bad certs won't hurt...
|
127
|
-
end
|
128
|
-
|
129
|
-
def verify_cert
|
130
|
-
ui.msg("Connecting to host #{host}:#{port}")
|
131
|
-
verify_peer_socket.connect
|
132
|
-
true
|
133
|
-
rescue OpenSSL::SSL::SSLError => e
|
134
|
-
ui.error "The SSL certificate of #{host} could not be verified"
|
135
|
-
Chef::Log.trace e.message
|
136
|
-
debug_invalid_cert
|
137
|
-
false
|
138
|
-
end
|
139
|
-
|
140
|
-
def verify_cert_host
|
141
|
-
verify_peer_socket.post_connection_check(host)
|
142
|
-
true
|
143
|
-
rescue OpenSSL::SSL::SSLError => e
|
144
|
-
ui.error "The SSL cert is signed by a trusted authority but is not valid for the given hostname"
|
145
|
-
Chef::Log.trace(e)
|
146
|
-
debug_invalid_host
|
147
|
-
false
|
148
|
-
end
|
149
|
-
|
150
|
-
def debug_invalid_X509(cert_debug_msg)
|
151
|
-
ui.msg("\n#{ui.color("Configuration Info:", :bold)}\n\n")
|
152
|
-
debug_ssl_settings
|
153
|
-
debug_chef_ssl_config
|
154
|
-
|
155
|
-
ui.warn(<<~BAD_CERTS)
|
156
|
-
There are invalid certificates in your trusted_certs_dir.
|
157
|
-
OpenSSL will not use the following certificates when verifying SSL connections:
|
158
|
-
|
159
|
-
#{cert_debug_msg}
|
160
|
-
|
161
|
-
#{ui.color("TO FIX THESE WARNINGS:", :bold)}
|
162
|
-
|
163
|
-
We are working on documentation for resolving common issues uncovered here.
|
164
|
-
|
165
|
-
* If the certificate is generated by the server, you may try redownloading the
|
166
|
-
server's certificate. By default, the certificate is stored in the following
|
167
|
-
location on the host where your chef-server runs:
|
168
|
-
|
169
|
-
/var/opt/opscode/nginx/ca/SERVER_HOSTNAME.crt
|
170
|
-
|
171
|
-
Copy that file to your trusted_certs_dir (currently: #{configuration.trusted_certs_dir})
|
172
|
-
using SSH/SCP or some other secure method, then re-run this command to confirm
|
173
|
-
that the server's certificate is now trusted.
|
174
|
-
|
175
|
-
BAD_CERTS
|
176
|
-
# @TODO: ^ needs URL once documentation is posted.
|
177
|
-
end
|
178
|
-
|
179
|
-
def debug_invalid_cert
|
180
|
-
noverify_socket.connect
|
181
|
-
issuer_info = noverify_socket.peer_cert.issuer
|
182
|
-
ui.msg("Certificate issuer data: #{issuer_info}")
|
183
|
-
|
184
|
-
ui.msg("\n#{ui.color("Configuration Info:", :bold)}\n\n")
|
185
|
-
debug_ssl_settings
|
186
|
-
debug_chef_ssl_config
|
187
|
-
|
188
|
-
ui.err(<<~ADVICE)
|
189
|
-
|
190
|
-
#{ui.color("TO FIX THIS ERROR:", :bold)}
|
191
|
-
|
192
|
-
If the server you are connecting to uses a self-signed certificate, you must
|
193
|
-
configure #{ChefUtils::Dist::Infra::PRODUCT} to trust that server's certificate.
|
194
|
-
|
195
|
-
By default, the certificate is stored in the following location on the host
|
196
|
-
where your chef-server runs:
|
197
|
-
|
198
|
-
/var/opt/opscode/nginx/ca/SERVER_HOSTNAME.crt
|
199
|
-
|
200
|
-
Copy that file to your trusted_certs_dir (currently: #{configuration.trusted_certs_dir})
|
201
|
-
using SSH/SCP or some other secure method, then re-run this command to confirm
|
202
|
-
that the server's certificate is now trusted.
|
203
|
-
|
204
|
-
ADVICE
|
205
|
-
end
|
206
|
-
|
207
|
-
def debug_invalid_host
|
208
|
-
noverify_socket.connect
|
209
|
-
subject = noverify_socket.peer_cert.subject
|
210
|
-
cn_field_tuple = subject.to_a.find { |field| field[0] == "CN" }
|
211
|
-
cn = cn_field_tuple[1]
|
212
|
-
|
213
|
-
ui.error("You are attempting to connect to: '#{host}'")
|
214
|
-
ui.error("The server's certificate belongs to '#{cn}'")
|
215
|
-
ui.err(<<~ADVICE)
|
216
|
-
|
217
|
-
#{ui.color("TO FIX THIS ERROR:", :bold)}
|
218
|
-
|
219
|
-
The solution for this issue depends on your networking configuration. If you
|
220
|
-
are able to connect to this server using the hostname #{cn}
|
221
|
-
instead of #{host}, then you can resolve this issue by updating chef_server_url
|
222
|
-
in your configuration file.
|
223
|
-
|
224
|
-
If you are not able to connect to the server using the hostname #{cn}
|
225
|
-
you will have to update the certificate on the server to use the correct hostname.
|
226
|
-
ADVICE
|
227
|
-
end
|
228
|
-
|
229
|
-
def debug_ssl_settings
|
230
|
-
ui.err "OpenSSL Configuration:"
|
231
|
-
ui.err "* Version: #{OpenSSL::OPENSSL_VERSION}"
|
232
|
-
ui.err "* Certificate file: #{OpenSSL::X509::DEFAULT_CERT_FILE}"
|
233
|
-
ui.err "* Certificate directory: #{OpenSSL::X509::DEFAULT_CERT_DIR}"
|
234
|
-
end
|
235
|
-
|
236
|
-
def debug_chef_ssl_config
|
237
|
-
ui.err "#{ChefUtils::Dist::Infra::PRODUCT} SSL Configuration:"
|
238
|
-
ui.err "* ssl_ca_path: #{configuration.ssl_ca_path.inspect}"
|
239
|
-
ui.err "* ssl_ca_file: #{configuration.ssl_ca_file.inspect}"
|
240
|
-
ui.err "* trusted_certs_dir: #{configuration.trusted_certs_dir.inspect}"
|
241
|
-
end
|
242
|
-
|
243
|
-
def configuration
|
244
|
-
Chef::Config
|
245
|
-
end
|
246
|
-
|
247
|
-
def run
|
248
|
-
validate_uri
|
249
|
-
|
250
|
-
if verify_X509 && verify_cert && verify_cert_host
|
251
|
-
ui.msg "Successfully verified certificates from `#{host}'"
|
252
|
-
else
|
253
|
-
exit 1
|
254
|
-
end
|
255
|
-
end
|
256
|
-
|
257
|
-
private
|
258
|
-
|
259
|
-
def trusted_certificates
|
260
|
-
if configuration.trusted_certs_dir && Dir.exist?(configuration.trusted_certs_dir)
|
261
|
-
glob_dir = ChefConfig::PathHelper.escape_glob_dir(configuration.trusted_certs_dir)
|
262
|
-
Dir.glob(File.join(glob_dir, "*.{crt,pem}"))
|
263
|
-
else
|
264
|
-
[]
|
265
|
-
end
|
266
|
-
end
|
267
|
-
|
268
|
-
def check_X509_certificate(cert_file)
|
269
|
-
store = OpenSSL::X509::Store.new
|
270
|
-
cert = OpenSSL::X509::Certificate.new(IO.read(File.expand_path(cert_file)))
|
271
|
-
begin
|
272
|
-
store.add_cert(cert)
|
273
|
-
# test if the store can verify the cert we just added
|
274
|
-
unless store.verify(cert) # true if verified, false if not
|
275
|
-
return store.error_string
|
276
|
-
end
|
277
|
-
rescue OpenSSL::X509::StoreError => e
|
278
|
-
return e.message
|
279
|
-
end
|
280
|
-
nil
|
281
|
-
end
|
282
|
-
end
|
283
|
-
end
|
284
|
-
end
|
1
|
+
#
|
2
|
+
# Author:: Daniel DeLeo (<dan@chef.io>)
|
3
|
+
# Copyright:: Copyright (c) Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require_relative "../knife"
|
20
|
+
require "chef-utils/dist" unless defined?(ChefUtils::Dist)
|
21
|
+
|
22
|
+
class Chef
|
23
|
+
class Knife
|
24
|
+
class SslCheck < Chef::Knife
|
25
|
+
|
26
|
+
deps do
|
27
|
+
require "chef/config" unless defined?(Chef::Config)
|
28
|
+
require "pp" unless defined?(PP)
|
29
|
+
require "socket" unless defined?(Socket)
|
30
|
+
require "uri" unless defined?(URI)
|
31
|
+
require "chef/http/ssl_policies" unless defined?(Chef::HTTP::DefaultSSLPolicy)
|
32
|
+
require "openssl" unless defined?(OpenSSL)
|
33
|
+
require "chef/mixin/proxified_socket" unless defined?(Chef::Mixin::ProxifiedSocket)
|
34
|
+
include Chef::Mixin::ProxifiedSocket
|
35
|
+
end
|
36
|
+
|
37
|
+
banner "knife ssl check [URL] (options)"
|
38
|
+
|
39
|
+
def initialize(*args)
|
40
|
+
@host = nil
|
41
|
+
@verify_peer_socket = nil
|
42
|
+
@ssl_policy = HTTP::DefaultSSLPolicy
|
43
|
+
super
|
44
|
+
end
|
45
|
+
|
46
|
+
def uri
|
47
|
+
@uri ||= begin
|
48
|
+
Chef::Log.trace("Checking SSL cert on #{given_uri}")
|
49
|
+
URI.parse(given_uri)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def given_uri
|
54
|
+
(name_args[0] || Chef::Config.chef_server_url)
|
55
|
+
end
|
56
|
+
|
57
|
+
def host
|
58
|
+
uri.host
|
59
|
+
end
|
60
|
+
|
61
|
+
def port
|
62
|
+
uri.port
|
63
|
+
end
|
64
|
+
|
65
|
+
def validate_uri
|
66
|
+
unless host && port
|
67
|
+
invalid_uri!
|
68
|
+
end
|
69
|
+
rescue URI::Error
|
70
|
+
invalid_uri!
|
71
|
+
end
|
72
|
+
|
73
|
+
def invalid_uri!
|
74
|
+
ui.error("Given URI: `#{given_uri}' is invalid")
|
75
|
+
show_usage
|
76
|
+
exit 1
|
77
|
+
end
|
78
|
+
|
79
|
+
def verify_peer_socket
|
80
|
+
@verify_peer_socket ||= begin
|
81
|
+
tcp_connection = proxified_socket(host, port)
|
82
|
+
ssl_client = OpenSSL::SSL::SSLSocket.new(tcp_connection, verify_peer_ssl_context)
|
83
|
+
ssl_client.hostname = host
|
84
|
+
ssl_client
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
def verify_peer_ssl_context
|
89
|
+
@verify_peer_ssl_context ||= begin
|
90
|
+
verify_peer_context = OpenSSL::SSL::SSLContext.new
|
91
|
+
@ssl_policy.apply_to(verify_peer_context)
|
92
|
+
verify_peer_context.verify_mode = OpenSSL::SSL::VERIFY_PEER
|
93
|
+
verify_peer_context
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
def noverify_socket
|
98
|
+
@noverify_socket ||= begin
|
99
|
+
tcp_connection = proxified_socket(host, port)
|
100
|
+
OpenSSL::SSL::SSLSocket.new(tcp_connection, noverify_peer_ssl_context)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def noverify_peer_ssl_context
|
105
|
+
@noverify_peer_ssl_context ||= begin
|
106
|
+
noverify_peer_context = OpenSSL::SSL::SSLContext.new
|
107
|
+
@ssl_policy.apply_to(noverify_peer_context)
|
108
|
+
noverify_peer_context.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
109
|
+
noverify_peer_context
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def verify_X509
|
114
|
+
cert_debug_msg = ""
|
115
|
+
trusted_certificates.each do |cert_name|
|
116
|
+
message = check_X509_certificate(cert_name)
|
117
|
+
unless message.nil?
|
118
|
+
cert_debug_msg << File.expand_path(cert_name) + ": " + message + "\n"
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
unless cert_debug_msg.empty?
|
123
|
+
debug_invalid_X509(cert_debug_msg)
|
124
|
+
end
|
125
|
+
|
126
|
+
true # Maybe the bad certs won't hurt...
|
127
|
+
end
|
128
|
+
|
129
|
+
def verify_cert
|
130
|
+
ui.msg("Connecting to host #{host}:#{port}")
|
131
|
+
verify_peer_socket.connect
|
132
|
+
true
|
133
|
+
rescue OpenSSL::SSL::SSLError => e
|
134
|
+
ui.error "The SSL certificate of #{host} could not be verified"
|
135
|
+
Chef::Log.trace e.message
|
136
|
+
debug_invalid_cert
|
137
|
+
false
|
138
|
+
end
|
139
|
+
|
140
|
+
def verify_cert_host
|
141
|
+
verify_peer_socket.post_connection_check(host)
|
142
|
+
true
|
143
|
+
rescue OpenSSL::SSL::SSLError => e
|
144
|
+
ui.error "The SSL cert is signed by a trusted authority but is not valid for the given hostname"
|
145
|
+
Chef::Log.trace(e)
|
146
|
+
debug_invalid_host
|
147
|
+
false
|
148
|
+
end
|
149
|
+
|
150
|
+
def debug_invalid_X509(cert_debug_msg)
|
151
|
+
ui.msg("\n#{ui.color("Configuration Info:", :bold)}\n\n")
|
152
|
+
debug_ssl_settings
|
153
|
+
debug_chef_ssl_config
|
154
|
+
|
155
|
+
ui.warn(<<~BAD_CERTS)
|
156
|
+
There are invalid certificates in your trusted_certs_dir.
|
157
|
+
OpenSSL will not use the following certificates when verifying SSL connections:
|
158
|
+
|
159
|
+
#{cert_debug_msg}
|
160
|
+
|
161
|
+
#{ui.color("TO FIX THESE WARNINGS:", :bold)}
|
162
|
+
|
163
|
+
We are working on documentation for resolving common issues uncovered here.
|
164
|
+
|
165
|
+
* If the certificate is generated by the server, you may try redownloading the
|
166
|
+
server's certificate. By default, the certificate is stored in the following
|
167
|
+
location on the host where your chef-server runs:
|
168
|
+
|
169
|
+
/var/opt/opscode/nginx/ca/SERVER_HOSTNAME.crt
|
170
|
+
|
171
|
+
Copy that file to your trusted_certs_dir (currently: #{configuration.trusted_certs_dir})
|
172
|
+
using SSH/SCP or some other secure method, then re-run this command to confirm
|
173
|
+
that the server's certificate is now trusted.
|
174
|
+
|
175
|
+
BAD_CERTS
|
176
|
+
# @TODO: ^ needs URL once documentation is posted.
|
177
|
+
end
|
178
|
+
|
179
|
+
def debug_invalid_cert
|
180
|
+
noverify_socket.connect
|
181
|
+
issuer_info = noverify_socket.peer_cert.issuer
|
182
|
+
ui.msg("Certificate issuer data: #{issuer_info}")
|
183
|
+
|
184
|
+
ui.msg("\n#{ui.color("Configuration Info:", :bold)}\n\n")
|
185
|
+
debug_ssl_settings
|
186
|
+
debug_chef_ssl_config
|
187
|
+
|
188
|
+
ui.err(<<~ADVICE)
|
189
|
+
|
190
|
+
#{ui.color("TO FIX THIS ERROR:", :bold)}
|
191
|
+
|
192
|
+
If the server you are connecting to uses a self-signed certificate, you must
|
193
|
+
configure #{ChefUtils::Dist::Infra::PRODUCT} to trust that server's certificate.
|
194
|
+
|
195
|
+
By default, the certificate is stored in the following location on the host
|
196
|
+
where your chef-server runs:
|
197
|
+
|
198
|
+
/var/opt/opscode/nginx/ca/SERVER_HOSTNAME.crt
|
199
|
+
|
200
|
+
Copy that file to your trusted_certs_dir (currently: #{configuration.trusted_certs_dir})
|
201
|
+
using SSH/SCP or some other secure method, then re-run this command to confirm
|
202
|
+
that the server's certificate is now trusted.
|
203
|
+
|
204
|
+
ADVICE
|
205
|
+
end
|
206
|
+
|
207
|
+
def debug_invalid_host
|
208
|
+
noverify_socket.connect
|
209
|
+
subject = noverify_socket.peer_cert.subject
|
210
|
+
cn_field_tuple = subject.to_a.find { |field| field[0] == "CN" }
|
211
|
+
cn = cn_field_tuple[1]
|
212
|
+
|
213
|
+
ui.error("You are attempting to connect to: '#{host}'")
|
214
|
+
ui.error("The server's certificate belongs to '#{cn}'")
|
215
|
+
ui.err(<<~ADVICE)
|
216
|
+
|
217
|
+
#{ui.color("TO FIX THIS ERROR:", :bold)}
|
218
|
+
|
219
|
+
The solution for this issue depends on your networking configuration. If you
|
220
|
+
are able to connect to this server using the hostname #{cn}
|
221
|
+
instead of #{host}, then you can resolve this issue by updating chef_server_url
|
222
|
+
in your configuration file.
|
223
|
+
|
224
|
+
If you are not able to connect to the server using the hostname #{cn}
|
225
|
+
you will have to update the certificate on the server to use the correct hostname.
|
226
|
+
ADVICE
|
227
|
+
end
|
228
|
+
|
229
|
+
def debug_ssl_settings
|
230
|
+
ui.err "OpenSSL Configuration:"
|
231
|
+
ui.err "* Version: #{OpenSSL::OPENSSL_VERSION}"
|
232
|
+
ui.err "* Certificate file: #{OpenSSL::X509::DEFAULT_CERT_FILE}"
|
233
|
+
ui.err "* Certificate directory: #{OpenSSL::X509::DEFAULT_CERT_DIR}"
|
234
|
+
end
|
235
|
+
|
236
|
+
def debug_chef_ssl_config
|
237
|
+
ui.err "#{ChefUtils::Dist::Infra::PRODUCT} SSL Configuration:"
|
238
|
+
ui.err "* ssl_ca_path: #{configuration.ssl_ca_path.inspect}"
|
239
|
+
ui.err "* ssl_ca_file: #{configuration.ssl_ca_file.inspect}"
|
240
|
+
ui.err "* trusted_certs_dir: #{configuration.trusted_certs_dir.inspect}"
|
241
|
+
end
|
242
|
+
|
243
|
+
def configuration
|
244
|
+
Chef::Config
|
245
|
+
end
|
246
|
+
|
247
|
+
def run
|
248
|
+
validate_uri
|
249
|
+
|
250
|
+
if verify_X509 && verify_cert && verify_cert_host
|
251
|
+
ui.msg "Successfully verified certificates from `#{host}'"
|
252
|
+
else
|
253
|
+
exit 1
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
private
|
258
|
+
|
259
|
+
def trusted_certificates
|
260
|
+
if configuration.trusted_certs_dir && Dir.exist?(configuration.trusted_certs_dir)
|
261
|
+
glob_dir = ChefConfig::PathHelper.escape_glob_dir(configuration.trusted_certs_dir)
|
262
|
+
Dir.glob(File.join(glob_dir, "*.{crt,pem}"))
|
263
|
+
else
|
264
|
+
[]
|
265
|
+
end
|
266
|
+
end
|
267
|
+
|
268
|
+
def check_X509_certificate(cert_file)
|
269
|
+
store = OpenSSL::X509::Store.new
|
270
|
+
cert = OpenSSL::X509::Certificate.new(IO.read(File.expand_path(cert_file)))
|
271
|
+
begin
|
272
|
+
store.add_cert(cert)
|
273
|
+
# test if the store can verify the cert we just added
|
274
|
+
unless store.verify(cert) # true if verified, false if not
|
275
|
+
return store.error_string
|
276
|
+
end
|
277
|
+
rescue OpenSSL::X509::StoreError => e
|
278
|
+
return e.message
|
279
|
+
end
|
280
|
+
nil
|
281
|
+
end
|
282
|
+
end
|
283
|
+
end
|
284
|
+
end
|