ansible.builtin.apt 模块 – 管理 apt 包
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 集合关键字,您也可以使用简短的模块名称 apt
。但是,我们建议您使用 完全限定的集合名称 (FQCN) ansible.builtin.apt
,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合冲突。
摘要
管理 *apt* 包(例如 Debian/Ubuntu 的包)。
需求
以下是执行此模块的主机所需的条件。
python3-apt
aptitude (2.4 之前的版本)
参数
参数 |
注释 |
---|---|
允许更改处于 apt 保留列表中的包的版本。 选项
|
|
对应于 *apt* 的 此选项允许使用指定的包和版本替换已安装的更高版本的该包。 请注意,设置 (任务最终可能得到一组与要安装的指定包的完整列表不匹配的包)。
选项
|
|
如果无法验证包,则忽略。这对于引导管理自身 apt-key 设置的环境很有用。
选项
|
|
自动安装运行此模块所需的依赖项。 选项
|
|
如果为 选项
|
|
如果为 在 2.4 版本之前, 选项
|
|
如果 apt 缓存比 从 Ansible 2.4 开始,如果显式设置,则设置 默认: |
|
运行等效于 可以作为包安装的一部分运行(clean 在安装之前运行)或作为单独的步骤运行。 选项
|
|
远程机器上 .deb 包的路径。 如果路径中包含 需要 |
|
对应于 *apt* 的 |
|
将 选项应作为逗号分隔的列表提供。 默认: |
|
对应于 如果为
选项
|
|
对应于 此选项将禁用检查包的签名和下载它们的 Web 服务器的证书。 此选项*不是*在命令行上将 **这是一个具有破坏系统潜力的破坏性操作,几乎不应该使用。** 请参阅 选项
|
|
强制使用 apt-get 而不是 aptitude。 选项
|
|
对应于 选项
|
|
此操作等待获取 apt 数据库锁的秒数。 有时存在短暂的锁,这将至少重试到超时为止。 默认值: |
|
软件包名称列表,例如 引用带有特定版本的软件包名称时,例如 |
|
仅在软件包已安装的情况下才升级。 选项
|
|
强制 例如,如果 如果 如果为 |
|
指示所需的软件包状态。 选项
|
|
在操作之前运行等效于 默认情况下不更新缓存。 选项
|
|
如果缓存更新失败,则重试次数。另请参见 默认值: |
|
对每次重试使用指数退避延迟(参见 默认值: |
|
如果为 yes 或 safe,则执行 aptitude 安全升级。 如果为 full,则执行 aptitude 完全升级。 如果为 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。
如果解释器无法导入
python3-apt
,则模块还将在系统拥有的解释器中检查它。如果找不到依赖项,则根据auto_install_module_deps
的值,模块将尝试安装它。如果找到或安装了依赖项,则模块将在正确的解释器下重新启动。
示例
- 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 的输出 返回:成功,需要时 示例: |