Ansible 在剧本和任务中使用sudo有什么区别?
如果我想使用例如apt安装某些东西,我可以创建剧本: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
- 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变成和变成用户的语法变化。