我有两个角色:
base.json
{
"chef_type": "role",
"default_attributes": {},
"description": "Base Machine",
"env_run_lists": {},
"json_class": "Chef::Role",
"name": "base",
"override_attributes": {},
"run_list": [
"recipe[apt]",
"recipe[clean-up]"
]
}
web.json ,其中包含基本角色
{
"chef_type": "role",
"default_attributes": {},
"description": "Web Machine",
"env_run_lists": {},
"json_class": "Chef::Role",
"name": "web",
"override_attributes": {},
"run_list": [
"role[base]",
"recipe[nginx]",
"recipe[clean-up]"
]
}
当我运行时,run_list将扩展为: recipe [apt] ,食谱[清理] ,食谱[nginx] 。请注意,它跳过了Web角色的最后一个配方[清理] 。为什么?无论如何,我是否可以强制重新运行食谱[清理] ?
答案 0 :(得分:2)
不,Chef是配置管理系统,而不是脚本运行器。
每个配方应该运行一次,让系统处于特定状态。
这是在很多阶段完成的:
更多详情here
主要思想是描述系统状态,并且如果系统处于所需状态,则能够运行N次而不更改系统。
您可以从基本角色中删除此配方,也可以执行"关闭"您确保在每个节点运行列表的末尾显示的角色。