更新

更新

httpd软件包名称在不同的平台上确实有所不同。有些叫它apache2...

假设您的产品支持 RedHat、SuSE 和 Ubuntu。每个都有两个版本。

您是否在配置管理中保留了六个要安装的软件包列表?

据我所知,这个问题适用于所有常见产品,如 Salt、P​​uppet、Chef、Ansible

更新

这个问题被很多人否决了。对我来说,这意味着:这个问题众所周知,而且很多人都讨厌这种情况。而且:没有人能给出答案。

我发现这一点:github 上有一个项目试图使这个包命名混乱变得理智:

https://github.com/unixpackage/unixpackage

一个命令即可在 Ubuntu、Debian、CentOS、Fedora、Red Hat 和 Mac OS X 中安装等效软件包。UnixPackage 是一种独立于 UNIX 的软件包安装方式。指定 Ubuntu 软件包名称(例如 libpq-dev),它将在您的系统上安装等效软件包(例如 Arch 上的 postgresql-libs)。

答案1

我猜没有真正的最佳实践,因为在我看来,在网络中维护大量发行版不是一个好习惯。除了软件包名称之外,不同发行版之间的许多其他东西(用户名、路径等)也不同。但是每个配置管理系统都会提供一种方法来解决这个问题。

方法Ansible是针对任务执行如下操作:

- include: setup-RedHat.yml
  when: ansible_os_family == 'RedHat'

对于变量设置如下:

- name: Include OS-specific variables.
  include_vars: "{{ ansible_os_family }}.yml"

该文件setup-RedHat.yml将包含特定于 RHEL 发行版的所有任务,变量文件将包含redhat.yml特定于 RHEL 发行版的所有变量声明。

答案2

至少 salt 有包的通用名称,并根据目标 linux 风格在其脚本中翻译它们

相关内容