From 8bbfabdba2fcdd38b143b5a62f27791a4a9a1dbb Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 16:07:37 -0600 Subject: [PATCH 01/10] ensure config properties directories exist create the various directories defined in the properties if they are defined and don't exist Signed-off by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index df97d7cc2f4..1c943975872 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -250,8 +250,10 @@ def string_to_symbol(prop_val) introduced: "17.8" action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do - unless ::Dir.exist?(new_resource.config_directory) - directory new_resource.config_directory do + [new_resource.config_directory, new_resource.log_location, new_resource.file_backup_path, new_resource.file_cache_path].each do |dir_path| + next if ::Dir.exist?(new_resource.config_directory) + next if dir_path.nil? + directory dir_path do user new_resource.user unless new_resource.user.nil? group new_resource.group unless new_resource.group.nil? mode "0750" From a7eb3884d3072f20894487fc08ca2d78b114cd29 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 16:21:47 -0600 Subject: [PATCH 02/10] remove extra dir block Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index 1c943975872..c2c8c15b215 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -250,9 +250,16 @@ def string_to_symbol(prop_val) introduced: "17.8" action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do - [new_resource.config_directory, new_resource.log_location, new_resource.file_backup_path, new_resource.file_cache_path].each do |dir_path| - next if ::Dir.exist?(new_resource.config_directory) + [ + new_resource.config_directory, + new_resource.log_location, + new_resource.file_backup_path, + new_resource.file_cache_path, + ::File.join(new_resource.config_directory, "client.d"), + ::File.dirname(new_resource.pid_file) + ].each do |dir_path| next if dir_path.nil? + next if ::Dir.exist?(dir_path) directory dir_path do user new_resource.user unless new_resource.user.nil? group new_resource.group unless new_resource.group.nil? @@ -261,15 +268,6 @@ def string_to_symbol(prop_val) end end - unless ::Dir.exist?(::File.join(new_resource.config_directory, "client.d")) - directory ::File.join(new_resource.config_directory, "client.d") do - user new_resource.user unless new_resource.user.nil? - group new_resource.group unless new_resource.group.nil? - mode "0750" - recursive true - end - end - template ::File.join(new_resource.config_directory, "client.rb") do source ::File.expand_path("support/client.erb", __dir__) user new_resource.user unless new_resource.user.nil? From 6173e5f9b2958d9cf8b3b874cf5f61b7530bbb3d Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 16:35:15 -0600 Subject: [PATCH 03/10] fix log_location directory Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index c2c8c15b215..209380d5b25 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -252,7 +252,7 @@ def string_to_symbol(prop_val) action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do [ new_resource.config_directory, - new_resource.log_location, + ::File.dirname(new_resource.log_location), new_resource.file_backup_path, new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), From fa4c197458ac9def6ea10cde0b228f785755075f Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 16:51:51 -0600 Subject: [PATCH 04/10] add safe navigation Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index 209380d5b25..bf5df2e9988 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -252,18 +252,18 @@ def string_to_symbol(prop_val) action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do [ new_resource.config_directory, - ::File.dirname(new_resource.log_location), + ::File&.dirname(new_resource.log_location), new_resource.file_backup_path, new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), - ::File.dirname(new_resource.pid_file) + ::File&.dirname(new_resource.pid_file) ].each do |dir_path| next if dir_path.nil? next if ::Dir.exist?(dir_path) directory dir_path do user new_resource.user unless new_resource.user.nil? group new_resource.group unless new_resource.group.nil? - mode "0750" + mode dir_path == ::File&.dirname(new_resource.log_location) ? "0755" : "0750" recursive true end end From 39e7f2ea265ff842cd82a55ab0977a8c6152df33 Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 17:14:40 -0600 Subject: [PATCH 05/10] linting fixes Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index bf5df2e9988..2fe7a3e8f43 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -256,10 +256,11 @@ def string_to_symbol(prop_val) new_resource.file_backup_path, new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), - ::File&.dirname(new_resource.pid_file) + ::File&.dirname(new_resource.pid_file), ].each do |dir_path| next if dir_path.nil? next if ::Dir.exist?(dir_path) + directory dir_path do user new_resource.user unless new_resource.user.nil? group new_resource.group unless new_resource.group.nil? From 2b20eee44b4bb9c0572d1a62c295aa14901f19cc Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 17:23:53 -0600 Subject: [PATCH 06/10] test Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index 2fe7a3e8f43..03e6e365bf3 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -252,11 +252,11 @@ def string_to_symbol(prop_val) action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do [ new_resource.config_directory, - ::File&.dirname(new_resource.log_location), + ::File.dirname(new_resource.log_location), new_resource.file_backup_path, new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), - ::File&.dirname(new_resource.pid_file), + ::File.dirname(new_resource.pid_file), ].each do |dir_path| next if dir_path.nil? next if ::Dir.exist?(dir_path) From 2a84babf282ef59e1515efb66be2620aa2fb3f4a Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 17:30:13 -0600 Subject: [PATCH 07/10] update kitchen-test end_to_end recipes _chef_client_config.rb Signed-off-by: Corey Hemminger --- .../cookbooks/end_to_end/recipes/_chef_client_config.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb b/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb index c2a6e4254b4..8ce31693d66 100644 --- a/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb +++ b/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb @@ -1,5 +1,6 @@ chef_client_config "Create chef-client's client.rb" do chef_server_url "https://localhost" + log_location windows? ? 'C:\\chef\\log_test\client.log' : '/var/log/chef/log_test/client.log' chef_license "accept" ohai_optional_plugins %i{Passwd Lspci Sysctl} ohai_disabled_plugins %i{Sessions Interrupts} From dbd9e02a67ed5d8cfa4534c6025015d87ca34ccc Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 17:35:43 -0600 Subject: [PATCH 08/10] linting fix and safe navigation fix Signed-off-by: Corey Hemminger --- .../cookbooks/end_to_end/recipes/_chef_client_config.rb | 2 +- lib/chef/resource/chef_client_config.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb b/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb index 8ce31693d66..31dac49fc65 100644 --- a/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb +++ b/kitchen-tests/cookbooks/end_to_end/recipes/_chef_client_config.rb @@ -1,6 +1,6 @@ chef_client_config "Create chef-client's client.rb" do chef_server_url "https://localhost" - log_location windows? ? 'C:\\chef\\log_test\client.log' : '/var/log/chef/log_test/client.log' + log_location windows? ? "C:\\chef\\log_test\\client.log" : "/var/log/chef/log_test/client.log" chef_license "accept" ohai_optional_plugins %i{Passwd Lspci Sysctl} ohai_disabled_plugins %i{Sessions Interrupts} diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index 03e6e365bf3..6709e7b7a61 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -257,7 +257,7 @@ def string_to_symbol(prop_val) new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), ::File.dirname(new_resource.pid_file), - ].each do |dir_path| + ]&.each do |dir_path| next if dir_path.nil? next if ::Dir.exist?(dir_path) From 58ee2ef63d83f841946ef5a2743e2dc6efcadb3c Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Mon, 27 Dec 2021 17:47:41 -0600 Subject: [PATCH 09/10] test Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index 6709e7b7a61..7677de33d68 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -252,12 +252,12 @@ def string_to_symbol(prop_val) action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do [ new_resource.config_directory, - ::File.dirname(new_resource.log_location), + (::File.dirname(new_resource.log_location) unless new_resource.log_location.nil?), new_resource.file_backup_path, new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), - ::File.dirname(new_resource.pid_file), - ]&.each do |dir_path| + (::File.dirname(new_resource.pid_file) unless new_resource.pid_file.nil?), + ].each do |dir_path| next if dir_path.nil? next if ::Dir.exist?(dir_path) From 8f82ea2e228590e0a3fe13d313cd82855872360b Mon Sep 17 00:00:00 2001 From: Corey Hemminger Date: Wed, 5 Jan 2022 13:58:37 -0600 Subject: [PATCH 10/10] add changes from lamont's review Signed-off-by: Corey Hemminger --- lib/chef/resource/chef_client_config.rb | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/lib/chef/resource/chef_client_config.rb b/lib/chef/resource/chef_client_config.rb index 7677de33d68..e02010a147f 100644 --- a/lib/chef/resource/chef_client_config.rb +++ b/lib/chef/resource/chef_client_config.rb @@ -249,7 +249,7 @@ def string_to_symbol(prop_val) description: "The data collector token to interact with the data collector server URL (Automate). Note: If possible, use Chef Infra Server to do all data collection reporting, as this removes the need to distribute tokens to individual nodes.", introduced: "17.8" - action :create, description: "Create a client.rb config file for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do + action :create, description: "Create a client.rb config file and folders for configuring #{ChefUtils::Dist::Infra::PRODUCT}." do [ new_resource.config_directory, (::File.dirname(new_resource.log_location) unless new_resource.log_location.nil?), @@ -257,14 +257,12 @@ def string_to_symbol(prop_val) new_resource.file_cache_path, ::File.join(new_resource.config_directory, "client.d"), (::File.dirname(new_resource.pid_file) unless new_resource.pid_file.nil?), - ].each do |dir_path| - next if dir_path.nil? - next if ::Dir.exist?(dir_path) + ].compact.each do |dir_path| directory dir_path do user new_resource.user unless new_resource.user.nil? group new_resource.group unless new_resource.group.nil? - mode dir_path == ::File&.dirname(new_resource.log_location) ? "0755" : "0750" + mode dir_path == ::File.dirname(new_resource.log_location) ? "0755" : "0750" recursive true end end