Técnicamente, Ansible es eso; porque es sin agente; Lo he usado para administrar enrutadores, conmutadores, servidores, etc.
Lo que parece que estás preguntando es si el package
módulo es compatible con Arch Linux. Soy demasiado vago para probar si eso es compatible con Arch; pero si no es así, siempre está el pacman
módulo ... Y si eso no funciona ... Siempre está escribiendo su propio módulo.
Sin embargo, de lo que está hablando es de un problema mayor con la ejecución de múltiples distribuciones diferentes en un entorno de producción . Se vuelve doloroso manejarlo a largo plazo. Es por eso que es una buena práctica no ejecutar múltiples distribuciones en producción, ya que desde una perspectiva de gestión (puramente de código), es mucho trabajo. La forma más obvia de evitar esto es con Ansible when
en combinación con os_family
:
apt:
name: apache2
when: ansible_facts['os_family'] == "Debian"
pacman:
name: nginx
when: ansible_facts['os_family'] == "Archlinux"
He estado en una situación en la que tuve que administrar servidores Debian y servidores CentOS en producción; Finalmente tomé la decisión de usar Debian puro porque:
- La base de código para CM se redujo a la mitad (se eliminó toda la lógica de las peculiaridades específicas de la distribución).
- Las pruebas se volvieron menos dolorosas (si no está probando su código CM, entonces lo está haciendo mal).
También te encontrarás con grandes diferencias de todos modos; por ejemplo:
- Algunos paquetes tienen nombres diferentes;
httpd
(RHEL) vs apache2
(Debian).
- Diferentes directorios de configuración "predeterminados";
/etc/default
(Debian) vs /etc/sysconfig
(RHEL).
- Diferentes sistemas de inicio; aunque en
systemd
gran medida se ha hecho cargo.
- Sin SSH; por ejemplo WinRM para Windows.
Los sistemas de gestión de configuración son una forma de abstraer el entorno en código; y te dan lógica / condicionales para hacerlo tú mismo .
package
módulo solo llama al módulo definido en elansible_pkg_mgr
hecho para ese sistema. Por lo tanto, cualquier sistema de embalaje que sea compatible con Ansible funcionará.