我引导了一个节点,其中一个菜谱在11月份与Chef-client合作得很好,不幸的是下面的代码:
45: #Configure PostgreSQL cluster -- create pertinent databases, users, and groups based on uploaded, decrypted shell here-document.
47>> here_doc_name = Chef::EncryptedDataBagItem.load("database_configs", "tlcworx_#{node["tlcworx_db"]["environment"]}")["filename"]
48: here_doc_content = Chef::EncryptedDataBagItem.load("database_configs", "tlcworx_#{node["tlcworx_db"]["environment"]}")["content"]
49:
50: open("#{node["tlcworx_db"]["tmp_dir"]}/#{here_doc_name}", 'w') { |f| f.puts here_doc_content }
已呈现以下停止引导程序的错误:
Chef::Exceptions::ValidationFailed: Option data_bag's value {"encrypted_data"=>"PffgOkpIpdoEJO8khrUOUQwqv2/vqrtzOf1U/z/a5xD4KqSH2/CkD1zHndzW\nwJL1\n", "iv"=>"d/kiiPRQWQoKBTU5WF8NPw==\n", "version"=>1, "cipher"=>"aes-256-cbc"} does not match regular expression /^[\-[:alnum:]_]+$/
显然,我通过刀CLI参数提供了与我之前相同的--secret-file
。正在运行knife data bag edit database_configs tlcworx_uat --secret-file /path/to/secret.pem
会正确解密菜谱内容,并且不会出错。我之前从未见过这个错误,在查看此错误的其他实例时,我发现它们涉及直接的CLI操作,其中有问题的数据包未命名,例如this instance。同样,这只是在服务器的主厨 - 客户端与远程厨师服务器进行通信时才进行引导。
我希望有人可以提供一些有关可能导致错误的信息。 Chef客户端版本是12.7.2。
提前感谢您对此事的任何帮助!
答案 0 :(得分:0)
对于未来,我们非常确定这是DataBagItem.to_hash
改变其数据的错误的副作用。将在Chef的下一个版本中修复。