如何在Ansible中运行sudo-u username命令?

如何在Ansible中运行sudo-u username命令?,ansible,Ansible,我想使用Ansible以sudo-u用户名运行特定命令 我尝试了下面的任务,但面临权限问题 --- - hosts: all become: yes vars_files: - vars.yml tasks: - name: "Create solr cores" shell: /opt/apps/solr/bin/solr create -c test10 become_flags: '-u solr' register:

我想使用Ansible以sudo-u用户名运行特定命令

我尝试了下面的任务,但面临权限问题

---
-
  hosts: all
  become: yes
  vars_files:
    - vars.yml

  tasks:
    - name: "Create solr cores"
      shell: /opt/apps/solr/bin/solr create -c test10
      become_flags: '-u solr'
      register: core_one
#      changed_when: '"\"status\":0" in core_one.stdout'

有人能就此提出建议吗?

运行任务的正确方法如下

拥有适当的权限是一个先决条件。请参考man sudoers了解更多信息

- name: "Create solr cores" 
  shell: /opt/apps/solr/bin/solr create -c test10
  become: yes
  become_user: solr
  register: core_one
在游戏层面上,你已经变成了:是的,为了清晰起见

在上面的示例中,ansible使用用户“ansible”连接到远程计算机。现在,此ansible用户应该有权切换到其他用户。i、 它应该有根权限

上述代码会发生什么情况:

* ssh connection is made via ansible user (ansible-play does it)
* It uses command "sudo su solr" internally
* Then execute the command which is mentioned in shell 

谢谢@techraf。我已经尝试过了,但这会导致权限被拒绝,并导致模块_失败。无法在节点上创建与Ansible相关的文件。这里ansible_用户和sudo_用户是不同的。我在回答中写道,您需要设置适当的权限。ansible用户应该在sudo_用户列表中才能执行此操作。@NaggappanRamukannan什么是sudo_用户列表?谢谢@techraf。成功了。在获得适当权限后,问题得到解决。当我使用此选项时,ansible要求输入solr user的密码。当您使用sudo尝试任何命令时,计算机不应要求输入密码,即ansible中的Been:yes。您应该在客户端节点端进行设置。还要确保solr用户具有sudo访问权限。请尝试链接以在没有密码的情况下运行sudo
* ssh connection is made via ansible user (ansible-play does it)
* It uses command "sudo su solr" internally
* Then execute the command which is mentioned in shell