【发布时间】:2018-10-12 02:52:05
【问题描述】:
我有一本依赖于标签的食谱。它搜索具有给定标签的节点并使用search(:node, 'tag:MyTag') 获取它们的名称和IP。我将如何在测试厨房中模拟这个?
是否有我可以使用的模拟节点对象?它不必与其他节点通信我只是想测试search() 是否成功拉取正确的信息。
【问题讨论】:
标签: chef-infra chef-recipe test-kitchen
我有一本依赖于标签的食谱。它搜索具有给定标签的节点并使用search(:node, 'tag:MyTag') 获取它们的名称和IP。我将如何在测试厨房中模拟这个?
是否有我可以使用的模拟节点对象?它不必与其他节点通信我只是想测试search() 是否成功拉取正确的信息。
【问题讨论】:
标签: chef-infra chef-recipe test-kitchen
使用 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
{
"name": "demo1",
"normal": {
"tags": [
"DEMO=1"
]
}
}
{
"name": "demo2",
"normal": {
"tags": [
"DEMO=1"
]
}
}
我有一本使用这种技术测试 Jenkins master 和 slaves 的食谱
【讨论】:
或者,您可以为您的节点编辑测试 kitchen.yml 文件的套件部分。属性部分管理存储标签的普通属性:
- name: sand01
provisioner:
name: chef_zero
attributes:
tags:
- MyTag
【讨论】: