In the recent past, the metadata.json file has replaced the Modulefile as the place where metadata about a Puppet module is kept. The Modulefile has a simple syntax and the Puppet module tool would generate the metadata.json from it.
Now, we must write our own metadata.json files. This leads to errors because json is a data format and humans suck at writing and reading it.
Tooling to work with this is in flight. Currently geppetto has some tooling in it to do something with metadata.json, but that probably means some weird jar or something and ew. I’ve contributed the easy part, which is a linting tool to sanity-check your metadata.json. Metadata-json-lint will verify that your metadata.json is valid json and will ensure a number of required fields are there. It will also verify that the two fields that have been deprecated are no longer in your metadata.json file.
gem install metadata-json-lint
group :development, :test do gem 'rake', '10.1.1', :require => false # ... gem 'metadata-json-lint', :require => false # ... end
$: metadata-json-lint metadata.json Error: Unable to parse json. There is a syntax error somewhere. $: echo $? 1
$: metadata-json-lint metadata.json Error: Required field 'summary' not found in metadata.json. Errors found in metadata.json $: echo $? 1
desc "Lint metadata.json file" task :metadata do sh "metadata-json-lint metadata.json" end
Available at https://github.com/nibalizer/metadata-json-lint
Meatadata-json-lint is currently being used in puppet-module-puppetboard and in garethr’s puppet-module-skeleton. It has been proposed for inclusion in the openstack puppet modules. If you are using it, hit up @nibalizer on twitter and we’ll add it here.