community.general.sudoers 模块 – 管理 sudoers 文件

注意

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

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

要安装它,请使用:ansible-galaxy collection install community.general

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

community.general 4.3.0 中的新增功能

概要

  • 此模块允许操作 sudoers 文件。

参数

参数

注释

commands

list / elements=string

sudoers 规则允许的命令。

可以通过传递命令列表来添加多个命令。

对于所有命令,请使用 ALL

group

string

sudoers 规则的组的名称。

此选项不能与 user 结合使用。

host

string

在 community.general 6.2.0 中添加

指定规则适用的主机。

默认值: "ALL"

name

string / 必填

sudoers 规则的名称。

这将用作此规则管理的 sudoers 文件的文件名。

noexec

boolean

在 community.general 8.4.0 中添加

是否阻止命令本身运行其他命令。

选项

  • false ← (默认)

  • true

nopassword

boolean

是否需要密码才能运行 sudo 命令。

选项

  • false

  • true ← (默认)

runas

string

在 community.general 4.7.0 中添加

指定命令将以哪个目标用户身份运行。

setenv

boolean

在 community.general 6.3.0 中添加

是否允许在使用 sudo 运行命令时保留环境。

选项

  • false ← (默认)

  • true

state

string

规则是否应该存在。

选项

  • "present" ← (默认)

  • "absent"

sudoers_path

string

将在此路径中管理 sudoers 配置文件。

默认值: "/etc/sudoers.d"

user

string

sudoers 规则的用户的名称。

此选项不能与 group 结合使用。

validation

string

在 community.general 5.2.0 中添加

如果为 absent,则将添加 sudoers 规则而不进行验证。

如果为 detect 并且 visudo 可用,则将通过 visudo 验证 sudoers 规则。

如果为 required,则 visudo 必须可用以验证 sudoers 规则。

选项

  • "absent"

  • "detect" ← (默认)

  • "required"

属性

属性

支持

描述

check_mode

支持:完整

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

diff_mode

支持:

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

示例

- name: Allow the backup user to sudo /usr/local/bin/backup
  community.general.sudoers:
    name: allow-backup
    state: present
    user: backup
    commands: /usr/local/bin/backup

- name: Allow the bob user to run any commands as alice with sudo -u alice
  community.general.sudoers:
    name: bob-do-as-alice
    state: present
    user: bob
    runas: alice
    commands: ALL

- name: >-
    Allow the monitoring group to run sudo /usr/local/bin/gather-app-metrics
    without requiring a password on the host called webserver
  community.general.sudoers:
    name: monitor-app
    group: monitoring
    host: webserver
    commands: /usr/local/bin/gather-app-metrics

- name: >-
    Allow the alice user to run sudo /bin/systemctl restart my-service or
    sudo /bin/systemctl reload my-service, but a password is required
  community.general.sudoers:
    name: alice-service
    user: alice
    commands:
      - /bin/systemctl restart my-service
      - /bin/systemctl reload my-service
    nopassword: false

- name: Revoke the previous sudo grants given to the alice user
  community.general.sudoers:
    name: alice-service
    state: absent

- name: Allow alice to sudo /usr/local/bin/upload and keep env variables
  community.general.sudoers:
    name: allow-alice-upload
    user: alice
    commands: /usr/local/bin/upload
    setenv: true

- name: >-
    Allow alice to sudo /usr/bin/less but prevent less from
    running further commands itself
  community.general.sudoers:
    name: allow-alice-restricted-less
    user: alice
    commands: /usr/bin/less
    noexec: true

作者

  • Jon Ellis (@JonEllis)