反正有多个用户更高效地运行多个Ansible手册吗?

Low*_*ong 4 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
Run Code Online (Sandbox Code Playgroud)

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

   become: yes
   become_user: my_username
Run Code Online (Sandbox Code Playgroud)

有一个更好的方法吗 ?

udo*_*dan 8

您可以设置每个become选项:

  • 剧本
  • 角色
  • 任务

每本剧本:

- hosts: whatever
  become: yes
  become_user: my_username
  roles:
    - checkout_sources
    - install_dependencies
    - make_dirs
Run Code Online (Sandbox Code Playgroud)

每个角色:

- hosts: whatever
  roles:
    - checkout_sources
    - role: install_dependencies
      become: yes
      become_user: my_username
    - make_dirs
Run Code Online (Sandbox Code Playgroud)

每项任务:

- shell: do something
  become: yes
  become_user: my_username
Run Code Online (Sandbox Code Playgroud)

您可以随意组合使用.该剧本可以作为用户A运行,作为用户B运行,最后作为用户C作为角色内的任务运行.

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

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

- block:
    - shell: do something
    - shell: do something
    - shell: do something
  become: yes
  become_user: my_username
Run Code Online (Sandbox Code Playgroud)