我怎样才能多次获得测试厨房 运行 相同的厨师食谱?

How can I get test kitchen run same chef recipe multiple times?

我有一个用于部署应用程序的厨师食谱。每次配方 运行s 它都会创建一个新的 "release"(带有当前时间戳)目录并删除旧的 "release" 目录,只留下 5 个最新的 "release" 目录。 (类似于 Capistrano 的 keep_releases 的工作方式)。

为了测试该功能,我需要 运行 我的 "deploy" 食谱 6 次并验证只有 5 个 "release" 目录。看来我不能在 run_list 中多次使用相同的食谱。

有什么想法吗?

谢谢!

2019 年更新:使用 multiple_converge,如 https://docs.chef.io/config_yml_kitchen.html

中所述

旧解:

您可以使用重复的套件名称来收敛一个节点两次(或更多次)。

例如在你的 .kitchen.yml 到 运行 "default" 套件中两次:

suites:
  - name: default
    run_list:
      - recipe[your-cookbook::recipe]
    attributes:
  - name: default
    run_list:
      - recipe[your-cookbook::recipe]
    attributes:

然而,也许您想使用 ChefSpec 来测试它,而不必每次都收敛一个节点。

Tested with test-kitchen 1.4.0 + kitchen-vagrant 0.18.0

如果您使用 kitchen dokken 来测试您的食谱,您可以在节点收敛后再次执行 'kitchen converge'。在聚合节点上再次与 运行 chef-client 类似。

现在 Test Kitchen 的配置器中有一个选项,允许您 运行 多个聚合。

下面的供应器配置将告诉 Chef 收敛 3 次:

provisioner:
  name: chef_zero
  product_name: chef
  deprecations_as_errors: true
  multiple_converge: 3