Ansible sounds interesting
from trilobite@lemmy.ml to selfhosted@lemmy.world on 31 May 01:00
https://lemmy.ml/post/30935081

Hi, got Proxmox installed. Now want to install some VMs but would like to use a simple setup rather than painfully going trough an install. I’ve read I could accomplish this via ansible. Are there ready playbooks you can hack? Presumably I would need to have Proxmox understand playbooks?

#selfhosted

threaded - newest

mhzawadi@lemmy.horwood.cloud on 31 May 01:14 next collapse

Hello you maybe best do some reading up on how ansible works, as it can get very complex.

This might be a good sting point 👉 jeffgeerling.com/…/ansible-101-youtube-series

beerclue@lemmy.world on 31 May 01:42 next collapse

Oversimplifying it, Ansible playbooks are nothing more than some commands that should be run on a remote machine via ssh. Ansible knows or has modules for a variety of different package managers (apt, yum, etc) and automagically knows how to handle services or various config files.

It can get complex, but I think just the startup phase, until you have an inventory of remote machines, the ssh keys are in place, etc. I second the Jeff Geerling recommendation, his stuff is solid, both ready to use playbooks, and tutorials.

I would suggest to also look into cloudinit. Makes setting up VMs on proxmox easier, faster, more consistent, with users, networking, ssh keys, etc ready to use (by you or by Ansible).

IsoKiero@sopuli.xyz on 31 May 02:25 next collapse

Or, if you’re using only one or few distributions you can preseed the image and have the installer do the stuff for you.

chrisp@cyberplace.social on 31 May 06:13 collapse

@beerclue Exactly. You can take wiki bash instructions on how a system was set up and translate it to ansible, or back again. The ansible modules are python, but theoretically you could make a bash implementation that just calls dnf/systemctl/etc. directly, like a sys admin would have done.

LastoftheDinosaurs@reddthat.com on 31 May 01:44 next collapse

Ansible Galaxy has what you’re looking for, and you can install them directly from the command line.

just_another_person@lemmy.world on 31 May 02:27 next collapse

If you don’t want another dependency, just get familiar with the provisioning tools of whatever distro you intend to use (Fedora Kickstart, for example), and learn how to quickly provision custom scripted thing with cloud-init when you provision something.

solrize@lemmy.ml on 31 May 02:44 next collapse

I use it to initialize new VPS with my usual setup, but it might be easier to use a container format. I think Ansible itself has become a bit unfashionable since I started using it. I don’t know what is cool instead now. It was Saltstack for a while but idk how long that lasted. Ansible is working mostly ok for me so I’ve stayed with it, til whenever.

Zwuzelmaus@feddit.org on 31 May 02:48 next collapse

Besides ansible, also have a look at “templates” and “cloud-init” for VM generation.

possiblylinux127@lemmy.zip on 31 May 14:40 collapse

I personally would avoid Cloud init as it is largely a Ubuntu thing.

Instead look into Flatcar or bootable containers

smashing3606@feddit.online on 01 Jun 18:19 collapse

It works on debian too, which of course is ubuntu's base distro. Just adding info.

possiblylinux127@lemmy.zip on 02 Jun 06:50 collapse

You also could just use Ansible

Cloud init adds overhead to a clean Debian install. I’ve never really liked it personally.

mutual_ayed@sh.itjust.works on 31 May 04:29 next collapse

NixOS and OpenTofu are pretty great. Add OpenBao to secure ssh keys and passwords and you can get a job as a sysops if you get good enough.

jlh@lemmy.jlh.name on 31 May 04:50 next collapse

Check out NixOS. It can build qcow images from scratch for you to import into proxmox

github.com/nix-community/nixos-generators

I have 8 bare-metal servers and I do everything automated with NixOS, I rarely ever access the servers directly.

Here are the nixos configs for my DHCP server and kubernetes servers that you can use as a base.

codeberg.org/jlh/h5b/src/branch/main/porygonz

codeberg.org/jlh/h5b/src/branch/main/nodes

For what it’s worth, Ive been using Ansible off and on at work for 8 years, and I think it’s pretty outdated and clunky these days, there are much smarter ways to manage workloads such as kubernetes, cloud-init, terraform, and NixOS. If you don’t want to get into Kubernetes then definitely learn NixOS.

irmadlad@lemmy.world on 31 May 13:43 next collapse

Watching this thread. I too would like to dip into Ansible. Looks like a really powerful way to automate things.

possiblylinux127@lemmy.zip on 31 May 14:39 next collapse

You need a combination of playbooks

Start by creating a VM template in Proxmox. Male sure the template regenerates things like SSH host keys and machine-id on startup. Inside the template create a user with passwordless sudo and setup SSH public key authentication.

One the host with the private key install Ansible in a python virtual environment.

To execute this create a VM in proxmox, get its IP from the DHCP server and then add it to the hosts file for Ansible. From there you can use your playbooks.

The automated way to do this would be to use the Ansible Proxmox collection to create the MAC of the VM and then use a different collection to fetch the IP and set it static. From there you could dynamically add it to the hosts file. This is hard and requires more Ansible knowledge.

Another tool you could look into is pyinfra. Pyinfra has less of a learning curve since it is just python.

arcayne@lemmy.today on 31 May 14:53 next collapse

I’d recommend using OpenTofu (Terraform) for initial provisioning of VMs and then use Ansible for post-provisioning config & management. That way you’re letting both tools play to their strengths.

registry.terraform.io/providers/bpg/…/docs

corsicanguppy@lemmy.ca on 01 Jun 19:53 collapse

Please, for the love of god, look at other things instead of Ansible.

Definitely do openTofu for infrastructure and deployment, but for configuration of VMs please learn about puppet, saltstack, chef(cinc.sh) and especially mgmtConfig .

Ansible, by comparison, better matches what we were doing in 2002 at 1/10th the speed, and it’s like pascal levels of wordy.

Learning about options and finding one that works well for you will often give you a much better experience than fucking Ansible.

If you do abandon all hope, though, then go ahead and do Ansible; but remember if you do: there are better options, and hating Ansible doesn’t mean you hate automation.