【问题标题】:How to use a Chef Windows reboot resource to reboot only once如何使用 Chef Windows 重启资源仅重启一次
【发布时间】:2020-05-15 03:49:20
【问题描述】:

我目前正在尝试在厨师资源中使用重启资源:

reboot 'ADS Install Complete' do
  action :nothing
  reason 'Cannot continue Chef run without a reboot.'
  only_if {reboot_pending?}
end

...

execute 'Initialize ADS Configuration INI' do
  command "\"#{node["ads-tfs-ini"]["tfsconfig_path"]}\" unattend \/create \/type:#{node["ads-tfs-ini"]["Scenario"]} \/unattendfile:\"#{node["ads-tfs-ini"]["unattend_file_path"]}\""
  only_if { ! "#{ENV['JAVA_HOME']}".to_s.empty? }
  notifies :request_reboot, 'reboot[ADS Install Complete]', :delayed
end

我得到一个无限循环的重启(客户端重启-->主厨客户端运行-->主厨客户端重新运行 run_list--客户端重启-->...)。我怎样才能只重启一次?

【问题讨论】:

    标签: windows chef-infra reboot


    【解决方案1】:

    您可以添加一些验证来检查计算机是否已重新启动一次。

    ruby_block "reboot" do
      unless File.exist?("C:\reboot") do
        block do
          Chef::Util::FileEdit.new('C:\reboot').write_file
          Chef::ShellOut.new("shutdown /r").run_command
        end
      end
    end
    

    这个解决方案不是很优雅,但它应该可以工作。重新启动在 ruby​​ 块内,只有在 C:\reboot 不存在时才会运行。如果该文件不存在,该块将创建该文件,然后调用重新启动。在第二次 chef 运行时,该文件将存在,因此不会触发重新启动。

    Here is the documention regarding ruby_block

    【讨论】:

      【解决方案2】:

      来自reboot厨师资源:

      使用 reboot 资源重启节点,这是在某些平台上进行某些安装的必要步骤。此资源支持在 Microsoft Windows、macOS 和 Linux 平台上使用。

      reboot 'name' do
        action :reboot_now
      end
      

      【讨论】:

        【解决方案3】:

        如果ENV['JAVA_HOME'] 不为空execute 资源中的 only_if 守卫使执行资源运行。很有可能,设置了这个环境变量,这就是为什么每次 Chef 运行时都会运行您的 execute 资源并触发重新启动。

        我的猜测,你是否真的需要一个相反的,运行资源,只有当变量为空。为此,您只需从行中删除 !

        only_if { ENV['JAVA_HOME'].to_s.empty? }
        

        如果我之前的猜测是错误的,那么您需要将您的 only_if 防护更改为更强大的东西。从命令行,我知道你创建了一些配置文件,所以当你的配置文件已经存在时,你不需要运行execute资源:

        not_if { ::File.exist?('/path/to/file/created/by/command') }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-03-12
          • 1970-01-01
          • 1970-01-01
          • 2011-11-01
          • 2014-05-14
          • 1970-01-01
          • 2020-10-12
          相关资源
          最近更新 更多