# The \`name' attribute is required in cookbook metadata

**URL:** <https://discourse.chef.io/t/the-name-attribute-is-required-in-cookbook-metadata/6021>\
**Category:** Chef Infra (archive)\
**Created:** [December 5, 2014, 10:36am UTC](https://discourse.chef.io/t/the-name-attribute-is-required-in-cookbook-metadata/6021 "2014-12-05T10:36:06Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![David\_Montgomery](https://avatars.discourse-cdn.com/v4/letter/d/51bf81/32.png) [@David\_Montgomery](https://discourse.chef.io/u/David_Montgomery)\
**Post date:** [December 5, 2014, 10:36am UTC](https://discourse.chef.io/t/the-name-attribute-is-required-in-cookbook-metadata/6021/1 "2014-12-05T10:36:06Z")

</div>

Hi Opscode!

How do I debug the error? the `name’ attribute is required in cookbook  
metadata

Totally leaves me with nowhere to go. What recipe? What metadata? What?\

Thanks

Generated at 2014-12-05 10:29:01 +0000  
Chef::Exceptions::MetadataNotValid: Cookbook loaded at path(s)  
[/var/etl-chef/chef-repo/cookbooks/monit] has invalid metadata: The `name' attribute is required in cookbook metadata /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook_version_loader.rb:190:in`raise\_metadata\_error!’  
/opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook\_version\_loader.rb:79:in  
`load' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:83:in`block in  
load\_cookbook’  
/opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:82:in `each' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:82:in`load\_cookbook’  
/opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:72:in `block in load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:71:in`each’  
/opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:71:in  
`load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:61:in`setup\_run\_context’  
/opt/chef/embedded/apps/chef/lib/chef/client.rb:235:in `setup_run_context' /opt/chef/embedded/apps/chef/lib/chef/client.rb:397:in`run’  
/opt/chef/embedded/apps/chef/lib/chef/application.rb:261:in `block in fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in`fork’  
/opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in  
`fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:215:in`block in  
run\_chef\_client’  
/opt/chef/embedded/apps/chef/lib/chef/local\_mode.rb:38:in  
`with_server_connectivity' /opt/chef/embedded/apps/chef/lib/chef/application.rb:201:in`run\_chef\_client’  
/opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:245:in `block in interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in`loop’  
/opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in  
`interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:224:in`run\_application’  
/opt/chef/embedded/apps/chef/lib/chef/application.rb:58:in `run' /opt/chef/embedded/apps/chef/bin/chef-solo:25:in`\<top (required)\>’  
/usr/bin/chef-solo:40:in `load' /usr/bin/chef-solo:40:in`’

---

<div class="post-metadata">

**Author:** ![Steven\_Danna](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.chef.io/steven_danna/32/195_2.png) [@Steven\_Danna](https://discourse.chef.io/u/Steven_Danna)\
**Post date:** [December 5, 2014, 10:46am UTC](https://discourse.chef.io/t/the-name-attribute-is-required-in-cookbook-metadata/6021/2 "2014-12-05T10:46:29Z")

</div>

Hi,

I agree we could have a better error message, but to help right now,  
your best bet might be to use grep(1). The -L option will print files  
without a match. Thus, if I have 5 cookbooks:

```
> ls -d cookbooks/*
cookbooks/ckbk1 cookbooks/ckbk2 cookbooks/ckbk3 cookbooks/ckbk4

```

cookbooks/ckbk5

I can do something like:

```
> grep -L name cookbooks/*/metadata.rb
cookbooks/ckbk3/metadata.rb

```

and it finds the cookbook without "name" in the metadata. You might  
get some false positives if you use the word "name" elsewhere in the  
metadata. Also, you may need to include metadata.json files as well.

Hope this helps.

Cheers,

Steven

On Fri, Dec 5, 2014 at 10:36 AM, David Montgomery  
[davidmontgomery@gmail.com](mailto:davidmontgomery@gmail.com) wrote:

> Hi Opscode!
> 
> How do I debug the error? the `name' attribute is required in cookbook  
> metadata
> 
> Totally leaves me with nowhere to go. What recipe? What metadata? What?\
> 
> Thanks
> 
> Generated at 2014-12-05 10:29:01 +0000  
> Chef::Exceptions::MetadataNotValid: Cookbook loaded at path(s)  
> [/var/etl-chef/chef-repo/cookbooks/monit] has invalid metadata: The `name' attribute is required in cookbook metadata /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook_version_loader.rb:190:in `raise\_metadata\_error!'  
> /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook\_version\_loader.rb:79:in  
> `load' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:83:in `block in  
> load\_cookbook'  
> /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:82:in `each' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:82:in `load\_cookbook'  
> /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:72:in `block in load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:71:in `each'  
> /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:71:in  
> `load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:61:in `setup\_run\_context'  
> /opt/chef/embedded/apps/chef/lib/chef/client.rb:235:in `setup_run_context' /opt/chef/embedded/apps/chef/lib/chef/client.rb:397:in `run'  
> /opt/chef/embedded/apps/chef/lib/chef/application.rb:261:in `block in fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork'  
> /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in  
> `fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:215:in `block in  
> run\_chef\_client'  
> /opt/chef/embedded/apps/chef/lib/chef/local\_mode.rb:38:in  
> `with_server_connectivity' /opt/chef/embedded/apps/chef/lib/chef/application.rb:201:in `run\_chef\_client'  
> /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:245:in `block in interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `loop'  
> /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in  
> `interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:224:in `run\_application'  
> /opt/chef/embedded/apps/chef/lib/chef/application.rb:58:in `run' /opt/chef/embedded/apps/chef/bin/chef-solo:25:in `\<top (required)\>'  
> /usr/bin/chef-solo:40:in `load' /usr/bin/chef-solo:40:in `'

---

<div class="post-metadata">

**Author:** ![AJ\_Christensen2](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.chef.io/aj_christensen2/32/42_2.png) [@AJ\_Christensen2](https://discourse.chef.io/u/AJ_Christensen2)\
**Post date:** [December 5, 2014, 10:57am UTC](https://discourse.chef.io/t/the-name-attribute-is-required-in-cookbook-metadata/6021/3 "2014-12-05T10:57:59Z")

</div>

Hello,

Chef::Exceptions::MetadataNotValid: Cookbook loaded at path(s)  
[/var/etl-chef/chef-repo/cookbooks/monit] has invalid metadata: The  
`name' attribute is required in cookbook metadata

Check the 'monit' cookbook at /var/etl-chef/chef-repo/cookbooks/monit  
metadata.rb (it's a ruby file), or whatever is putting it there.

to fix, e.g.:  
echo "name 'monit'" \>\> /var/etl-chef/chef-repo/cookbooks/monit/metadata.rb

You need to add the name attribute.

cheers,

--aj

On Fri, Dec 5, 2014 at 11:46 PM, Steven Danna [steve@opscode.com](mailto:steve@opscode.com) wrote:

> Hi,
> 
> I agree we could have a better error message, but to help right now,  
> your best bet might be to use grep(1). The -L option will print files  
> without a match. Thus, if I have 5 cookbooks:
> 
> ```
> > ls -d cookbooks/*
> cookbooks/ckbk1 cookbooks/ckbk2 cookbooks/ckbk3 cookbooks/ckbk4
> 
> ```
> 
> cookbooks/ckbk5
> 
> I can do something like:
> 
> ```
> > grep -L name cookbooks/*/metadata.rb
> cookbooks/ckbk3/metadata.rb
> 
> ```
> 
> and it finds the cookbook without "name" in the metadata. You might  
> get some false positives if you use the word "name" elsewhere in the  
> metadata. Also, you may need to include metadata.json files as well.
> 
> Hope this helps.
> 
> Cheers,
> 
> Steven
> 
> On Fri, Dec 5, 2014 at 10:36 AM, David Montgomery  
> [davidmontgomery@gmail.com](mailto:davidmontgomery@gmail.com) wrote:
> 
> > Hi Opscode!
> > 
> > How do I debug the error? the `name' attribute is required in cookbook  
> > metadata
> > 
> > Totally leaves me with nowhere to go. What recipe? What metadata? What?\
> > 
> > Thanks
> > 
> > Generated at 2014-12-05 10:29:01 +0000  
> > Chef::Exceptions::MetadataNotValid: Cookbook loaded at path(s)  
> > [/var/etl-chef/chef-repo/cookbooks/monit] has invalid metadata: The `name' attribute is required in cookbook metadata /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook_version_loader.rb:190:in `raise\_metadata\_error!'  
> > /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook\_version\_loader.rb:79:in  
> > `load' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:83:in `block in  
> > load\_cookbook'  
> > /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:82:in `each' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:82:in `load\_cookbook'  
> > /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:72:in `block in load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:71:in `each'  
> > /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:71:in  
> > `load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:61:in `setup\_run\_context'  
> > /opt/chef/embedded/apps/chef/lib/chef/client.rb:235:in `setup_run_context' /opt/chef/embedded/apps/chef/lib/chef/client.rb:397:in `run'  
> > /opt/chef/embedded/apps/chef/lib/chef/application.rb:261:in `block in fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork'  
> > /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in  
> > `fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:215:in `block in  
> > run\_chef\_client'  
> > /opt/chef/embedded/apps/chef/lib/chef/local\_mode.rb:38:in  
> > `with_server_connectivity' /opt/chef/embedded/apps/chef/lib/chef/application.rb:201:in `run\_chef\_client'  
> > /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:245:in `block in interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `loop'  
> > /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in  
> > `interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:224:in `run\_application'  
> > /opt/chef/embedded/apps/chef/lib/chef/application.rb:58:in `run' /opt/chef/embedded/apps/chef/bin/chef-solo:25:in `\<top (required)\>'  
> > /usr/bin/chef-solo:40:in `load' /usr/bin/chef-solo:40:in `'

---

<div class="post-metadata">

**Author:** ![Steven\_Danna](https://sea2.discourse-cdn.com/flex016/user_avatar/discourse.chef.io/steven_danna/32/195_2.png) [@Steven\_Danna](https://discourse.chef.io/u/Steven_Danna)\
**Post date:** [December 5, 2014, 11:01am UTC](https://discourse.chef.io/t/the-name-attribute-is-required-in-cookbook-metadata/6021/4 "2014-12-05T11:01:16Z")

</div>

Hi,

Ha! How did I miss that right there in the error message? I still  
like my grep method though :).

Cheers,

Steven

On Fri, Dec 5, 2014 at 10:57 AM, AJ Christensen  
[aj@junglistheavy.industries](mailto:aj@junglistheavy.industries) wrote:

> Hello,
> 
> Chef::Exceptions::MetadataNotValid: Cookbook loaded at path(s)  
> [/var/etl-chef/chef-repo/cookbooks/monit] has invalid metadata: The  
> `name' attribute is required in cookbook metadata
> 
> Check the 'monit' cookbook at /var/etl-chef/chef-repo/cookbooks/monit  
> metadata.rb (it's a ruby file), or whatever is putting it there.
> 
> to fix, e.g.:  
> echo "name 'monit'" \>\> /var/etl-chef/chef-repo/cookbooks/monit/metadata.rb
> 
> You need to add the name attribute.
> 
> cheers,
> 
> --aj
> 
> On Fri, Dec 5, 2014 at 11:46 PM, Steven Danna [steve@opscode.com](mailto:steve@opscode.com) wrote:
> 
> > Hi,
> > 
> > I agree we could have a better error message, but to help right now,  
> > your best bet might be to use grep(1). The -L option will print files  
> > without a match. Thus, if I have 5 cookbooks:
> > 
> > ```
> > > ls -d cookbooks/*
> > cookbooks/ckbk1 cookbooks/ckbk2 cookbooks/ckbk3 cookbooks/ckbk4
> > 
> > ```
> > 
> > cookbooks/ckbk5
> > 
> > I can do something like:
> > 
> > ```
> > > grep -L name cookbooks/*/metadata.rb
> > cookbooks/ckbk3/metadata.rb
> > 
> > ```
> > 
> > and it finds the cookbook without "name" in the metadata. You might  
> > get some false positives if you use the word "name" elsewhere in the  
> > metadata. Also, you may need to include metadata.json files as well.
> > 
> > Hope this helps.
> > 
> > Cheers,
> > 
> > Steven
> > 
> > On Fri, Dec 5, 2014 at 10:36 AM, David Montgomery  
> > [davidmontgomery@gmail.com](mailto:davidmontgomery@gmail.com) wrote:
> > 
> > > Hi Opscode!
> > > 
> > > How do I debug the error? the `name' attribute is required in cookbook  
> > > metadata
> > > 
> > > Totally leaves me with nowhere to go. What recipe? What metadata? What?\
> > > 
> > > Thanks
> > > 
> > > Generated at 2014-12-05 10:29:01 +0000  
> > > Chef::Exceptions::MetadataNotValid: Cookbook loaded at path(s)  
> > > [/var/etl-chef/chef-repo/cookbooks/monit] has invalid metadata: The `name' attribute is required in cookbook metadata /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook_version_loader.rb:190:in `raise\_metadata\_error!'  
> > > /opt/chef/embedded/apps/chef/lib/chef/cookbook/cookbook\_version\_loader.rb:79:in  
> > > `load' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:83:in `block in  
> > > load\_cookbook'  
> > > /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:82:in `each' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:82:in `load\_cookbook'  
> > > /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:72:in `block in load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/cookbook_loader.rb:71:in `each'  
> > > /opt/chef/embedded/apps/chef/lib/chef/cookbook\_loader.rb:71:in  
> > > `load_cookbooks' /opt/chef/embedded/apps/chef/lib/chef/policy_builder/expand_node_object.rb:61:in `setup\_run\_context'  
> > > /opt/chef/embedded/apps/chef/lib/chef/client.rb:235:in `setup_run_context' /opt/chef/embedded/apps/chef/lib/chef/client.rb:397:in `run'  
> > > /opt/chef/embedded/apps/chef/lib/chef/application.rb:261:in `block in fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in `fork'  
> > > /opt/chef/embedded/apps/chef/lib/chef/application.rb:249:in  
> > > `fork_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application.rb:215:in `block in  
> > > run\_chef\_client'  
> > > /opt/chef/embedded/apps/chef/lib/chef/local\_mode.rb:38:in  
> > > `with_server_connectivity' /opt/chef/embedded/apps/chef/lib/chef/application.rb:201:in `run\_chef\_client'  
> > > /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:245:in `block in interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in `loop'  
> > > /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:234:in  
> > > `interval_run_chef_client' /opt/chef/embedded/apps/chef/lib/chef/application/solo.rb:224:in `run\_application'  
> > > /opt/chef/embedded/apps/chef/lib/chef/application.rb:58:in `run' /opt/chef/embedded/apps/chef/bin/chef-solo:25:in `\<top (required)\>'  
> > > /usr/bin/chef-solo:40:in `load' /usr/bin/chef-solo:40:in `'
