ansible.builtin.apt 模块 – 管理 apt 包
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 集合关键字,也可以使用简短的模块名称 apt
。但是,我们建议您使用 完整限定集合名称 (FQCN) ansible.builtin.apt
,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合发生冲突。
摘要
管理 *apt* 包(例如 Debian/Ubuntu)。
需求
以下需求在执行此模块的主机上是必需的。
python-apt (python 2)
python3-apt (python 3)
aptitude (2.4 之前的版本)
参数
参数 |
注释 |
---|---|
允许更改处于 apt 保留列表中的包的版本。 选项
|
|
对应于 *apt* 的 此选项允许使用指定的包和版本替换已安装的更高版本的该包。 请注意,设置 (任务最终可能会得到一组与要安装的指定包的完整列表不匹配的包)。
选项
|
|
忽略无法验证的包。这对于引导管理其自身 apt-key 设置的环境很有用。
选项
|
|
如果 选项
|
|
如果 在 2.4 版本之前, 选项
|
|
如果 apt 缓存比 从 Ansible 2.4 开始,如果显式设置,则设置 默认: |
|
运行相当于 可以作为包安装的一部分运行(clean 在安装之前运行)或作为单独的步骤运行。 选项
|
|
远程机器上 .deb 包的路径。 如果路径中包含 需要 |
|
对应于 *apt* 的 |
|
将 选项应作为逗号分隔列表提供。 默认: |
|
对应于 如果
选项
|
|
对应于 此选项将禁用检查包的签名以及下载它们的 Web 服务器的证书。 此选项*不*等效于在命令行上将 **这是一个可能破坏系统操作,几乎不应该使用。** 请参阅 选项
|
|
强制使用 apt-get 而不是 aptitude。 选项
|
|
对应于 选项
|
|
此操作等待获取 apt 数据库锁需要多少秒。 有时存在短暂的锁定,并且至少会在超时之前重试。 默认值: |
|
软件包名称列表,例如 在引用具有特定版本的软件包名称时,请勿在版本周围使用单引号或双引号,例如 |
|
仅在软件包已安装的情况下对其进行升级。 选项
|
|
强制 例如,如果 如果 如果为 |
|
指示所需的软件包状态。 选项
|
|
在操作之前运行等效于 默认情况下不更新缓存。 选项
|
|
如果缓存更新失败,则重试次数。另请参阅 默认值: |
|
对每次重试使用指数退避延迟(请参阅 默认值: |
|
如果为 yes 或 safe,则执行 aptitude safe-upgrade。 如果为 full,则执行 aptitude full-upgrade。 如果为 dist,则执行 apt-get dist-upgrade。 注意:这不会升级特定软件包,请使用 state=latest 来实现。 注意:从 2.4 开始,如果 aptitude 不存在,则使用 apt-get 作为后备。 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全支持 |
可以在 check_mode 中运行并返回更改状态预测,而无需修改目标,如果不受支持,则操作将被跳过。 |
|
支持:完全支持 |
在差异模式下,将返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息 |
|
平台: debian |
可以对其进行操作的目标操作系统/系列 |
注释
注意
三种升级模式(
full
、safe
及其别名true
)在 2.3 之前需要aptitude
,从 2.4 开始,apt-get
用作后备。在大多数情况下,使用 apt 安装的软件包默认会启动新安装的服务。大多数发行版都有避免这种情况的机制。例如,在 Debian 9 中安装 Postgresql-9.5 时,创建可执行的 shell 脚本 (/usr/sbin/policy-rc.d) 并抛出 101 的返回码将阻止 Postgresql 9.5 在安装后启动。之后删除该文件或其执行权限。
apt-get
命令行在此处支持隐式正则表达式匹配,但我们不支持,因为它更容易让输入错误通过(如果您将foo
误输入为fo
,则 apt-get 会安装名称中包含“fo”的软件包,并显示警告和用户提示。由于在安装前没有警告和提示,因此我们不允许这样做。如果您想要使用通配符,请使用显式 fnmatch 模式)。与
loop:
一起使用时,每个软件包将被单独处理,将列表直接传递给name
选项效率更高。当使用
default_release
时,将隐式使用 990 的优先级。这与apt-get -t
的行为相同。当指定确切版本时,将隐式使用 1001 的优先级。
如果解释器无法导入
python-apt
/python3-apt
,则模块也会在系统拥有的解释器中检查它。如果找不到依赖项,则模块将尝试安装它。如果找到或安装了依赖项,则模块将在正确的解释器下重新生成。
示例
- name: Install apache httpd (state=present is optional)
ansible.builtin.apt:
name: apache2
state: present
- name: Update repositories cache and install "foo" package
ansible.builtin.apt:
name: foo
update_cache: yes
- name: Remove "foo" package
ansible.builtin.apt:
name: foo
state: absent
- name: Install the package "foo"
ansible.builtin.apt:
name: foo
- name: Install a list of packages
ansible.builtin.apt:
pkg:
- foo
- foo-tools
- name: Install the version '1.00' of package "foo"
ansible.builtin.apt:
name: foo=1.00
- name: Update the repository cache and update package "nginx" to latest version using default release squeeze-backport
ansible.builtin.apt:
name: nginx
state: latest
default_release: squeeze-backports
update_cache: yes
- name: Install the version '1.18.0' of package "nginx" and allow potential downgrades
ansible.builtin.apt:
name: nginx=1.18.0
state: present
allow_downgrade: yes
- name: Install zfsutils-linux with ensuring conflicted packages (e.g. zfs-fuse) will not be removed.
ansible.builtin.apt:
name: zfsutils-linux
state: latest
fail_on_autoremove: yes
- name: Install latest version of "openjdk-6-jdk" ignoring "install-recommends"
ansible.builtin.apt:
name: openjdk-6-jdk
state: latest
install_recommends: no
- name: Update all packages to their latest version
ansible.builtin.apt:
name: "*"
state: latest
- name: Upgrade the OS (apt-get dist-upgrade)
ansible.builtin.apt:
upgrade: dist
- name: Run the equivalent of "apt-get update" as a separate step
ansible.builtin.apt:
update_cache: yes
- name: Only run "update_cache=yes" if the last one is more than 3600 seconds ago
ansible.builtin.apt:
update_cache: yes
cache_valid_time: 3600
- name: Pass options to dpkg on run
ansible.builtin.apt:
upgrade: dist
update_cache: yes
dpkg_options: 'force-confold,force-confdef'
- name: Install a .deb package
ansible.builtin.apt:
deb: /tmp/mypackage.deb
- name: Install the build dependencies for package "foo"
ansible.builtin.apt:
pkg: foo
state: build-dep
- name: Install a .deb package from the internet
ansible.builtin.apt:
deb: https://example.com/python-ppq_0.1-1_all.deb
- name: Remove useless packages from the cache
ansible.builtin.apt:
autoclean: yes
- name: Remove dependencies that are no longer required
ansible.builtin.apt:
autoremove: yes
- name: Remove dependencies that are no longer required and purge their configuration files
ansible.builtin.apt:
autoremove: yes
purge: true
- name: Run the equivalent of "apt-get clean" as a separate step
ansible.builtin.apt:
clean: yes
返回值
常见返回值在 此处有记录,以下是此模块特有的字段
键 |
描述 |
---|---|
上次缓存更新的时间(如果未知则为 0) 返回值:成功,在某些情况下 示例: |
|
缓存是否已更新 返回值:成功,在某些情况下 示例: |
|
来自 apt 的错误输出 返回值:成功,在需要时 示例: |
|
来自 apt 的输出 返回值:成功,在需要时 示例: |