Hacker News new | ask | show | jobs
by mjolk 3904 days ago
>That said, if you can give some substantial reasons why to use Ansible, it would be great to hear them.

I'm using Ansible, but with a handful of powerful plugins that I developed and haven't contributed back (sorry, but I don't have the time to do support for that ugly-ish code).

I use it because:

- Having an agentless setup is ideal (anyone that tells you that Chef/Puppet agents have never cost him/her time is either a new user or trying to sell you something)

- The YAML, then Jinja2 parse can be annoying, but it's ultimately not that painful once you're used to it

- N-number of SSH Bastion/Ansible-runners fed from a git branch scales better than Chef Server

- I'm a Python developer and I've found it reasonably easy to "monkey-patch" in behaviors that I prefer/need

- Ansible doesn't force a workflow on you, so you can just focus on "getting shit done"

- I plan on taking the YAML that my team generates and feeding it into a different system and the fact that it's in a popular format makes that easier than the alternatives

I had the same experience as you after attending an AnsibleFest and dialed-back on my time spent supporting users in IRC and contributing to the project after. I expected a collection of hackers and instead came away disheartened by the number of sales or marketing bros/chicks and how corporate-smarmy it all felt.

1 comments

> - Having an agentless setup is ideal (anyone that tells you that Chef/Puppet agents have never cost him/her time is either a new user or trying to sell you something)

An agentless setup is ideal iff you have an effective method of service discovery and strongly consistent data storage. Most of my clients don't, and chef-server is the closest thing. My own systems use chef-zero, which is agentless; since they're generally immutable servers, this just gets dropped into AWS userdata, much as I do when I use Ansible, for a one-shot configuration and I'm off to the races.

> - The YAML, then Jinja2 parse can be annoying, but it's ultimately not that painful once you're used to it

It's significantly worse than "if (var) { block }", though, yeah? I mean, yes, it works, but I think that having a programming language with conventionally understood data structures and functions, to say nothing of a parsed configuration spec that you can do transforms over, is a decent bit more useful in the general case. Faster to write, easier to read, and, over the long term, I tend to think it's easier to maintain.

I mean--I'm a programmer. Programming things is easier for me than maintaining YAML files. =)

> - I'm a Python developer and I've found it reasonably easy to "monkey-patch" in behaviors that I prefer/need

This is really the big plus to Ansible that I can see; if you're a Python person and not a Ruby person, I can see some value here. (I am a Ruby person.)

> - Ansible doesn't force a workflow on you, so you can just focus on "getting shit done"

Chef Zero here too (though Berks tends to be helpful anyway). Running chef-zero over `ssh` is a pretty fair approximation of what most folks use Ansible for.

All that said, I'm not saying you shouldn't use Ansible, and I dig that you have some perspective about it. Just offering a different point of view. =)

>An agentless setup is ideal iff you have an effective method of service discovery and strongly consistent data storage.

Sure, or use tag and/or have AWS (aws can be used as a node classifier).

>It's significantly worse than "if (var) { block }", though, yeah? I mean, yes, it works, but I think that having a programming language with conventionally understood data structures and functions

I'm not sure what you mean -- it's YAML + Jinja2. It's just powerful enough that you can hand it off to an Ops team and they can get stuff done.

>I mean--I'm a programmer. Programming things is easier for me than maintaining YAML files. =)

Agreed. I actually hit a point that I said "fuck this" and almost just wrote chunks of python to stitch together with jinja includes, then base64, send and run. I didn't because with Ansible, I can just point others at a doc that I don't maintain (not to say the docs aren't garbage).

>(though Berks tends to be helpful anyway)

Ha -- petty, but I hate the amount of memes like "berkshelf" in the Ruby/Chef toolchain. "berks" is enough to make me involuntarily scoff.

>All that said, I'm not saying you shouldn't use Ansible, and I dig that you have some perspective about it. Just offering a different point of view. =)

Didn't take it that way :) I spent over a year with Chef+agent/Chef-zero/Chef-solo, about a year with Puppet, before using Ansible. I find that Ansible "just goes away" with less effort and doesn't just grow until it eats your entire ops team.