4 ms·
Ansible seems to be the best of the bunch, at least for my use-case which is just a handful VMs (Chef seemed to require more infrastructure than what it would b
by matt4077 10y ago
Ansible seems to be the best of the bunch, at least for my use-case which is just a handful VMs (Chef seemed to require more infrastructure than what it would be managing).
So let me rant about it for a bit:
- Whatever that language is, it's not something invented on earth. I've given up on learning when to use quotes or how it wants its indentations and just copy&paste&destroy everything&restart when it doesn't work after 15 minutes.
- There are a few thousands tests in their test suite, which makes it quite a feat to introduce a bug that breaks what amounts to "passing variables to a subroutine": https://github.com/ansible/ansible/issues/17356 https://github.com/ansible/ansible/issues/17356. (2 hours today I won't get back). I seriously don't know any other software where I spend most of my time reading through github issues.
- It's a tool to manage hosts. Which would make me think that "reboot" shouldn't be a dirty word. But there's actually no function to do (a) ```/bin/sh reboot```, (b) wait for it to come back. First request I found is four years old: https://github.com/ansible/ansible/issues/513 https://github.com/ansible/ansible/issues/513. The current request has a nice summary of the cottage industry of "blog articles that explain how to reboot & wait": https://github.com/ansible/ansible/issues/16186 https://github.com/ansible/ansible/issues/16186
- Projects are structured in a quite "sparse" folder structure. A small project usually has 25 files in 20 folders and 18 of them are "main.yml" which is probably a conspiracy to annoy me. The main feature an editor plugin for ansible needs is not syntax highlighting but "use second-to-last folder name instead of filename on tabs".
-
- blakesterz 10y ago>>I seriously don't know any other software where I spend most of my time reading through github issues. Ha! I've found myself doing that with Ansible way more than anything else we use. We've been using it since early 1.x and it's been rather buggy sometimes, but in general it's really great and I'm glad we went with it over the alternatives. New features have been coming fast that have made it worth the occasional bug.
- vacri 10y agoI started out using Puppet, and in a new job chose Ansible instead. I never regretted it one bit - troubleshooting in Ansible, you know exactly where it broke. Troubleshooting in puppet was sometimes a giant mystery. Also, if you used the same step in two different puppet manifests, it would totally freak out and refuse to run, even if the invocations were identical. I got the feeling that Puppet is for giant enterprise environments with automated agents everywhere, and Ansible is better suited for admin-driven runs.
- lazyant 10y agoI also got into quotes and whatnot issues but the file format is YAML, not a devilish Ansible invention.
- amazingman 10y agoYou don't have to run chef-server to run Chef. `chef-client -z` can get you where you need to be.
- hackerboos 10y agoA big selling point for Ansible was that it didn't require an agent or server. Chef has caught up, it still needs the agent but chef-zero [1] makes solo deploying much easier. [1] - https://github.com/chef/chef-zero https://github.com/chef/chef-zero
- dozzie 10y ago> [Ansible is] a tool to manage hosts. What made you think it is? It's not. It's somebody's application deployment script that grew too big and started being marketed as a universal tool. For managing servers its very architecture is too brittle. CFEngine and Puppet are universal tools for managing hosts, though they don't work in (sometimes needed) synchronous manner, like well-prepared RPC daemon would.
- rjprins 10y ago- Ansible lacks proper error handling - YAML is not a proper programming language - It's not easy to create reusable "functions". You can include tasks but it can be painful to manage variables, you can depend on roles but everything ends up in separate folders and files. In retrospect I would prefer to just use Fabric, or use Ansible modules through Python.
- vacri 10y agoYAML is a config language, not a programming language (Yet Another Markup Language). If you want to configure your hosts using a programming language, just use shell scripts. -- edit: the acronym has been changed to 'YAML Ain't Markup Language', to separate it from documentation languages