如何使用Knife上传加密数据袋?Chef Server迁移遇加密数据袋问题
解决Chef Server加密数据袋迁移的分步指南
嘿,我来帮你一步步搞定这个加密数据袋迁移的问题!从旧Chef Server把Vault数据迁移到新服务器,核心就是解密旧数据→在新服务器重新加密上传,具体操作如下:
第一步:确认Knife已连接新Chef Server
首先得确保你的Knife工具能正常访问新服务器。可以直接切换本地Chef仓库的.chef/knife.rb配置到新服务器,或者用--config参数指定新配置文件,然后测试连接:
knife client list --config /path/to/new-chef-repo/.chef/knife.rb
如果能列出客户端列表,说明连接正常,可以继续下一步。
第二步:解密旧Vault中的数据(如果还没解密)
你已经用knife vault download keys sri_keytab sri.keytab下载了文件,但如果这个文件还是加密状态,需要用旧Chef Server的Vault密钥解密。确保你能临时访问旧服务器,或者已经拿到旧的加密密钥文件(通常在~/.chef/encrypted_data_bag_secret),执行解密命令:
# 用旧服务器的配置解密 knife vault decrypt keys sri_keytab --file sri_decrypted.keytab --config /path/to/old-chef-repo/.chef/knife.rb
如果下载的sri.keytab已经是解密后的文件,这步可以直接跳过。
第三步:在新Chef Server上准备Vault环境
先创建对应的数据袋(如果新服务器上还没有):
knife data bag create keys --config /path/to/new-chef-repo/.chef/knife.rb
接下来要确认加密密钥:
- 如果你想复用旧服务器的加密密钥,把旧的
encrypted_data_bag_secret文件复制到新Chef Server的所有相关节点(包括服务器本身)的/etc/chef/encrypted_data_bag_secret路径; - 如果想用新密钥,直接生成新的密钥文件即可(
openssl rand -base64 512 > encrypted_data_bag_secret),记得分发给所有需要访问该数据袋的节点。
第四步:重新加密并上传到新Vault
现在用新服务器的配置,把解密后的keytab重新加密上传到新Vault:
knife vault create keys sri_keytab \ --file sri_decrypted.keytab \ --admins <你的Chef管理员用户名> \ --clients <需要访问该keytab的节点名称> \ --config /path/to/new-chef-repo/.chef/knife.rb
这里的参数说明:
--admins:指定能管理这个Vault的Chef用户;--clients:指定允许读取该数据袋的节点,多个节点用逗号分隔,如需所有节点可写'*'(不推荐,建议最小权限原则)。
第五步:验证迁移结果
上传完成后,验证数据是否正常:
# 查看解密后的内容 knife vault show keys sri_keytab --decrypted --config /path/to/new-chef-repo/.chef/knife.rb # 或者下载到本地对比原文件 knife vault download keys sri_keytab sri_verified.keytab --config /path/to/new-chef-repo/.chef/knife.rb
如果内容和原文件一致,说明迁移成功,节点运行配方时就不会再出现解密错误啦!
注意事项
- 确保新旧Chef Server的Knife Vault版本兼容,版本差异可能导致加密格式不兼容;
- 加密密钥的分发一定要到位,所有需要访问该数据袋的节点必须有对应的密钥文件,否则会解密失败;
- 如果迁移多个Vault项,可以批量处理,避免重复操作。
内容的提问来源于stack exchange,提问作者Srikarsh Vardhanreddy Kolanu
相关产品推荐
相关产品推荐

