community.general.dconf 模块 – 修改和读取 dconf 数据库

注意

此模块是 community.general 集合 (版本 10.1.0) 的一部分。

如果您使用的是 ansible 包,则可能已经安装了此集合。它不包含在 ansible-core 中。要检查它是否已安装,请运行 ansible-galaxy collection list

要安装它,请使用:ansible-galaxy collection install community.general。您需要其他要求才能使用此模块,有关详细信息,请参阅 要求

要在 playbook 中使用它,请指定:community.general.dconf

摘要

  • 此模块允许修改和读取 dconf 数据库。该模块作为 dconf 工具的包装器实现。有关更多详细信息,请参阅 dconf(1) 手册页。

  • 由于 dconf 需要运行的 D-Bus 会话才能更改值,因此该模块将尝试检测现有会话并重用它,或者通过 dbus-run-session 运行该工具。

要求

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

  • 可选的 gi.repository Python 库(通常包含在拥有 dconf 的主机上的操作系统中);这将在 community.general 的未来主要版本中成为非可选要求。

参数

参数

注释

key

字符串 / 必需

要修改或从中读取 dconf 数据库的 dconf 密钥。

state

字符串

对密钥/值执行的操作。

选项

  • "read"

  • "present" ← (默认)

  • "absent"

value

任意

为指定的 dconf 密钥设置的值。值应以 GVariant 格式指定。由于此格式的复杂性,最好查看 dconf 数据库中现有值。

对于 state=present 是必需的。

虽然类型指定为“原始”,但它通常应指定为字符串。但是,布尔值即使指定为布尔值而不是字符串也能正确处理(实际上,正确处理布尔值就是此参数类型为“原始”的原因)。

属性

属性

支持

描述

check_mode

支持:完全支持

可以在 check_mode 中运行,并在不修改目标的情况下返回更改状态预测。

diff_mode

支持:不支持

在差异模式下,将返回有关已更改内容(或可能需要在 check_mode 中更改)的详细信息。

注释

注意

  • 此模块依赖于 psutil Python 库(版本 4.0.0 及更高版本)、dconfdbus-senddbus-run-session 二进制文件。根据您使用的发行版,您可能需要安装其他软件包才能使用这些软件包。

  • 此模块在可用时使用 gi.repository Python 库来准确比较 dconf 中的值与 Ansible 代码中指定的值。 gi.repository 可能会出现在大多数拥有 dconf 的系统上,但可能并非随处可见。如果缺少它,则将使用值之间的简单字符串比较,并且可能存在误报,即 Ansible 可能会认为值正在更改而实际上并没有更改。此回退将在此模块的未来版本中删除,届时该模块将停止在没有 gi.repository 的主机上工作。

  • 由于 D-Bus 守护程序本身的实现细节,检测现有运行的 D-Bus 会话(需要通过 dconf 更改设置)并非 100% 可靠。如果通过 Ansible 和 dbus-run-session 更改选项,这可能会导致正在运行的应用程序无法动态获取更改。

  • 请记住,此模块围绕其进行包装的 dconf CLI 工具使用不寻常的值语法 (GVariant)。例如,如果您想提供字符串值,正确的语法是 value="'myvalue'" - 带有作为 Ansible 参数值一部分的单引号。

  • 当结合循环和类似 "[('xkb', 'us'), ('xkb', 'se')]" 的值使用时,需要注意可能的类型转换。对参数变量应用过滤器 {{ item.value | string }} 可以避免潜在的转换问题。

  • 确定某个键需要提供的精确语法/值的最简单方法是:在受该键影响的应用程序中进行配置更改,然后查看通过命令 dconf dump /path/to/dir/dconf read /path/to/key 设置的值。

示例

- name: Configure available keyboard layouts in Gnome
  community.general.dconf:
    key: "/org/gnome/desktop/input-sources/sources"
    value: "[('xkb', 'us'), ('xkb', 'se')]"
    state: present

- name: Read currently available keyboard layouts in Gnome
  community.general.dconf:
    key: "/org/gnome/desktop/input-sources/sources"
    state: read
  register: keyboard_layouts

- name: Reset the available keyboard layouts in Gnome
  community.general.dconf:
    key: "/org/gnome/desktop/input-sources/sources"
    state: absent

- name: Configure available keyboard layouts in Cinnamon
  community.general.dconf:
    key: "/org/gnome/libgnomekbd/keyboard/layouts"
    value: "['us', 'se']"
    state: present

- name: Read currently available keyboard layouts in Cinnamon
  community.general.dconf:
    key: "/org/gnome/libgnomekbd/keyboard/layouts"
    state: read
  register: keyboard_layouts

- name: Reset the available keyboard layouts in Cinnamon
  community.general.dconf:
    key: "/org/gnome/libgnomekbd/keyboard/layouts"
    state: absent

- name: Disable desktop effects in Cinnamon
  community.general.dconf:
    key: "/org/cinnamon/desktop-effects"
    value: "false"
    state: present

返回值

常见的返回值已在 此处 记录,以下是此模块特有的字段

描述

value

字符串

与请求的键关联的值

返回值:成功,状态为“已读取”

示例: "'Default'"

作者

  • Branko Majic (@azaghal)