无论如何,作为多个用户更有效地运行多个Ansible playbooks?

时间:2016-05-13 02:31:24

标签: ansible ansible-playbook

目前我的剧本结构是这样的:

~/test_ansible_roles ❯❯❯ tree .
.
├── checkout_sources
│   └── tasks
│       └── main.yml
├── install_dependencies
│   └── tasks
│       └── main.yml
├── make_dirs
│   └── tasks
│       └── main.yml
├── setup_machine.yml

我的一个角色是在我的盒子上安装依赖项,所以我需要sudo。因为我需要将所有其他任务都包括在内:

   become: yes
   become_user: my_username

有更好的方法吗?

1 个答案:

答案 0 :(得分:6)

您可以设置become选项:

  • 剧本
  • 作用
  • 任务

每本剧本:

- hosts: whatever
  become: yes
  become_user: my_username
  roles:
    - checkout_sources
    - install_dependencies
    - make_dirs

每个角色:

- hosts: whatever
  roles:
    - checkout_sources
    - role: install_dependencies
      become: yes
      become_user: my_username
    - make_dirs

每项任务:

- shell: do something
  become: yes
  become_user: my_username

你可以随心所欲地结合这个。该剧本可以作为用户A运行,作为用户B运行,最后作为用户C作为角色内的任务运行。

很少需要为每个剧本或角色定义become。如果角色中的单个任务需要sudo,则只应为该特定任务而不是角色定义。

如果角色中的多个任务需要becomeblocks会派上用场,以避免再次发生:

- block:
    - shell: do something
    - shell: do something
    - shell: do something
  become: yes
  become_user: my_username