Tecnicamente, Ansible é isso; porque é sem agente; Eu o usei para gerenciar roteadores, switches, servidores, etc.
O que parece que você está pedindo é se o package
módulo suporta o Arch Linux? Estou com preguiça de testar se isso suporta o Arch; mas se não existir, sempre existe o pacman
módulo ... E se isso não funcionar ... Sempre há o seu próprio módulo.
O que você está falando é um problema maior com a execução de várias distribuições diferentes em um ambiente de produção . Torna-se doloroso para gerenciar a longo prazo. É por isso que é uma boa prática não executar várias distribuições na produção, pois, da perspectiva do gerenciamento (puramente do código), é muito trabalhoso. A maneira mais óbvia de contornar isso é com o Ansible usando when
em combinação com os_family
:
apt:
name: apache2
when: ansible_facts['os_family'] == "Debian"
pacman:
name: nginx
when: ansible_facts['os_family'] == "Archlinux"
Eu já estive em uma situação em que tive que gerenciar servidores Debian e servidores CentOS em produção; eventualmente, eu escolhi o Debian puro porque:
- A base de código para CM foi cortada ao meio (toda a lógica para peculiaridades específicas da distribuição foi removida).
- O teste ficou menos doloroso (se você não estiver testando seu código CM, estará fazendo errado).
Você também encontrará grandes diferenças de qualquer maneira; por exemplo:
- Alguns pacotes têm nomes diferentes;
httpd
(RHEL) vs apache2
(Debian).
- Diretórios de configuração "padrão" diferentes;
/etc/default
(Debian) vs /etc/sysconfig
(RHEL).
- Diferentes sistemas init; embora
systemd
tenha assumido em grande parte.
- Sem SSH; por exemplo, WinRM para Windows.
Os sistemas de gerenciamento de configuração são uma maneira de abstrair o ambiente em código; e eles fornecem lógica / condicionais para você fazer isso sozinho .
package
módulo apenas chama o módulo definido noansible_pkg_mgr
fato para esse sistema. Portanto, qualquer sistema de empacotamento suportado pela Ansible funcionará.