如果我想使用例如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"
两种解决方案都有效,但哪种解决方案更好?这个解决方案有区别吗?优点?缺点
答案 0 :(得分:6)
您应该考虑最小特权原则。用户或进程应具有完成指定任务所需的最低权限级别。 例如,如果您只需要将文件上传到主目录中,那么以root身份执行操作就是一种过度杀伤力。如果要推送新的应用程序版本,请以Web用户而不是root用户身份执行。
当您在playbook级别指定sudo:
时,下面的所有任务都将以该(可能不必要的)权限级别运行。而如果您在task:
级别指定它,则只有该特定任务将以root身份运行。