chasinglogic.os_packages
Ansible 角色:os-packages
使用变量文件安装软件包
何时以及为何使用此角色
在为多个系统指定配置时,您不可避免地需要安装操作系统软件包,这些软件包只需安装而无需其他配置。例如,构建服务器需要的 build-essential
或 gcc
。创建多个单独的软件包角色来安装这些文件将非常繁琐。即使您不选择“每个软件包一个角色”的方式,您也可能会面临多个自定义软件包列表的情况,这些列表分散在不同角色中,处理不同软件包管理器的各种细节,且互相之间很难交叉引用并保持更新。
此角色允许您将软件包列表集中在变量文件中,因此它们之间可以轻松引用。如果您指定了 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_packages
、deb_packages
、pacman_packages
和 rpm_packages
是要安装的软件包列表。这些只是确保安装的字符串列表:
generic_packages:
- gcc
- tmux
- vim
使用不同于存在的状态
变量 generic_package_specs
、deb_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
许可证
安装
ansible-galaxy install chasinglogic.os_packages
许可证
apache-2.0
下载
240
拥有者
Linux and FOSS Enthusiast.