我有一个用于部署应用程序的厨师食谱。每次运行配方时,它都会创建一个新的“发布”(带有当前时间戳)目录并删除旧的“发布”目录,只留下 5 个最近的“发布”目录。(类似于 Capistrano 的 keep_releases 的工作方式)。
要测试该功能,我需要运行我的“部署”配方 6 次并验证是否只有 5 个“发布”目录。似乎我无法在 run_list 中多次使用相同的配方。
有任何想法吗?
谢谢!
我有一个用于部署应用程序的厨师食谱。每次运行配方时,它都会创建一个新的“发布”(带有当前时间戳)目录并删除旧的“发布”目录,只留下 5 个最近的“发布”目录。(类似于 Capistrano 的 keep_releases 的工作方式)。
要测试该功能,我需要运行我的“部署”配方 6 次并验证是否只有 5 个“发布”目录。似乎我无法在 run_list 中多次使用相同的配方。
有任何想法吗?
谢谢!
2019 年更新:multiple_converge
如https://docs.chef.io/config_yml_kitchen.html中所述使用
旧解决方案:
您可以使用重复的套件名称将节点聚合两次(或多次)。
例如,在您的 .kitchen.yml 中运行两次“默认”套件:
suites:
- name: default
run_list:
- recipe[your-cookbook::recipe]
attributes:
- name: default
run_list:
- recipe[your-cookbook::recipe]
attributes:
但是,也许您想使用ChefSpec 对其进行测试,而不必每次都收敛一个节点。
现在测试厨房的配置器中有一个选项,允许您运行多个聚合。
下面的配置器配置将告诉 Chef 收敛 3 次:
provisioner:
name: chef_zero
product_name: chef
deprecations_as_errors: true
multiple_converge: 3
如果您使用厨房 dokken 来测试您的食谱,您可以在节点收敛后再次简单地执行“厨房收敛”。类似于在融合节点上再次运行 chef-client。