azure - Chef 节点在首次启动期间未始终在服务器上保存运行列表 - Azure 规模集 VM
问题描述
我目前正在托管一个运行 Windows Server 2012 R2 的 Azure 规模集,该集使用 Chef 扩展 (Chef.Bootstrap.WindowsAzure.ChefClient) 进行设置。预配 VM 时,扩展通过 Azure 门户报告它已成功,但是 Chef 服务器上的注册节点未更新以保留提供的运行列表,并且第一次运行未完全完成。这导致后续的 chef-client 运行以空运行列表执行。当我观察厨师服务器上的报告时,我看到运行状态为 aborted 而没有错误。
在查看 WindowsAzure 插件 chef-client.log 文件后,我可以看到它尝试执行运行列表,但似乎被以下 FATAL 中断
FATAL: Errno::EINVAL: Invalid argument @ io_writev - <STDOUT>
也没有创建 chef-stacktrace.out 文件。ARM 扩展定义如下所示:
{
"type": "extensions",
"name": "ChefClient",
"properties": {
"publisher": "Chef.Bootstrap.WindowsAzure",
"type": "ChefClient",
"typeHandlerVersion": "1210.12",
"autoUpgradeMinorVersion": true,
"settings": {
"client_rb": "ssl_verify_mode :verify_none\nnode_name ENV[\"COMPUTERNAME\"]",
"runlist": "recipe[example]",
"autoUpdateClient": "false",
"deleteChefConfig": "false",
"bootstrap_options": {
"chef_server_url": "https://mychefserver.com/organizations/myorg",
"validation_client_name": "myorg-validator",
"environment": "dev"
}
},
"protectedSettings": {
"validation_key": "-----BEGIN RSA PRIVATE KEY----- ... -----END RSA PRIVATE KEY----"
}
}
}
为了进行故障排除,我尝试将我的example
食谱缩减为安装 IIS 的单个 DSC 脚本。即使是这一步,我也以多种方式执行它,例如使用 windows_feature、powershell_script 和 dsc_script。所有结果都以相同的错误结束。这是当前脚本
powershell_script 'Install IIS' do
code 'Add-WindowsFeature Web-Server'
guard_interpreter :powershell_script
not_if "(Get-WindowsFeature -Name Web-Server).Installed"
end
如果我覆盖运行列表并手动调用 chef-client,一切都会成功。我无法确定这是 Azure Chef Extension、Chef 客户端还是说明书。
据我所知,与 Chef 服务器的通信看起来不错,因为交换了必要的 pem 文件,安装了 chef-client,并且从服务器下载并缓存了说明书。缓存在随后的运行中被删除,但是运行列表为空。以下是 first-boot.json 的内容:
{"run_list":["recipe[example]"]}
以下是正在播放的版本:
- 厨师客户端版本:14.1.12
- Azure 厨师扩展版本:1210.12.110.1001
- 服务器版本:Windows Server 2012 R2
任何想法可能会发生什么?
解决方案
事实证明,我对导致问题的资源的分析是不正确的。使用 dsc_script 作为安装 Web 服务器的资源时,似乎第一次引导运行失败。使用以下 powershell_script 资源时,它成功并附加了运行列表以供将来运行。
powershell_script 'Install IIS' do
code 'Add-WindowsFeature Web-Server'
guard_interpreter :powershell_script
not_if "(Get-WindowsFeature -Name Web-Server).Installed"
end
推荐阅读
- reactjs - 错误:应用程序(...):渲染没有返回任何内容。这通常意味着缺少 return 语句。或者,不渲染任何内容,返回 null
- crafter-cms - CrafterCMS WebDAV 配置交付
- deep-learning - 在 colab 笔记本中设置 roBERTa 模型时出错
- google-sheets - 在数组公式中使用 INDIRECT
- ios - 无法在我的 iOS 设备中运行我的 Flutter 应用程序 - 无法注册 Bundle Identifier
- java - 错误:无法找到或加载主类 -Dcucumber.options=--plugin io.qameta.allure.cucumber4jvm.AllureCucumber4Jvm
- android - 我收到此错误:无法解析符号:“@android:style/Widget.Material.Light.Button.TextButton”
- html - 如何在弹性项目之间添加空格(如在装订线中)?
- spring - 当“spring-boot-starter-web-services”启动器与 Spring Boot 版本的 2.1.13.RELEASE 一起使用时,Maven 构建失败
- android - Android 库更新导致构建时间错误