4 ms·
I love Ansible. What's scary about shell scripts is the lack of idempotence (if you accidentally run them twice, things break). What's annoying about chef/pup
by dangerlibrary 12y ago
I love Ansible.
What's scary about shell scripts is the lack of idempotence (if you accidentally run them twice, things break).
What's annoying about chef/puppet is the bootstrapping overhead -- you can't start from a blank slate system, because you still need to install puppet-client or ruby+dependencies. So now you're paying to store a bunch of semi-pre-configured images with some out-of-date ruby gems or an old puppet-client. If you want to start from a blank image, then you're using shell scripts to install the toolchain that will let you avoid using shell scripts (or worse - doing it by hand!).
Ansible is idempotent ssh + shell scripting, so it solves the 'blank slate' problem nicely. It only requires python, which is bundled by default on ubuntu servers.
- fideloper 12y agoThat was well worded! I tried to say that in the article but didn't manage it as succinctly :D Personally I love how it makes it easy to convert existing shell scripts. One of my projects is Vaprobash - vagrant provisioning bash scripts - which contains mostly non-idempotent scripts. (It uses bash scripts purposefully as a teaching tool). Making an ansible version of it will be nice as well.
- marcoamorales 12y agoI'm not sure what bootstrapping overhead you're talking about. You can do a knife bootstrap to bootstrap nodes, not sure about puppet.
- dangerlibrary 12y agoI didn't say it was difficult, I said it was annoying. The bootstrapping step isn't just easier when using Ansible, it doesn't exist.
- ciupicri 12y agoCome one, it's not that hard to do a yum install puppet or use cobbler for provisioning and install puppet along with the OS.
- phaemon 12y agoIt certainly isn't. You can just do: ansible webservers -m yum -a "name=puppet state=latest" -s Or just use ansible for provisioning and install puppet along with the OS. Or something...
- deleted 12y ago[deleted]
- kolev 12y agoThe idempotence issue of shell scripts addressed (with Go): https://github.com/visionmedia/stack/ https://github.com/visionmedia/stack/ Also, there's Rex now (in Perl), which, in my opinion, is better than Ansible as I hate writing code in YAML - I'd rather do it in Perl if Python/Go/Rust are not a option.
- dangerlibrary 12y agoStack looks cool, but I can't use it to repair a broken configuration. A commit log recording which commands have already run doesn't verify that the system is in the correct state.