ansible become_user 用于一组任务

ansible become_user for a set of tasks

目前,对于给定的任务 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 中的给定任务之后成为一组 tasks/subsequent 任务的另一个用户?

注: 我可以想到一种方法,即;将这些后续任务集重构为一个新角色,并将该新角色应用于单个任务,并根据需要设置 become_user。是否有任何其他 alternative/simpler 方法可以在不将这些任务放入单独角色的情况下更改后续任务的活动用户?

这可以通过 Ansible 2 中引入的 blocks 功能来完成:

- block:
    - task 1
    - task 2
    - task N
  become_user: ...