Finding YAML errors in puppet

I love tabs, they’re so much easier to work with, but YAML doesn’t like them. I’m constantly adding them in accidentally, and puppet’s error message is a bit cryptic:

Error: Could not retrieve catalog from remote server: Error 400 on SERVER: malformed format string - %S at /etc/puppet/manifests/foo.pp:18 on node bar.example.com

This happens during a puppet run, which in my case loads up YAML files. The tricky part was that the error wasn’t at all related to the foo.pp file, it just happened to be the first time hiera was run. So where’s the real error?

$ cd /etc/puppet/hieradata/; for i in `find . -name '*.yaml'`; do echo $i; ruby -e "require 'yaml'; YAML.parse(File.open('$i'))"; done

Run this one liner on your puppetmaster, and hiera should quickly point out which files have errors, and exactly which lines (and columns) they’re on.

Happy hacking,

James

 

getting gedit to work like magic

i use gnu/linux. it’s probably no secret. what is more of a secret, is that i secretly (well actually not so secretly) love using gedit for editing text. i still use vim, echo (gnu bash) and emacs (but only for org-mode).

vim is really, really great. but for day to day full-screen coding, i love working in gedit. i only have one [1] longstanding gripe, and today i believe that it is solved. here is the magic combination which appeases my troubled spirit:

  • gedit smart spaces plugin [2]
  • gedit autotab plugin [3]
  • gedit modelines plugin [4]

install these, restart gedit, enable them, and happy coding!
while it will be much friendlier to use spaces for indentation, i still recommend using tabs, i mean, that’s what the 0x09 was invented for!

[1] actually i wish that everyone would just use eight-space-tabs for all their coding needs, but i realize there are some problems with this, and so i reluctantly am glad that modelines and the above magic exist.

[2] http://git.gnome.org/browse/gedit-plugins/tree/plugins/smartspaces

[3] http://code.google.com/p/gedit-autotab/

[4] http://library.gnome.org/users/gedit/stable/gedit-modelines-plugin.html.en