How to address a deeper attribute


#1

Hello guys,

I have this env json:

{
    "chef_type": "environment",
    "cookbook_versions": {},
    "default_attributes": {
        "test_cookbook": {
            "roles": {
                "role1": {
                    "description": "Some description for role1 atribute",
                    "permissions": "read"
                },
                "role2": {
                    "description": "Some description for role2 atribute",
                    "permissions": "write"
                }
            }
        }
    },
    "description": "Test environment",
    "json_class": "Chef::Environment",
    "name": "Test",
    "override_attributes": {}
}

I’m trying to put the value of role1’s permissions in some variable so i can use it in a loop afterwhile.

What I have until now is:

roles_var = node['test_cookbook']['roles']
roles_var.each_with_index { |val,index| puts "index: #{index} for #{val} }

But I still don’t know how to get the 'permissions' for each role.

Little help please.

Thank you,


#2

try:

roles_var.each do |key,values| puts "Key: #{key] Perms: #{values['permissions']}" end

To get the key and the inner hash as values


#3

Thank you! It works.
Best regards,
Gabriel