Module argument syntax styles?

42 views
Skip to first unread message

Steffen Prince

unread,
Jul 25, 2014, 3:24:19 AM7/25/14
to ansible...@googlegroups.com
Pros and cons of module argument syntax styles?

INI style

 - module: >
     key1
=val1
     key2
=val2
     key3
=val3
     key4
=val4


yaml style

 - module:
     key1
: val1
     key2
: val2
     key3
: val3
     key4
: val4


With both styles, we can get one keyword/value pair per line, which is very
fast to scan and good for diffs.

The yaml style requires you to quote templated-in params, which makes them
stand out nicely with highlighting. Other than that, the two syntaxes are
functionally equivalent, no?

The INI style allows one-liners, but...

Let's be honest, this is terrible to read, bad for diffs, and we should
avoid it:

 - module: key1=val1 key2=val2 key3=val key4=val4

I suspect this may have been discussed before, but a search on this group
turned up nothing. Apologies if this has already been discussed!

Aside:

The more I work with Ansible syntax, the more I appreciate it's key strength
is how clean and quick to read it is. Simple, concise, self-documenting 
infrastructure... config has come out of the dark ages.

Nod to puppet/chef for getting things rolling in the right direction, but omg,
what a syntactical abomination puppet is. and chef cookbooks always end up
a laughable tangle of poorly written ruby.

C. Morgan Hamill

unread,
Jul 25, 2014, 9:25:11 AM7/25/14
to ansible-project
Excerpts from Steffen Prince's message of 2014-07-25 03:24:19 -0400:
> Pros and cons of module argument syntax styles?
>
> INI style
>
> - module: >
> key1=val1
> key2=val2
> key3=val3
> key4=val4
>
>
> yaml style
>
> - module:
> key1: val1
> key2: val2
> key3: val3
> key4: val4

Personally, I strongly prefer the latter.

I don't think that a general case can be made for one or the other,
though --- just preference.
--
Morgan

Michael DeHaan

unread,
Jul 25, 2014, 9:30:13 AM7/25/14
to ansible...@googlegroups.com
The idea behind key=value is it makes it nice to put everything all on one line.

yum: name=foo state=installed

Which leads to more concise playbooks than the short-form YAML style

yum: { name: 'foo', state: 'installed' }

And is easier to type and skim.

We don't care which way you do things, though if you are going to put things on seperate lines and use the long form, it makes sense to use the YAML data structure.

We'll continue to use the short form for most everything until lines get long, or complicated structured data needs to be passed (like the cloud modules).





--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/1406294649-sup-2573%40al.wesleyan.edu.
For more options, visit https://groups.google.com/d/optout.

Steffen Prince

unread,
Jul 25, 2014, 1:56:22 PM7/25/14
to ansible...@googlegroups.com
Thanks, makes perfect sense why the two syntaxes are available. I think I'll be
sticking to the long form to keep it simple and consistent for new people.
Reply all
Reply to author
Forward
0 new messages