ansible.builtin.debconf 模块 – 配置 .deb 包
注意
此模块是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定集合关键字,也可以使用短模块名称 debconf。但是,我们建议您使用完全限定的集合名称 (FQCN) ansible.builtin.debconf,以便轻松链接到模块文档,并避免与其他可能具有相同模块名称的集合冲突。
概要
- 使用 debconf-set-selections 配置 .deb 包。 
- 或者只是查询现有的选择。 
要求
以下要求需要在执行此模块的主机上满足。
- debconf 
- debconf-utils 
参数
| 参数 | 注释 | 
|---|---|
| 要配置的软件包的名称。 | |
| 一个 debconf 配置设置。 | |
| 预先设置时,不要设置  选项 
 | |
| 要将配置设置为的值。 在 Ansible 2.17 之后, | |
| 提供的值的类型。 强烈建议在指定  
 在 Ansible 2.17 之后,如果  选项 
 | 
属性
| 属性 | 支持 | 描述 | 
|---|---|---|
| 支持: 完整 | 可以在 check_mode 中运行,并返回更改的状态预测,而无需修改目标,如果不支持,则将跳过该操作。 | |
| 支持: 完整 | 在 diff 模式下,将返回已更改(或可能需要在 check_mode 中更改)的详细信息 | |
| 平台: debian | 可以操作的目标操作系统/系列 | 
备注
注意
- 此模块需要命令行 debconf 工具。 
- 必须回答几个问题(取决于软件包)。在安装了软件包的任何 Debian 或衍生版本上使用“debconf-show <package>”来查看可用的问题/设置。 
- 某些发行版总是会将涉及设置密码的任务记录为已更改。这是由于 - debconf-get-selections掩盖密码。
- 强烈建议在使用此模块处理敏感信息时,向任务添加 - no_log=True。
- ansible.builtin.debconf 模块不重新配置软件包,它只是更新 debconf 数据库。需要额外的步骤(如果 debconf 进行了更改,通常使用 - notify)来重新配置软件包并应用更改。- 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
