如何切换每个任务或一组任务的用户?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

理想情况下,我宁愿使用sudo切换到该用户并正常执行命令。因为那样我就不必像通常的发布命令那样进行清理了,例如chowning目录。以下是我的其中一本剧本的片段:

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  sudo: yes
- name: change perms
  file: dest={{ dst }} state=directory mode=0755 owner=some_user
  sudo: yes

理想情况下,我可以将命令或一组命令作为不同的用户运行,即使它需要使用sudo才能使用该用户。

提问于
用户回答回答于

随着Ansible 1.9或更高版本

Ansible使用becomebecome_userbecome_method指令来实现权限升级。你可以将它们应用到整个剧本或剧本,将它们设置在包含的剧本中,或将它们设置为特定任务。

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  become: yes
  become_user: some_user

你可以使用它become_with来指定特权升级如何实现,默认为sudo

该指令对于其使用的块的范围有效

有关更多详细信息,请参阅主机和用户以及成为(权限升级)

除了任务范围becomebecome_user指令之外,Ansible 1.9还添加了一些新的变量和命令行选项,以在没有明确指令的情况下设置这些值的持续时间:

从Ansible 2.0.2.0开始,下面描述的旧sudo/ sudo_user语法仍然有效,但弃用声明指出:“此功能将在未来版本中删除。”

用户回答回答于

在Ansible> 1.4中,你实际上可以在任务级别指定一个远程用户,该用户应允许你以该用户身份登录并执行该命令,而不诉诸sudo。如果你不能以该用户身份登录,那么sudo_user解决方案也可以工作。

---
- hosts: webservers
  remote_user: root
  tasks:
    - name: test connection
      ping:
      remote_user: yourname

请参阅http://docs.ansible.com/playbooks_intro.html#hosts-and-users

扫码关注云+社区