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

时间:2015-08-31 21:02:28

标签: ansible sudo ansible-playbook

如果我想使用例如apt安装东西,我可以创建playbook:

- hosts: xxx
  roles:
     - my-role

在角色中的tasks / main.yml中:

- name: install something
  sudo: yes
  apt: "name=something state=installed"

但是,我可以在剧本中添加sudo:

- hosts: xxx
  sudo: yes
  roles:
     - my-role

将其从任务中删除:

- name: install something
  apt: "name=something state=installed"

两种解决方案都有效,但哪种解决方案更好?这个解决方案有区别吗?优点?缺点

1 个答案:

答案 0 :(得分:6)

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

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