cans.package-source
cans.package-source
简单的角色,用于添加和/或删除分发包源及其各自的 GPG 密钥。
每个要添加或删除的包源必须按照以下格式描述:
- repo: "仓库名称" # 必需
codename: "<发行版代号>" # 可选,默认为:未定义
key_id: "<GPG 密钥 ID>" # 可选,默认为:未定义
key_server: "<密钥服务器网址>" # 可选,默认为:未定义
key_url: "<公钥文件网址>" # 可选,默认为:未定义
keyring: "<密钥环路径>" # 可选,默认为:未定义
update_cache: <yes|no> # 可选,默认为:no
该角色将先添加,然后删除源。由于仓库是按列表指定的,因此它们被添加或删除的顺序是确定的,并且按照您的剧本中指定的顺序。
所有默认值为_未定义_ 的值如果未指定将被忽略。
repo
是唯一的必需值,应该是有效的 APT 仓库描述行。
如果您希望在给定源旁边安装密钥,您必须指定 key_id
,以避免在 APT 的密钥环中插入不必要的密钥。然后,key_url
或 key_server
其中一个变为必需,以便以某种方式获取密钥。
通常,改变 update_cache
的默认值不是一个好主意,因为这会极大地降低剧本的执行速度。而且,若您添加包源,很可能在不久之后使用它们。因此,建议在添加源后更新缓存,而不是在添加时就更新。请注意,这样做的缺点是无法验证您的新仓库。如果您仍然希望在执行此角色期间发生验证,请使用 update_cache
,如下面的示例剧本所示。
要求
此软件包依赖于 Ansible 的分发包源管理模块:
- 对于基于 Debian 的发行版,请参见 apt_repository 和 apt_key 模块;
角色变量
此模块的所有变量都以前缀 pkgsources
命名空间。
pkgsource_present
: 您希望确保可用的源列表(默认为[]
);pkgsource_absent
: 您希望确保不可用的源列表(默认为[]
);
废弃变量
pkgsource_user
: 此变量已被废弃,因为您可以在导入角色或在剧本级别定义它。该变量实际上未被使用(默认为ansible_user_id
)。
依赖项
该角色没有外部依赖项。
示例剧本
在此剧本中,我们向 APT 添加两个新源并删除一个。 对于第二个添加的源,我们还将安装该仓库的 GPG 密钥。最后,由于此角色先添加后删除仓库,因此在最后(唯一)删除的仓库上,我们强制更新缓存,以确保配置确实有效并且 APT 可以验证所有仓库和软件包签名。
- hosts: servers
roles:
- role: "cans.package-source"
pkgsource_present:
# 简单确保 Debian 当前发行版本回退包的仓库可用
- repo: "deb http://ftp.fr.debian.org/debian/ stable-backports main"
# Heroku 的工具包仓库(CLI 工具)
- repo: "deb https://toolbelt.heroku.com/ubuntu/ ./"
# 这两行将确保在将仓库添加到源列表之前先安装 Heroku 的 GPG 密钥。
key_id: C927EBE00F1B0520
key_url: "https://toolbelt.herokuapp.com/apt/release.key"
# 您希望删除的废弃源。
pkgsource_absent:
- "deb http://ftp.fr.debian.org/debian/ wheezy main"
# 强制在最后一个添加或删除的仓库上更新缓存以验证新配置
update_cache: yes
许可证
Ansible 角色 package-source 是自由软件:您可以根据自由软件基金会发布的 GNU 通用公共许可证第 2 版的条款重新分发和/或修改它。
package-sources 的分发是希望它会有用,但没有任何保证;甚至没有适销性或适合特定用途的隐含保证。有关更多细节,请参见 GNU 通用公共许可证。
您应该在收到 package-sources 时随附了一份 GNU 通用公共许可证的副本。如果没有,请访问 http://www.gnu.org/licenses/。
作者信息
版权所有 © 2017-2018, Nicolas CANIART。
Role to manage Distribution Package Sources and their Encryption Keys
ansible-galaxy install cans.package-source