【问题标题】:How to test a chef recipe with encrypted data bags如何使用加密数据包测试厨师食谱
【发布时间】:2018-01-27 07:49:38
【问题描述】:

所以在我的食谱中,我有以下内容:

secret = Chef::EncryptedDataBagItem.load_secret("/root/.chef/encrypted_data_bag_secret")

# Decrypt the data bag
creds = Chef::EncryptedDataBagItem.load("passwords", "mysql-root", secret)

如何用我的测试数据覆盖这些行?该配方安装了一个 MySQL 数据库,因此,我想测试该数据库是否存在。

【问题讨论】:

    标签: chef-infra test-kitchen inspec


    【解决方案1】:

    我已经创建了单独的数据包用于测试所需的秘密并加载它们,如果它是一个测试厨房运行

    【讨论】:

    • 我第一次涉足测试厨房和厨师......你真的使用与 prod 相同的值吗?例如,我在 mysql 安装的数据包中设置了 root 密码。这是在食谱中设置的,但在测试厨房期间,如果我没有正确的密码,我的测试将失败。因此,我需要从加密数据包中引用密码。
    • 为什么不为测试环境设置不同的测试密码/acc ...我构建本地厨房虚拟机...所以我有不同的秘密 wrt prod
    • 好吧,配方引用了一个从加密数据包中使用的根密码。不会测试厨房运行并需要密码?但我认为你的意思是我可以一起从不同的数据包中读取配方?
    【解决方案2】:

    最好的方法是根本不使用加密包进行测试,将您的代码更改为使用data_bag_item() 帮助程序而不是底层类,它可以与两者一起使用。然后只需在test/integration/data_bags/ 中放入一些普通的数据包固定装置(或在您的配置中设置data_bags_path 以从其他地方加载)。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-14
    • 2016-09-18
    • 1970-01-01
    • 2017-04-27
    相关资源
    最近更新 更多