Shell-Script

是否有與發行版無關的配置管理軟體?

  • January 18, 2019

我不想將自己標記為特定的配置管理器模組,例如 Ansible 的apt模組或yum模組。

是否有與發行版無關的配置管理軟體,或者至少有一個與發行版無關的程式碼也可以為Arch Linux安裝以下軟體包?

我問這個是因為我沒有找到合適的 Ansible galaxy-role 來在 Arch Linux 上安裝 LAMP,並且以下 Debian 的 Bash 腳本不適合 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

從技術上講,Ansible 就是這樣;因為它是無代理的;我用它來管理路由器、交換機、伺服器等。

您要求的是該package模組是否支持 Arch Linux?我懶得測試它是否支持 Arch;但如果它沒有總是有pacman模組……如果這不起作用……總是有編寫你自己的模組。

不過,您所說的是在生產環境中執行多個不同發行版的更大問題。長期管理會變得很痛苦。這就是為什麼不要在生產環境中執行多個發行版是一種很好的做法,因為從管理的角度(純粹從程式碼)來看,這是很多工作。解決這個問題的最明顯方法是與 Ansiblewhen結合使用os_family

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

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

我一直處於必須在生產中管理 Debian 伺服器和 CentOS 伺服器的情況;最終我選擇了純 Debian,因為:

  • CM 的程式碼庫被削減了一半(所有發行版特定怪癖的邏輯都被刪除了)。
  • 測試變得不那麼痛苦了(如果你沒有測試你的 CM 程式碼,那麼你做錯了)。

無論如何,您也會遇到重大差異;例如:

  • 一些包的名稱不同;httpd(RHEL)與apache2(Debian)。
  • 不同的“預設”配置目錄;/etc/default(Debian)與/etc/sysconfig(RHEL)。
  • 不同的初始化系統;雖然systemd已經在很大程度上接管了。
  • 沒有 SSH;例如 Windows 的 WinRM。

配置管理系統是將環境抽象為程式碼的一種方式;他們給你邏輯/條件來自己做。

引用自:https://unix.stackexchange.com/questions/493485