ansible.builtin.apt 模块 – 管理 apt 包
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,也可以使用简短的模块名称 apt
。但是,我们建议您使用 完全限定的集合名称 (FQCN) ansible.builtin.apt
来轻松链接到模块文档,并避免与可能具有相同模块名称的其他集合发生冲突。
概要
管理 *apt* 包(例如 Debian/Ubuntu)。
要求
以下要求在执行此模块的主机上是必需的。
python-apt(python 2)
python3-apt(python 3)
aptitude(在 2.4 之前)
参数
参数 |
评论 |
---|---|
允许更改 apt 保留列表中包的版本。 选择
|
|
对应于 *apt* 的 此选项使指定的包和版本能够替换已安装的该包的更高版本。 请注意,设置 (任务最终可能得到一组与要安装的指定包的完整列表不匹配的包)。
选择
|
|
如果无法对包进行身份验证,则忽略。这对于引导管理自身 apt 密钥设置的环境很有用。
选择
|
|
如果 选择
|
|
如果 在 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 下运行并返回更改状态预测,而无需修改目标,如果不受支持,则操作将被跳过。 |
|
支持:完整 |
在 diff 模式下,将返回有关更改内容(或可能在 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 的输出 已返回:成功,在需要时 示例: |