Apakah ada perangkat lunak manajemen konfigurasi distro-agnostik?

7

Saya tidak ingin melabeli diri saya sendiri ke modul manajer konfigurasi tertentu seperti aptmodul atau yummodul Ansible .

Apakah ada perangkat lunak manajemen konfigurasi distro-agnostik, atau setidaknya satu dengan kode distro-agnostik untuk menginstal paket-paket berikut untuk Arch Linux juga?

Saya bertanya ini karena saya tidak menemukan galaksi-peran yang sesuai untuk menginstal LAMP di Arch Linux dan skrip Bash berikut untuk Debian tidak cocok untuk Arch:

#!/bin/bash

apt update -y
apt upgrade ufw sshguard unattended-upgrades wget curl git zip unzip tree -y

ufw --force enable
ufw allow 22,25,80,443

apt upgrade lamp-server^ ssmtp  -y
apt upgrade python-certbot-apache  -y
apt upgrade php-{cli,curl,mbstring,mcrypt,gd} phpmyadmin  -y

sumber

Jawaban:

11

Secara teknis, Ansible adalah itu; karena itu tanpa agen; Saya telah menggunakannya untuk mengelola router, switch, server, dll.

Apa yang Anda minta adalah jika packagemodul mendukung Arch Linux? Saya terlalu malas untuk menguji apakah itu mendukung Arch; tetapi jika tidak selalu ada pacmanmodul ... Dan jika itu tidak berhasil ... Selalu ada menulis modul Anda sendiri.

Apa yang Anda bicarakan adalah masalah yang lebih besar dengan menjalankan beberapa distribusi yang berbeda dalam lingkungan produksi . Menjadi menyakitkan untuk mengelola jangka panjang. Inilah sebabnya mengapa itu praktik yang baik untuk tidak menjalankan banyak distribusi dalam produksi, seperti dari perspektif manajemen (murni dari kode), ini banyak pekerjaan. Cara paling jelas untuk menyiasatinya adalah dengan menggunakan Ansible whendalam kombinasi dengan os_family:

    apt:
      name: apache2
    when: ansible_facts['os_family'] == "Debian"

    pacman:
      name: nginx
    when: ansible_facts['os_family'] == "Archlinux"

Saya sudah dalam situasi di mana saya harus mengelola Server Debian dan server CentOS dalam produksi; akhirnya saya membuat pilihan untuk menjadi Debian murni karena:

  • Basis kode untuk CM dipotong setengah (semua logika untuk kebiasaan khusus distro telah dihapus).
  • Pengujian menjadi kurang menyakitkan (jika Anda tidak menguji kode CM Anda, maka Anda salah melakukannya).

Anda juga akan mengalami perbedaan besar; sebagai contoh:

  • Beberapa paket diberi nama berbeda; httpd(RHEL) vs apache2(Debian).
  • Direktori konfigurasi "default" yang berbeda; /etc/default(Debian) vs /etc/sysconfig(RHEL).
  • Sistem init yang berbeda; meskipun systemdsebagian besar telah mengambil alih.
  • Tidak ada SSH; misalnya WinRM untuk Windows.

Sistem Manajemen Konfigurasi adalah cara mengabstraksi lingkungan menjadi kode; dan mereka memberi Anda logika / persyaratan untuk melakukannya sendiri .

Jeff Schaller
sumber
1
The packagemodul hanya panggilan modul didefinisikan dalam ansible_pkg_mgrkenyataannya untuk sistem itu. Jadi sistem pengemasan yang mendukung Ansible akan berfungsi.
Michael Hampton
6

Mempertahankan manajer meta-paket-bagi saya merupakan tugas Sisyphean, karena seseorang harus memelihara semacam "apache2" di Debian-like adalah "httpd" di RHEL-like (et cetera) Rosetta Stone.

Namun, ada modul pacman untuk Ansible yang dibuat khusus untuk menggunakan Ansible (alat manajemen disto-agnostik yang Anda cari) untuk mengelola paket pada sistem seperti Arch. Dari bagian Contoh dokumentasi modul yang ditautkan:

- name: Install package foo
  pacman:
    name: foo
    state: present

- name: Upgrade package foo
  pacman:
    name: foo
    state: latest
    update_cache: yes

- name: Remove packages foo and bar
  pacman:
    name: foo,bar
    state: absent

- name: Recursively remove package baz
  pacman:
    name: baz
    state: absent
    recurse: yes
DopeGhoti
sumber
2

paket adalah "Manajer paket OS Generik" yang dimungkinkan.

Sebuah opsi adalah memasukkan list_of_packages khusus OS

- include_vars: "{{ item }}"
   with_first_found:
     - files:
         - "{{ ansible_distribution }}-{{ ansible_distribution_release }}.yml"
         - "{{ ansible_distribution }}.yml"
         - "{{ ansible_os_family }}.yml"
         - "default.yml"
       paths: "{{ role_path }}/vars"

dan instal paket

- package:
    state: present
    name: "{{ item }}"
  loop: "{{ list_of_packages }}"
Vladimir Botka
sumber
2

Nix adalah manajer paket mandiri yang tidak terikat erat dengan os apa pun. Saya menggunakannya di MacOS dan juga Ubuntu https://nixos.org/nix/

Saltstack (Ansible compatitor) memiliki abstraksi yang lebih bagus dengan pkg. Diinstal dan Anda tidak perlu peduli sistem yang mendasarinya adalah apt atau rpm atau arch ... (masih perlu menetapkan nama pkg berbeda jika mereka berbeda pada sistem, misalnya httpd atau apache2)

HVNMencintai
sumber