如何根据任务或任务集切换用户?

2024-04-11

我的 ansible 手册中反复出现的主题是我经常必须使用 sudo 权限执行命令(sudo: yes)因为我想为某个用户执行此操作。理想情况下,我宁愿使用 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 来 su 该用户。


使用 Ansible 1.9 或更高版本

Ansible 使用become, become_user, and become_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.

该指令在使用它的块的范围内有效(examples https://stackoverflow.com/a/37207067/807730).

See 主机和用户 http://docs.ansible.com/ansible/playbooks_intro.html#hosts-and-users一些额外的例子和成为(权限提升) http://docs.ansible.com/ansible/become.html以获得更详细的文档。

除了任务范围之外become and become_user指令,Ansible 1.9 添加了一些新变量和命令行选项,以便在没有显式指令的情况下在播放期间设置这些值:

  • 命令行选项 http://docs.ansible.com/ansible/latest/user_guide/become.html#command-line-options对于等效的become/become_user指令。
  • 连接特定变量 http://docs.ansible.com/ansible/become.html#connection-variables可以为每个主机或组设置。

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


以前的语法,从 Ansible 1.9 开始已弃用并计划删除:

- name: checkout repo
  git: repo=https://github.com/some/repo.git version=master dest={{ dst }}
  sudo: yes
  sudo_user: some_user
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何根据任务或任务集切换用户? 的相关文章

随机推荐