如何给用户授权运行Ansible命令或特定标签

44次阅读
没有评论

问题描述

想知道如何给一个用户授权运行Ansible命令或特定标签。例如,用户希望通过SSH在Ansible服务器上的另一台服务器上使用用户’testusr’运行以下命令:ansible -playbook -i /path agent.yml --tags installagent。用户想知道应该怎么做,是否可以限制’testusr’只能使用特定的标签。(用户在某处读到,应该给该用户授予sudo权限。如果这是真的,如果我不想给sudo权限,我应该怎么做?)

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Ansible中,没有工具可以授权用户仅执行选定的命令或标签。但是,可以使用sudo来授权用户执行选择性命令。
以下是一些步骤来授权用户’testusr’执行特定标签的命令:
1. 在Ansible服务器上,使用visudo命令编辑sudoers文件:

sudo visudo
  1. sudoers文件中,添加以下行来授权用户’testusr’执行特定标签的命令:
testusr ALL=(ALL) NOPASSWD: /usr/bin/ansible-playbook -i /path agent.yml --tags installagent

这将允许用户’testusr’以无需密码的方式执行特定标签的命令。
请注意,这种方法需要用户’testusr’具有sudo权限,并且可以在sudoers文件中执行编辑操作。如果您不想给用户’testusr’授予sudo权限,可以考虑使用其他方法。

方案2

使用其他方法来限制用户’testusr’只能使用特定标签可能需要更多的配置和管理。
除了使用sudo之外,还可以考虑使用其他方法来限制用户’testusr’只能使用特定标签。这可能需要更多的配置和管理,但可以避免给用户’testusr’授予sudo权限。
以下是一种可能的方法:
1. 在Ansible服务器上,创建一个新的用户组,例如ansible-users

sudo groupadd ansible-users
  1. 将用户’testusr’添加到ansible-users组中:
sudo usermod -a -G ansible-users testusr
  1. 在Ansible服务器上,创建一个新的目录,例如/etc/ansible-tags,并将其所有者设置为root
sudo mkdir /etc/ansible-tags
sudo chown root:root /etc/ansible-tags
  1. /etc/ansible-tags目录中,为每个允许用户’testusr’执行的标签创建一个文件。例如,如果用户’testusr’只能执行installagent标签,可以创建一个名为installagent的文件:
sudo touch /etc/ansible-tags/installagent
  1. 将文件的所有者设置为root,并将其权限设置为只允许所有者执行:
sudo chown root:root /etc/ansible-tags/installagent
sudo chmod 700 /etc/ansible-tags/installagent
  1. 在Ansible服务器上,为用户’testusr’创建一个新的SSH密钥对,并将公钥添加到authorized_keys文件中:
sudo su - testusr
ssh-keygen -t rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  1. 在Ansible服务器上,将/etc/ansible-tags目录的权限设置为只允许用户’testusr’读取:
sudo chmod 750 /etc/ansible-tags

现在,用户’testusr’只能使用特定标签,并且无需sudo权限即可执行Ansible命令。
请注意,这种方法需要更多的配置和管理,并且需要确保用户’testusr’无法修改/etc/ansible-tags目录中的文件。

正文完