是否有与发行版无关的配置管理软件?

7 arch-linux debian shell-script stability ansible

我不想将自己标记为特定的配置管理器模块,例如 Ansible 的apt模块或yum模块。

是否有与发行版无关的配置管理软件,或者至少有一个与发行版无关的代码来为Arch Linux安装以下软件包?

我问这个是因为我没有找到合适的 Ansible 星系角色来在 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
Run Code Online (Sandbox Code Playgroud)

小智 11

从技术上讲,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"
Run Code Online (Sandbox Code Playgroud)

我曾经遇到过必须在生产环境中管理 Debian 服务器和 CentOS 服务器的情况;最终我选择使用纯 Debian,因为:

  • CM 的代码库被减半(删除了发行版特定怪癖的所有逻辑)。
  • 测试变得不那么痛苦(如果你没有测试你的 CM 代码,那么你就做错了)。

无论如何,您也会遇到重大差异;例如:

  • 有些包的名称不同;httpd(RHEL) 与apache2(Debian)。
  • 不同的“默认”配置目录;/etc/default(Debian) 与/etc/sysconfig(RHEL)。
  • 不同的初始化系统;虽然systemd已经在很大程度上接管了。
  • 没有SSH;例如适用于 Windows 的 WinRM。

配置管理系统是一种将环境抽象为代码的方式;他们给你逻辑/条件来做你自己。


Dop*_*oti 6

维护元包管理器在我看来是一项 Sisyphean 任务,因为有人必须在 Debian-likes 中维护某种“apache2”是 RHEL-likes(等)Rosetta Stone 中的“httpd”。

但是,Ansible有一个pacman模块,它专门用于使用 Ansible(您正在寻找的与 disto 无关的管理工具)来管理类似 Arch 的系统上的包。来自链接模块文档的示例部分:

- 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
Run Code Online (Sandbox Code Playgroud)