Deployment 如何在chef中查询角色内部的属性?
我使用的是10.16.2版Deployment 如何在chef中查询角色内部的属性?,deployment,chef-infra,Deployment,Chef Infra,我使用的是10.16.2版 我有一个角色(ruby格式)。我需要访问其中一本食谱中的属性集 例如 我正在使用chef solo,因此无法使用上给出的搜索 如何访问角色定义中的节点属性 不确定我是否100%遵循,但如果您希望访问由配方中的角色设置的属性,则只需像调用任何其他节点属性一样调用它。例如,在您介绍的示例中,假设节点在其run_列表中具有basebox角色,您只需调用: node['rbenv']['group_users'] 角色属性将合并到节点中 HTH角色是JSON数据 也就是说,
我有一个角色(ruby格式)。我需要访问其中一本食谱中的属性集 例如 我正在使用chef solo,因此无法使用上给出的搜索
如何访问角色定义中的节点属性 不确定我是否100%遵循,但如果您希望访问由配方中的角色设置的属性,则只需像调用任何其他节点属性一样调用它。例如,在您介绍的示例中,假设节点在其run_列表中具有basebox角色,您只需调用:
node['rbenv']['group_users']
角色属性将合并到节点中
HTH角色是JSON数据
也就是说,当您使用刀子将角色Ruby文件上载到服务器时,它们将转换为JSON。考虑这个角色:
name "gaming-system"
description "Systems used for gaming"
run_list(
"recipe[steam::installer]",
"recipe[teamspeak3::client]"
)
当我从文件gaming system.rb上传它时,我在服务器上有以下内容:
{
"name": "gaming-system",
"description": "Systems used for gaming",
"json_class": "Chef::Role",
"default_attributes": {
},
"override_attributes": {
},
"chef_type": "role",
"run_list": [
"recipe[steam::installer]",
"recipe[teamspeak3::client]"
],
"env_run_lists": {
}
}
Ruby DSL的原因是它比JSON“更好”或“更容易”编写。比较这些行和语法,很容易看出哪一个更适合新用户(可能不熟悉JSON)
这些数据是通过API使用的。如果您需要对节点上的属性执行任何逻辑操作,请在配方中执行。我尝试过这种方法,但在角色文件中不起作用。例如,我可以使用搜索,但这与厨师服务器,我使用厨师索洛伊明白你的意思。不,您不能这样做,因为ruby在应用到节点之前很久就被转换为json了。您需要使用配方进行上述转换。但我可以在角色中搜索(使用chef server)?您应该在配方中进行此操作。角色的Ruby DSL是为了方便。它不是进行计算或使用搜索的地方。
{
"name": "gaming-system",
"description": "Systems used for gaming",
"json_class": "Chef::Role",
"default_attributes": {
},
"override_attributes": {
},
"chef_type": "role",
"run_list": [
"recipe[steam::installer]",
"recipe[teamspeak3::client]"
],
"env_run_lists": {
}
}