community.general.alternatives 模块 – 管理常用命令的替代程序

注意

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

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

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

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

概要

  • 使用“update-alternatives”工具管理符号链接。

  • 当安装了多个程序但提供类似功能(例如,不同的编辑器)时很有用。

要求

以下是执行此模块的主机上所需的条件。

  • update-alternatives

参数

参数

注释

family

字符串

在 community.general 10.1.0 中添加

family 将类似的替代项分组。此选项仅在基于 RHEL 的发行版上可用。

路径

指向实际可执行文件的符号链接的路径。

此选项在基于 RHEL 的发行版中始终是必需的。在基于 Debian 的发行版中,当替代项 name 对系统未知时,此选项是必需的。

name

字符串 / 必需

链接的通用名称。

路径

路径

链接应指向的实际可执行文件的路径。

priority

整数

替代项的优先级。如果创建时未给出优先级,则使用 50 作为后备。

state

字符串

在 community.general 4.8.0 中添加

present - 安装替代项(如果尚未安装),但不将其设置为组的当前选定替代项。

selected - 安装替代项(如果尚未安装),并将其设置为组的当前选定替代项。

auto - 安装替代项(如果尚未安装),并将组设置为自动模式。在 community.general 5.1.0 中添加。

absent - 删除替代项。在 community.general 5.1.0 中添加。

选项

  • "present"

  • "selected" ← (默认)

  • "auto"

  • "absent"

subcommands

别名:slaves

列表 / 元素=字典

在 community.general 5.1.0 中添加

子命令列表。

每个子命令都需要一个 name、一个 link 和一个 path 参数。

子命令也称为“slaves”(从属)或“followers”(跟随者),具体取决于 alternatives 的版本。

路径 / 必需

指向实际子命令可执行文件的符号链接的路径。

name

字符串 / 必需

子命令的通用名称。

path

路径 / 必需

子命令应指向的实际可执行文件的路径。

属性

属性

支持

描述

check_mode

支持:完全支持

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

diff_mode

支持:完全支持

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

示例

- name: Correct java version selected
  community.general.alternatives:
    name: java
    path: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java

- name: Select java-11-openjdk.x86_64 family
  community.general.alternatives:
    name: java
    family: java-11-openjdk.x86_64
  when: ansible_os_family == 'RedHat'

- name: Alternatives link created
  community.general.alternatives:
    name: hadoop-conf
    link: /etc/hadoop/conf
    path: /etc/hadoop/conf.ansible

- name: Make java 32 bit an alternative with low priority
  community.general.alternatives:
    name: java
    path: /usr/lib/jvm/java-7-openjdk-i386/jre/bin/java
    priority: -10

- name: Install Python 3.5 but do not select it
  community.general.alternatives:
    name: python
    path: /usr/bin/python3.5
    link: /usr/bin/python
    state: present

- name: Install Python 3.5 and reset selection to auto
  community.general.alternatives:
    name: python
    path: /usr/bin/python3.5
    link: /usr/bin/python
    state: auto

- name: keytool is a subcommand of java
  community.general.alternatives:
    name: java
    link: /usr/bin/java
    path: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
    subcommands:
      - name: keytool
        link: /usr/bin/keytool
        path: /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/keytool

作者

  • Marius Rieder (@jiuka)

  • David Wittman (@DavidWittman)

  • Gabe Mulley (@mulby)