ansible.builtin.debconf 模块 – 配置 .deb 软件包
注意
此模块是 ansible-core
的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,也可以使用简短模块名称 debconf
。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.debconf
,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合冲突。
概要
使用 debconf-set-selections 配置 .deb 软件包。
或只是查询现有的选择。
需求
以下需求是在执行此模块的主机上需要的。
debconf
debconf-utils
参数
参数 |
注释 |
---|---|
要配置的软件包的名称。 |
|
debconf 配置设置。 |
|
在预播种时不设置 选项
|
|
要将配置设置为的值。 在 Ansible 2.17 之后, |
|
提供的值的类型。 强烈建议在指定
在 Ansible 2.17 之后,用户可以将 选项
|
属性
属性 |
支持 |
描述 |
---|---|---|
支持:完全 |
可以在 check_mode 中运行并返回更改状态预测,而无需修改目标,如果不受支持,则操作将被跳过。 |
|
支持:完全 |
将在差异模式下返回有关已更改内容(或可能需要在 check_mode 中更改的内容)的详细信息 |
|
平台: debian |
可以针对其进行操作的目标操作系统/系列 |
注释
注意
此模块需要命令行 debconf 工具。
需要回答几个问题(取决于软件包)。在任何安装了软件包的 Debian 或衍生产品上使用 'debconf-show <package>' 查看可用的问题/设置。
某些发行版将始终将涉及设置密码的任务记录为已更改。这是因为
debconf-get-selections
会屏蔽密码。在使用此模块处理敏感信息时,强烈建议将
no_log=True
添加到任务中。ansible.builtin.debconf 模块不会重新配置软件包,它只更新 debconf 数据库。需要一个额外的步骤(通常使用
notify
如果 debconf 做出更改)来重新配置软件包并应用更改。debconf
广泛用于在安装之前预播种配置,而不是修改配置。因此,虽然dpkg-reconfigure
确实使用 debconf 数据,但它并不总是权威的,您可能需要检查您的软件包是如何处理的。还要注意
dpkg-reconfigure
是一个三阶段过程。它使用<package>.prerm reconfigure <version>
、<package>.config reconfigure <version>
和<package>.postinst control <version>
参数调用来自/var/lib/dpkg/info
目录的控制脚本。主要问题是,对于许多软件包,
<package>.config reconfigure
步骤将首先通过检查磁盘上的配置来重置 debconf 数据库(覆盖此模块所做的更改)。如果是这样,那么dpkg-reconfigure
将有效地忽略 debconf 所做的更改。但是,由于
dpkg-reconfigure
只有在文件存在时才会执行<package>.config
步骤,因此可以在执行dpkg-reconfigure -f noninteractive <package>
之前将其重命名为/var/lib/dpkg/info/<package>.config.ignore
,然后恢复它。这似乎符合 Debian 关于 .config 文件的策略。
示例
- name: Set default locale to fr_FR.UTF-8
ansible.builtin.debconf:
name: locales
question: locales/default_environment_locale
value: fr_FR.UTF-8
vtype: select
- name: Set to generate locales
ansible.builtin.debconf:
name: locales
question: locales/locales_to_be_generated
value: en_US.UTF-8 UTF-8, fr_FR.UTF-8 UTF-8
vtype: multiselect
- name: Accept oracle license
ansible.builtin.debconf:
name: oracle-java7-installer
question: shared/accepted-oracle-license-v1-1
value: 'true'
vtype: select
- name: Specifying package you can register/return the list of questions and current values
ansible.builtin.debconf:
name: tzdata
- name: Pre-configure tripwire site passphrase
ansible.builtin.debconf:
name: tripwire
question: tripwire/site-passphrase
value: "{{ site_passphrase }}"
vtype: password
no_log: True