this post was submitted on 26 Jan 2024
212 points (96.1% liked)
linuxmemes
21291 readers
1376 users here now
Hint: :q!
Sister communities:
- LemmyMemes: Memes
- LemmyShitpost: Anything and everything goes.
- RISA: Star Trek memes and shitposts
Community rules (click to expand)
1. Follow the site-wide rules
- Instance-wide TOS: https://legal.lemmy.world/tos/
- Lemmy code of conduct: https://join-lemmy.org/docs/code_of_conduct.html
2. Be civil
- Understand the difference between a joke and an insult.
- Do not harrass or attack members of the community for any reason.
- Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
- Bigotry will not be tolerated.
- These rules are somewhat loosened when the subject is a public figure. Still, do not attack their person or incite harrassment.
3. Post Linux-related content
- Including Unix and BSD.
- Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of
sudo
in Windows. - No porn. Even if you watch it on a Linux machine.
4. No recent reposts
- Everybody uses Arch btw, can't quit Vim, and wants to interject for a moment. You can stop now.
Please report posts and comments that break these rules!
Important: never execute code or follow advice that you don't understand or can't verify, especially here. The word of the day is credibility. This is a meme community -- even the most helpful comments might just be shitposts that can damage your system. Be aware, be smart, don't fork-bomb your computer.
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I decided I wanted nothing to do with Ansible when I was half an hour into reading the website and I still didn't have a fucking clue what it is or exactly what it does.
To this day, I couldn't really tell you. It seems to be basically a framework for automatically SSH'ing into machines and running shell scripts on them which doesn't sound robust in the slightest. It's like they took thirty years of sysadmins' discarded spit-and-duck-tape solutions and bundled them into a "framework".
I dunno how the fuck you're supposed to manage cloud infrastructure at scale with that.
Terraform for day 0 operations is a better experience but it had its quirks. Ansible is nice when it's done well, but when you don't have an Ansible module for something, you're essentially writing a shell script
Or your own module in Python if it gets too complex to do with just Ansible https://docs.ansible.com/ansible/latest/dev_guide/developing_modules_general.html
Yeah, in contrast the value proposition for Terraform was immediately obvious. "Oh, you mean I don't have to manually set up Kubernetes clusters and shit every time we want to deploy to a new region? Fucking sign me up!"
It’s far more than just SSHing and running shell scripts. Besides, I wouldn’t ever call it a „framework”.
It’s a tool for Linux, BSDs and even Windows machine setup automation in a declarative fashion. Tasks are usually built out of wide range of provided modules for both universal actions (like file edits, templating, shell commands) and very specific ones (like Podman containers, Postgres users, indexes in Mongo, whatever you imagine, you can even implement your own in Python). Those tasks have logic that can detect the status for each of the tasks in each specified nodes, so they can not only be applied, but also dry run with precise diff tracking (diff of config files to be applied, packages to be installed, etc).
It has inventory that can be both static (config file), and dynamic (e.g query an AWS account for Ec2-s or get nodes from Proxmox) that lets you group your however many hosts (by purpose, etc), attach variables to specific hosts or entire groups, or even store encrypted credentials to use them in roles. When dealing with hundreds of hosts, at some point this is something you need to do anyway, but here it really shines even with much smaller amount of machines.
Ansible can be very reliable and provide awesome environments, but it requires some learning and due to its flexibility, it can also be used badly. I have some success stories with it in last 7 years of utilizing it for both small and big business.
That being said, if you want some magic hammer that just does stuff without requiring any understanding, Ansible might not be the thing.
And no, Terraform is not an replacement for Ansible and vice versa. Those two are designed for different purposes. I actually used them together in some projects.
Yeah, that's the problem. Every time infrastructure management came up, a certain coworker would always bring up Ansible. It eventually got kind of annoying.
Yup. I used ansible for a good year, maybe two, and found myself asking, "Why the fuck am I maintaining some abstract thing when I can just write a shell script and deploy that?"
Cloud orchestration is better done with other tooling. Honestly don't see a use case for ansible beyond physical data center deployments.
There is a reason ansible exists and is widely used. Shell scripts are brittle and don't account for a ton of use cases.
For instance- are you going to write a shell script to determine the OS family of a server? Are you then going to do a bunch of if statements for things you want run on Debian hosts vs RedHat ones vs. Alpine? Are you going to manually make templates yourself or just use jinja templates and the template module in ansible (and use variables easily gathered by the setup module)? Are you going to manually select which hosts you're going to target or are you just going to use your ansible inventory that categorizes your machines based on location or purpose or whatever other arbitrary thing and use tags? Are you going to manually dig in and find out how many NICs are in a box, what IPs they have, what CPU, how many cores so you can set some service to use "X" amount of threads, define service templates using those machine variables, etc. etc. etc.? Are you going to make such well defined shell scripts that they can be reused over and over again against a variety of machines without breaking things and make it easy to include them in parent shell scripts?
This is all stuff ansible does quite easily.
It's not the end all be all of course. Some would argue (maybe rightfully) that Puppet or Salt can maintain config drift a bit better. I would argue it's not the tool to use for containerization really either. But it definitely has a real purpose in initial and maintained configuration management and in both cloud and on-prem deployments.
Building custom images for cloud can be one. Builtins have a lot of ready to use logic that you might want in your scripts anyway
They installed it for us at work as part of a project, and we went to ask the ansible guy wtf we could use it for in a windows world, and he couldn't articulate how it would be an improvement in any way over a scheduled task.
To be fair it is not Ansible's fault that Windows does pretty much everything differently from the systems Ansible was designed for.
Agreed entirely.
It appeals to me for management of a windows machine for a few things:
For just one machine? Task scheduler is probably good enough. 2-3 machines, managed remotely? Ansible is at least worth looking at.
Edit: also, really good docs. Like, check out this active directory module with examples: https://docs.ansible.com/ansible/latest/collections/microsoft/ad/object_info_module.html#ansible-collections-microsoft-ad-object-info-module
The examples are very helpful, with things like getting a list of ad users. I used that to create a ansible script to shuffle all ad user passwords - while being a a linux lover who hates windows and has literally never touched ad before this.
https://github.com/CSUN-CCDC/CCDC-2023/blob/main/windows/ansible/testing/users.yml
https://github.com/CSUN-CCDC/CCDC-2023/blob/main/windows/ansible/roles/domain/tasks/main.yml
Nice, I love it