Về mặt kỹ thuật, Ansible là thế; bởi vì nó ít tác nhân; Tôi đã sử dụng nó để quản lý bộ định tuyến, chuyển mạch, máy chủ, v.v.
Những gì có vẻ như bạn đang yêu cầu là nếu package
mô-đun hỗ trợ Arch Linux? Tôi quá lười để kiểm tra nếu điều đó hỗ trợ Arch; nhưng nếu nó không luôn có pacman
mô-đun ... Và nếu nó không hoạt động ... Luôn có mô-đun riêng của bạn.
Những gì bạn đang nói mặc dù là một vấn đề lớn hơn với việc chạy nhiều bản phân phối khác nhau trong môi trường sản xuất . Nó trở nên đau đớn để quản lý lâu dài. Đây là lý do tại sao không nên chạy nhiều bản phân phối trong sản xuất, vì từ góc độ quản lý (hoàn toàn từ mã), đó là rất nhiều công việc. Cách rõ ràng nhất để giải quyết vấn đề này là sử dụng Ansible when
kết hợp với os_family
:
apt:
name: apache2
when: ansible_facts['os_family'] == "Debian"
pacman:
name: nginx
when: ansible_facts['os_family'] == "Archlinux"
Tôi đã ở trong tình huống phải quản lý máy chủ Debian và máy chủ CentOS trong sản xuất; cuối cùng tôi đã lựa chọn sử dụng Debian thuần túy bởi vì:
- Cơ sở mã cho CM đã bị cắt làm đôi (tất cả logic cho các quirks cụ thể của distro đã bị xóa).
- Việc kiểm tra trở nên ít đau đớn hơn (nếu bạn không kiểm tra mã CM, thì bạn đã làm sai).
Bạn cũng sẽ gặp phải những khác biệt lớn; ví dụ:
- Một số gói được đặt tên khác nhau;
httpd
(RHEL) so với apache2
(Debian).
- Các thư mục cấu hình "mặc định" khác nhau;
/etc/default
(Debian) so với /etc/sysconfig
(RHEL).
- Hệ thống init khác nhau; mặc dù
systemd
phần lớn đã tiếp quản
- Không có SSH; ví dụ WinRM cho Windows.
Hệ thống quản lý cấu hình là một cách trừu tượng hóa môi trường thành mã; và họ cung cấp cho bạn logic / điều kiện để làm điều đó cho mình .
package
mô-đun chỉ gọi các module được định nghĩa trongansible_pkg_mgr
thực tế cho hệ thống đó. Vì vậy, bất kỳ hệ thống đóng gói mà Ansible hỗ trợ sẽ làm việc.