由于假定的正则表达式不匹配,在EncryptedDataBagItem.load期间Chef :: Exceptions :: ValidationFailed错误

时间:2016-02-25 00:35:32

标签: ruby chef chef-recipe

我引导了一个节点,其中一个菜谱在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。

提前感谢您对此事的任何帮助!

1 个答案:

答案 0 :(得分:0)

对于未来,我们非常确定这是DataBagItem.to_hash改变其数据的错误的副作用。将在Chef的下一个版本中修复。