![更新](https://linux22.com/image/688155/%E6%9B%B4%E6%96%B0.png)
httpd
软件包名称在不同的平台上确实有所不同。有些叫它apache2
...
假设您的产品支持 RedHat、SuSE 和 Ubuntu。每个都有两个版本。
您是否在配置管理中保留了六个要安装的软件包列表?
据我所知,这个问题适用于所有常见产品,如 Salt、Puppet、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 风格在其脚本中翻译它们