代码之家  ›  专栏  ›  技术社区  ›  Scott

Chef节点在第一次引导期间不一致地将运行列表保存在服务器上-Azure缩放集vm

  •  1
  • Scott  · 技术社区  · 8 年前

    我目前正在托管一个运行Windows Server 2012 R2的Azure扩展集,该扩展名为chef.bootstrap.windows azure.chefclient。配置虚拟机后,扩展通过Azure门户报告它成功了,但是Chef服务器上的注册节点没有更新以保留提供的运行列表,并且第一次运行没有完全完成。这将导致随后的Chef客户端运行使用空运行列表执行。当我观察Chef服务器上的报告时,我看到一个状态为“无错误中止”的运行。

    通过查看windowsazure插件chef-client.log文件,我可以看到它试图执行运行列表,但似乎被以下致命错误中断

    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_功能、PowerShell_脚本和DSC_脚本。所有结果都以相同的错误结束。这是当前的脚本

    powershell_script 'Install IIS' do
      code 'Add-WindowsFeature Web-Server'
      guard_interpreter :powershell_script
      not_if "(Get-WindowsFeature -Name Web-Server).Installed"
    end
    

    如果我重写运行列表并手动调用Chef客户端,一切都会成功。我不知道这是Azure厨师分机、厨师客户还是食谱。

    据我所知,在交换必要的PEM文件、安装Chef客户端以及从服务器下载和缓存食谱时,与Chef服务器的通信看起来很好。但是,在随后的运行中会删除缓存,其中包含空的运行列表。以下是first-boot.json的内容:

    {"run_list":["recipe[example]"]}

    以下是正在播放的版本:

    • 厨师客户版本:14.1.12
    • Azure Chef扩展版本:1210.12.110.1001
    • 服务器版本:Windows Server 2012 R2

    你知道会发生什么吗?

    1 回复  |  直到 8 年前
        1
  •  0
  •   Scott    8 年前

    结果发现我的分析不正确,关于是哪个资源导致了这个问题。当使用dsc_脚本作为资源安装Web服务器时,第一次引导运行似乎失败。当使用以下PowerShell_脚本资源时,它成功并附加了运行列表以供将来运行。

    powershell_script 'Install IIS' do code 'Add-WindowsFeature Web-Server' guard_interpreter :powershell_script not_if "(Get-WindowsFeature -Name Web-Server).Installed" end

    推荐文章