2015-08-31 37 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

相關問題