【发布时间】:2015-09-12 13:28:58
【问题描述】:
我正在尝试使用 Chef 自动安装/部署旧版本的 Windows 产品(特别是 Sharepoint 2007),而且我几乎可以让它工作,但是在安装过程中的某个时刻,安装程序遇到“应用程序兼容性”问题,并弹出一个窗口询问是否继续。如果我点击继续,安装会一直持续到最后,并且可以正常运行。
我找到了一种避免弹出窗口的方法,方法是在 Windows 注册表中添加“Appcompat”键,但如果我在 Chef 运行期间使用 regedit 添加键,我必须让 Chef 重新启动机器,然后之后继续进行其余的安装。
我尝试过类似以下的食谱:
reboot 'Restart Computer' do
action :nothing
end
powershell_script "install-Sharepoint2007-PREREQUISITES" do
code <<-EOH
regedit /s .\appcompat.reg
EOH
notifies :reboot_now, 'reboot[Restart Computer]', :immediately
end
powershell_script "install-Sharepoint2007" do
code <<-EOH
... the rest of the installation....
EOH
notifies :reboot_now, 'reboot[Restart Computer]', :immediately
end
但在设置注册表项后重新启动后,处理基本上停止了。
所以我想知道:有没有办法用 Chef 做到这一点?
谢谢, 吉姆
编辑:
由于缺少格式,我发现仅使用 cmets 很难,因此我在此处添加有关我迄今为止尝试过的信息。
基本上,到目前为止,我可以让厨师客户端在计划任务中运行的唯一方法是执行“ONCE”计划任务,设置任务运行的时间(到目前为止,我手动设置我的 schtasks 命令中的时间,只是为了测试)。
当我这样做并将“/RU”设置为 SYSTEM 时,我可以看到“chef-client -o”开始运行并且它实际上似乎已完成,但我在 Sharepoint 安装程序日志中看到错误,并且特别是,psconfig(Sharepoint 命令行配置工具)中的某些步骤似乎失败了。
我认为/猜测这些失败的原因是 schtasks 以错误的 Windows 用户身份运行“chef-client -o”。
问题是,如果我“手动”运行第二部分食谱中的“chef-client -o”,即,如果我登录到 Windows 机器并输入:
chef-client -o install-SHAREPOINT-PART2
然后,Sharepoint 会被正确安装和配置。
所以,我现在遇到的问题是,当我通过 schtasks 执行相同的“chef-client -o”命令时,我应该将什么用作 schtasks 命令的“/RU”和“/RP”?
谢谢, 吉姆
编辑 2:抱歉,我忘记在第一个食谱/食谱中包含 schtasks 行,它为第二个食谱/食谱厨师运行设置任务:
schtasks /create /tn Task_Name /tr "chef-client -o install-SHAREPOINT2007FULL-PART2" /sc once /RU "SYSTEM" /SD 06/27/2015 /ST 12:30
编辑 3:我正在研究这个问题的最初原因(让 Chef “通过”重新启动工作)是作为安装 Sharepoint 的一部分,我必须设置一个 Windows 注册表项,我认为我必须重新启动使该注册表更改对安装过程的其余部分有效。
但是,我昨天做了一些测试,看来情况并非如此。我可以更改注册表,然后进行其余的安装,而无需在其间重新启动。
所以,最重要的是我根本不需要在重启后处理。
但无论如何,希望这里的一些信息可以帮助以后的人。我发现的主要问题是我无法使用 ONSTART 和 /Z /V1 让它工作......我必须使用 ONCE 并且必须在我的 Chef 食谱中添加代码来确定日期和时间触发 ONCE 任务。
【问题讨论】:
-
RFC 62 提出了厨师重启问题的解决方案。 github.com/chef/chef-rfc/blob/master/rfc062-exit-status.md
标签: windows scheduled-tasks chef-infra chef-recipe