目前,对于给定任务,ansible-2.x
提供了一个名为become_user
的选项,允许在运行上下文中的任务之前更改用户。例如:
- name: Run Django database migrations
django_manage:
command: migrate
app_path: "{{ project_path }}"
settings: "{{ django_settings_file }}"
become_user: "{{ project_user }}"
这里的become_user
仅适用于上下文中的任务,并不适用于此后运行的所有后续任务,除非明确地在这些任务中使用become_user
。在playbook中的给定任务之后,我们如何成为一组任务/后续任务的另一个用户?
注意:
我可以想到这样做的一种方法,那就是;将这些后续任务重构为新角色,并将该新角色应用于根据需要设置become_user
的单个任务。是否有其他替代/更简单的方法来更改后续任务的活动用户而不将这些任务放入单独的角色?
答案 0 :(得分:10)
这可以通过Ansible 2中引入的blocks功能完成:
- block:
- task 1
- task 2
- task N
become_user: ...