【问题标题】:kitchen-docker: How to run a shell command before kitchen convergekitchen-docker:如何在厨房收敛之前运行 shell 命令
【发布时间】:2017-05-05 15:55:55
【问题描述】:

当使用带有测试厨房的 vagrant 机器时,pre_create_command 允许您指定在创建 vagrant 机器之前在本地运行的命令。使用kitchen-docker 似乎不存在这样的配置选项,并且按照建议的here 弯曲chef_omnibus_url 不是一个选项。

为测试流浪者指定为pre_create_command 的脚本会生成一个本地厨师数据包。

有没有我忽略的解决方案?

【问题讨论】:

  • 你想做什么? (即:这个预配置命令应该做什么?)
  • 只是重复Tensibai所说的,请添加您想要完成的内容。

标签: docker chef-infra test-kitchen


【解决方案1】:

最佳实践包括 Rakefile 和 Thor。

本质上,您可以通过 Rakefile 控制您的测试。例如:

rake style

这将运行样式任务下的所有命令(可能是 lint/syntax/unit 和 kitchen 测试)。当然,您可以修改您的任务以执行您喜欢的任何操作。这里有一些很好的资源:

https://blog.chef.io/2015/04/21/overview-of-test-driven-infrastructure-with-chef/

请参阅支持工具和依赖项部分。

这是一个示例 Rakefile:

https://github.com/chef-cookbooks/chef-server/blob/master/Rakefile

【讨论】:

  • 这并不相关。
  • 感谢您的回答,但我认为答案不适合我的问题,因为我说的是单一的厨房测试,而不是完整的测试链。
  • 我不知道您的用例是什么,但是,如果您在厨房融合之前尝试执行某种逻辑,则运行 Rakefile 效果很好。您不需要运行“套件”测试。可以很简单地调用您描述的 shell 脚本和调用 kitchen 会聚。因为它只是 ruby​​/rake,所以它是 100% 灵活的。
【解决方案2】:

我为 kitchen-docker here 绘制了一个补丁。然而,正如关于此拉取请求的讨论所显示的那样,存在反对在 kitchen-docker 中使用适当功能的论点,即此类功能(如果有的话)应该放在厨房核心中的功能。

因此,我们暂时不得不忍受 docker 和 vagrant 之间的这种不一致,这就是 thun 的答案发挥作用的地方。

【讨论】:

    【解决方案3】:

    这可以使用

    driver_config:
      provision_command: <command>
    

    kitchen.yml

    查看更多here

    氪,

    Rshad

    【讨论】:

      猜你喜欢
      • 2016-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-18
      相关资源
      最近更新 更多