Technically, Ansible is that; because it's agent-less; I've used it to manage routers, switches, servers, etc.
What it seems like you're asking for is if the
package module supports Arch Linux? I'm too lazy to test if that supports Arch; but if it doesn't there is always the
pacman module... And if that doesn't work... There is always writing your own module.
What you're speaking of though is a larger problem with running multiple different distributions in a production environment. It becomes painful to manage long term. This is why it's good practice to not run multiple distributions in production, as from a management perspective (purely from code), it's a lot of work. The most obvious way to get around this is with Ansible using
when in combination with
when: ansible_facts['os_family'] == "Debian"
when: ansible_facts['os_family'] == "Archlinux"
I've been in a situation where I had to manage Debian Servers and CentOS servers in production; eventually I made the choice to go pure Debian because:
- The codebase for CM was cut in half (all the logic for distro specific quirks was removed).
- Testing became less painful (if you're not testing your CM code, then you're doing it wrong).
You'll also run into major differences anyways; for example:
- Some packages are named differently;
httpd (RHEL) vs
- Different "default" configuration directories;
/etc/default (Debian) vs
- Different init systems; although
systemd has largely taken over.
- No SSH; for example WinRM for Windows.
Configuration Management systems are a way of abstracting the environment into code; and they give you logic/conditionals to do that yourself.