Chef infra 用于Windows注册表输入的ascii码

Chef infra 用于Windows注册表输入的ascii码,chef-infra,Chef Infra,使用Chef为IIS8.5 SSL绑定创建注册表值,因为我发现创建此值的唯一方法是通过IIS管理器 我试图在windows cookbook中使用以下内容,但在转义此二进制数据的数据部分中的字符时遇到问题。\,',“不要在这里工作 registry_key "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\HTTP\\Parameters\\SslCcsBindingInfo\\443" do values [{:name

使用Chef为IIS8.5 SSL绑定创建注册表值,因为我发现创建此值的唯一方法是通过IIS管理器

我试图在windows cookbook中使用以下内容,但在转义此二进制数据的数据部分中的字符时遇到问题。\,',“不要在这里工作

registry_key "HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\HTTP\\Parameters\\SslCcsBindingInfo\\443" do
    values [{:name => "AppId", :type => :binary, :data => "?áAMKá!J°"Yüf> ¶"},
            {:name => "CertStoreLocation", :type => :binary, :data => ""}
           ]
    action :create
end

对于二进制数据编码,最好使用base64的字符串文字:

require 'base64'
values [{:data => Base64.decode64("YmluYXJ5ZGF0YQ==")}]
或者使用
\x
转义序列:

values [{:data => "\x45\xA0\xFF\x00"}]

对于二进制值,我使用了类似于regedit的显示格式:

binstring = [<<BINARY_HEX.tr('^0-9A-Fa-f','')].pack('H*')
08 00 00 00 00 00 00 00
6F 00 77 00 00 00 00 00
00 00 00 00 00 00
BINARY_HEX

registry_key 'HKCU\Software\Something\Item' do
  values [{:name => 'ABinaryValue', :type => :binary, :data => binstring},
         ]
  action :create
end
binstring=[:binary,:data=>binstring},
]
行动:创建
结束
这使得在注册表编辑器中直观地比较二进制值与配方中的预期值变得更容易


Ref:

转义序列对我来说很有效。不过我想知道,如果在Chef中,您能让它修改十六进制数据而不是二进制注册表项中的ASCII数据,这会让生活更轻松吗?