2015-08-31 35 views
0

如果我想使用如易我可以创造剧本安装的东西:在角色在剧本和任务中使用sudo有什么区别?

- hosts: xxx 
    roles: 
    - my-role 

而且在任务/ 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" 

这两种解决方案都可以工作,但哪种解决方案更好?这个解决方案有什么区别?优点?缺点?

回答

6

您应该考虑最小特权原则。用户或进程应具有完成指定任务所需的最低权限级别。 例如,如果您只需要将文件上载到您的主目录,以root身份执行操作就是一个矫枉过正的行为。如果您想要推送新的应用程序版本,请将其作为Web用户而不是根用户。

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

+2

我可能会添加一个案例可能有9个需要升级权限的任务,在这种情况下,重构到剧本级别可能会感觉不太重复。您可能还想查看sudo中become和become_user的语法更改。 http://docs.ansible.com/ansible/become.html – j12y

相关问题