有些任务,使用普通权限无法完成时,可以使用sudo来提升执行的权限。
例如,启动apache:
- name: Ensure the httpd service is running
service:
name: httpd
state: started
become: yes
此时,默认使用sudo 来执行启动httpd服务,如果sudo需要密码,你需要使用-K参数,提示你需要密码:
$ ansible-playbook ./test.yml -K
SUDO password:
你必须确保使用的账号在sudo 组中:
$ visudo
root ALL=(ALL) ALL
myaccount ALL=(ALL) ALL
- become:设置为
yes
激活权限提升。 - become_user :设置为具有所需权限的用户 - 您成为的用户,而不是您登录的用户。并不意味着,允许将其设置为主机级别。必须跟
become: yes 一起使用。
- become_method :在播放或任务级别)覆盖ansible.cfg中设置的默认方法,设置为sudo / su / pbrun / pfexec / doas / dzdo / ksu / runas / machinectl
- become_flags :(在游戏或任务级别)允许使用特定标志来执行任务或角色。一个常见用途是在将shell设置为no login时将用户更改为nobody。在Ansible 2.2中添加。
其他参考:https://docs.ansible.com/ansible/latest/user_guide/become.html