chasinglogic.os_packages

Ansible 角色:os-packages

使用变量文件安装软件包

GitHub Actions GitHub Actions

何时以及为何使用此角色

在为多个系统指定配置时,您不可避免地需要安装操作系统软件包,这些软件包只需安装而无需其他配置。例如,构建服务器需要的 build-essentialgcc。创建多个单独的软件包角色来安装这些文件将非常繁琐。即使您不选择“每个软件包一个角色”的方式,您也可能会面临多个自定义软件包列表的情况,这些列表分散在不同角色中,处理不同软件包管理器的各种细节,且互相之间很难交叉引用并保持更新。

此角色允许您将软件包列表集中在变量文件中,因此它们之间可以轻松引用。如果您指定了 deb_packages,但 Ansible 不在安装了 apt 的主机上运行,deb_packages 将被忽略,无需任何条件。

不建议使用此角色安装需要大量配置或其他设置的软件。例如,像 Nextcloud、NGINX 或 Apache 这样的软件不适合这种安装方式,因为它们不可避免地需要额外的设置(如 SELinux、配置、防火墙规则等),应当为它们创建自己的专用角色来处理所有部署细节。

角色变量

名称 描述 类型 默认值 必需
packages_apt_globally_update_cache 指示在安装软件包之前是否应运行全局的 apt update 布尔值 true
generic_packages 将在 Ansible 中使用 package 模块的软件包列表。在 Linux 发行版中,许多软件包具有通用和一致的名称,应该放在此变量中。 列表 []
deb_packages 将根据目标系统在 Ansible 中使用正确打包模块的 .deb 软件包列表。 列表 []
rpm_packages 将根据目标系统在 Ansible 中使用正确打包模块的 .rpm 软件包列表。 列表 []
pacman_packages 将使用 pacman Ansible 打包模块的软件包列表。 列表 []
generic_package_specs 将在 Ansible 中使用 package 模块的软件包规格列表。在 Linux 发行版中,许多软件包具有通用和一致的名称,应该放在此变量中。 列表 []
deb_package_specs 将根据目标系统在 Ansible 中使用正确打包模块的 .deb 软件包规格列表。 列表 []
rpm_package_specs 将根据目标系统在 Ansible 中使用正确打包模块的 .rpm 软件包规格列表。 列表 []
pacman_package_specs 将使用 pacman Ansible 打包模块的软件包规格列表。 列表 []

指定依赖关系

变量 generic_packagesdeb_packagespacman_packagesrpm_packages 是要安装的软件包列表。这些只是确保安装的字符串列表:

generic_packages:
  - gcc
  - tmux
  - vim

使用不同于存在的状态

变量 generic_package_specsdeb_package_specs 等用于更细粒度地控制软件包安装。它们还可以用于删除软件包、安装最新版本或获取通过 Ansible 输出的已安装软件包的特定列表。使用软件包规格时,格式如下:

generic_package_specs:
  - name: gcc
    state: latest

deb_package_specs 列表还允许指定 update_cache 选项:

deb_package_specs:
  - name: gcc
    state: latest
    update_cache: yes

示例剧本

- hosts: all
  roles:
    - role: os-packages

许可证

Apache 许可证

关于项目

Install packages using variable files

安装
ansible-galaxy install chasinglogic.os_packages
许可证
apache-2.0
下载
240
拥有者
Linux and FOSS Enthusiast.