ansible.builtin.debconf 模块 – 配置 .deb 软件包

注意

此模块是 ansible-core 的一部分,包含在所有 Ansible 安装中。在大多数情况下,即使不指定 collections 关键字,也可以使用简短模块名称 debconf。但是,我们建议您使用 完全限定集合名称 (FQCN) ansible.builtin.debconf,以便轻松链接到模块文档并避免与可能具有相同模块名称的其他集合冲突。

概要

  • 使用 debconf-set-selections 配置 .deb 软件包。

  • 或只是查询现有的选择。

需求

以下需求是在执行此模块的主机上需要的。

  • debconf

  • debconf-utils

参数

参数

注释

name

别名:pkg

字符串 / 必需

要配置的软件包的名称。

question

别名:selection, setting

字符串

debconf 配置设置。

unseen

布尔值

在预播种时不设置 seen 标志。

选项

  • false ← (默认)

  • true

value

别名:answer

任何

要将配置设置为的值。

在 Ansible 2.17 之后,value 的类型为 raw

vtype

字符串

提供的值的类型。

强烈建议在指定 vtype=password 时将 no_log=True 添加到任务中。

seen 添加在 Ansible 2.2 中。

在 Ansible 2.17 之后,用户可以将 value 指定为列表,如果 vtype 设置为 multiselect

选项

  • "布尔值"

  • "错误"

  • "multiselect"

  • "注意"

  • "密码"

  • "已见"

  • "选择"

  • "字符串"

  • "文本"

  • "标题"

属性

属性

支持

描述

check_mode

支持:完全

可以在 check_mode 中运行并返回更改状态预测,而无需修改目标,如果不受支持,则操作将被跳过。

diff_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

作者

  • Brian Coca (@bcoca)