Module argument syntax styles?

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
    `

Real world examples here: https://gist.github.com/sprin/fc0ddcdfa330aa93facc

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.

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.

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).

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.