Ansible 在剧本和任务中使用sudo有什么区别?

Ansible 在剧本和任务中使用sudo有什么区别?,ansible,sudo,ansible-playbook,Ansible,Sudo,Ansible Playbook,如果我想使用例如apt安装某些东西,我可以创建剧本: - hosts: xxx roles: - my-role - hosts: xxx sudo: yes roles: - my-role 在tasks/main.yml的角色中: - name: install something sudo: yes apt: "name=something state=installed" 但是,我可以在剧本中添加sudo: - hosts: xxx ro

如果我想使用例如apt安装某些东西,我可以创建剧本:

- hosts: xxx
  roles:
     - my-role
- hosts: xxx
  sudo: yes
  roles:
     - my-role
在tasks/main.yml的角色中:

- name: install something
  sudo: yes
  apt: "name=something state=installed"
但是,我可以在剧本中添加sudo:

- hosts: xxx
  roles:
     - my-role
- hosts: xxx
  sudo: yes
  roles:
     - my-role
并将其从任务中删除:

- name: install something
  apt: "name=something state=installed"
两种解决方案都有效,但哪种解决方案更好?这两种解决方案之间有什么区别?赞成的意见?缺点?

< P>你应该考虑最小特权原则。用户或进程应具有完成指定任务所需的最低权限级别。 例如,如果您只需要将一个文件上传到主目录中,那么以root用户的身份进行操作就太过分了。如果要推送新的应用程序版本,请以web用户而不是root用户的身份进行推送

当您在playbook级别指定
sudo:
时,下面的所有任务都将在该(可能不必要的)权限级别上运行。而如果在>任务:

您应该考虑最小特权原则。用户或进程应具有完成指定任务所需的最低权限级别。 例如,如果您只需要将一个文件上传到主目录中,那么以root用户的身份进行操作就太过分了。如果要推送新的应用程序版本,请以web用户而不是root用户的身份进行推送


当您在playbook级别指定
sudo:
时,下面的所有任务都将在该(可能不必要的)权限级别上运行。然而,如果您在
任务:
级别指定它,则只有该特定任务将以root身份运行。

我可能会添加这样一种可能性,即一个案例可能有10个任务中的9个任务需要升级权限,在这种情况下,重构到playbook级别可能感觉不那么重复。您可能还想查看通过sudo变成和变成用户的语法变化。我要补充的是,一个案例可能有9/10的任务需要升级权限,在这种情况下,重构到playbook级别可能感觉不那么重复。您可能还想查看通过sudo变成和变成用户的语法变化。