【问题标题】:How do I test cookbooks in test kitchen that depend on tags?如何在测试厨房中测试依赖标签的食谱?
【发布时间】:2018-10-12 02:52:05
【问题描述】:

我有一本依赖于标签的食谱。它搜索具有给定标签的节点并使用search(:node, 'tag:MyTag') 获取它们的名称和IP。我将如何在测试厨房中模拟这个?

是否有我可以使用的模拟节点对象?它不必与其他节点通信我只是想测试search() 是否成功拉取正确的信息。

【问题讨论】:

    标签: chef-infra chef-recipe test-kitchen


    【解决方案1】:

    使用 serverspec 时,chef-zero 将使用目录 test/integration/ 作为默认 repo 位置。在这里您可以放置​​一些节点文件来模拟连接到同一厨师服务器的其他节点。

    ├── Berksfile
    ├── chefignore
    ├── metadata.rb
    ├── README.md
    ├── recipes
    │   └── default.rb
    └── test
        └── integration
            ├── default
            │   └── serverspec
            │       └── default_spec.rb
            ├── helpers
            │   └── serverspec
            │       └── spec_helper.rb
            └── nodes
                ├── demo1.json
                └── demo2.json
    

    demo1.json

    {
      "name": "demo1",
      "normal": {
        "tags": [
          "DEMO=1"
        ]
      }
    }
    

    demo2.json

    {
      "name": "demo2",
      "normal": {
        "tags": [
          "DEMO=1"
        ]
      }
    }
    

    更新

    我有一本使用这种技术测试 Jenkins master 和 slaves 的食谱

    【讨论】:

    • 这不是特定于 serverspec,并且适用于零和单独的供应商。
    【解决方案2】:

    或者,您可以为您的节点编辑测试 kitchen.yml 文件的套件部分。属性部分管理存储标签的普通属性:

    - name: sand01
    provisioner:
      name: chef_zero
    attributes:
      tags:
        - MyTag
    

    【讨论】:

      猜你喜欢
      • 2020-09-04
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2017-04-27
      • 2021-03-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多