如何在依赖于标签的测试厨房中测试食谱?
How do I test cookbooks in test kitchen that depend on tags?
我有一本依赖标签的食谱。它搜索具有给定标签的节点,并使用 search(:node, 'tag:MyTag')
获取它们的名称和 IP。我如何在测试厨房中对此进行模拟?
有我可以使用的模拟节点对象吗?它不必与其他节点通信我只是想测试 search()
是否成功提取了正确的信息。
使用 serverspec 时,chef-zero 将使用目录 test/integration/
作为默认存储库位置。在这里您可以放置一些节点文件来模拟连接到同一 Chef 服务器的其他节点。
├── 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 的食谱
或者,您可以为您的节点编辑测试 kitchen.yml 文件的套件部分。属性部分管理您的普通属性,这是存储标签的地方:
- name: sand01
provisioner:
name: chef_zero
attributes:
tags:
- MyTag
我有一本依赖标签的食谱。它搜索具有给定标签的节点,并使用 search(:node, 'tag:MyTag')
获取它们的名称和 IP。我如何在测试厨房中对此进行模拟?
有我可以使用的模拟节点对象吗?它不必与其他节点通信我只是想测试 search()
是否成功提取了正确的信息。
使用 serverspec 时,chef-zero 将使用目录 test/integration/
作为默认存储库位置。在这里您可以放置一些节点文件来模拟连接到同一 Chef 服务器的其他节点。
├── 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 的食谱
或者,您可以为您的节点编辑测试 kitchen.yml 文件的套件部分。属性部分管理您的普通属性,这是存储标签的地方:
- name: sand01
provisioner:
name: chef_zero
attributes:
tags:
- MyTag