Skip to content

Instantly share code, notes, and snippets.

@NAshwini
Last active April 17, 2019 08:34
Show Gist options
  • Save NAshwini/8d73a8d708857b1759d25ed4b88be758 to your computer and use it in GitHub Desktop.
Save NAshwini/8d73a8d708857b1759d25ed4b88be758 to your computer and use it in GitHub Desktop.
$ git diff
diff --git a/attributes/default.rb b/attributes/default.rb
index 031205e..865ccef 100644
--- a/attributes/default.rb
+++ b/attributes/default.rb
@@ -46,3 +46,6 @@ default['chef_client_updater']['product_name'] = nil
# download URL for Sysinternals handle.zip (Windows only)
default['chef_client_updater']['handle_zip_download_url'] = nil
+
+# The Eventlog service will be restarted immediately prior to cleanup broken chef to release any open file locks.
+default['chef_client_updater']['event_log_service_restart'] = true
diff --git a/providers/default.rb b/providers/default.rb
index db75b4f..907a2f3 100644
--- a/providers/default.rb
+++ b/providers/default.rb
@@ -243,6 +243,12 @@ def cleanup
FileUtils.rm_rf chef_upgrade_log
end
end
+ if ::File.exist?(chef_broken_dir) && new_resource.event_log_service_restart
+ event_log_ps_code
+ converge_by("remove #{chef_broken_dir} from previous chef-client run") do
+ FileUtils.rm_rf chef_broken_dir
+ end
+ end
# When running under init this cron job is created after an update
cron 'chef_client_updater' do
action :delete
@@ -365,6 +371,17 @@ def open_handle_functions
EOH
end
+def event_log_ps_code
+ powershell_script 'name' do
+ code <<-EOH
+ $windows_kernel_version = (Get-WmiObject -class Win32_OperatingSystem).Version
+ if (-Not ($windows_kernel_version.Contains('6.0') -or $windows_kernel_version.Contains('6.1'))) {
+ Get-Service EventLog | Restart-Service -Force
+ }
+ EOH
+ end
+end
+
def execute_install_script(install_script)
if windows?
cur_version = Mixlib::Versioning.parse(current_version)
@@ -407,10 +424,6 @@ def execute_install_script(install_script)
Destroy-OpenChefHandles
}
- $windows_kernel_version = (Get-WmiObject -class Win32_OperatingSystem).Version
- if (-Not ($windows_kernel_version.Contains('6.0') -or $windows_kernel_version.Contains('6.1'))) {
- Get-Service EventLog | Restart-Service -Force
- }
Remove-Item "#{chef_install_dir}" -Recurse -Force
diff --git a/recipes/default.rb b/recipes/default.rb
index 6902719..8cf19a5 100644
--- a/recipes/default.rb
+++ b/recipes/default.rb
@@ -27,4 +27,5 @@ chef_client_updater 'update chef-client' do
upgrade_delay node['chef_client_updater']['upgrade_delay'] unless node['chef_client_updater']['upgrade_delay'].nil?
product_name node['chef_client_updater']['product_name'] if node['chef_client_updater']['product_name']
handle_zip_download_url node['chef_client_updater']['handle_zip_download_url'] if node['chef_client_updater']['handle_zip_download_url']
+ event_log_service_restart node['chef_client_updater']['event_log_service_restart']
end
diff --git a/resources/default.rb b/resources/default.rb
index e396e80..37a3bb3 100644
--- a/resources/default.rb
+++ b/resources/default.rb
@@ -45,3 +45,4 @@ attribute :upgrade_delay, kind_of: Integer, default: 60
attribute :product_name, kind_of: String, default: 'chef'
attribute :rubygems_url, kind_of: String
attribute :handle_zip_download_url, kind_of: String, default: 'https://download.sysinternals.com/files/Handle.zip'
+attribute :event_log_service_restart, kind_of: [TrueClass, FalseClass], default: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment