使用 ansible 操作时,用户权限相关的设置

使用 ansible 操作时,有时候需要切换到特权账号,比如 root。

切换到特权用户(root)

使用登录用户 ops 操作时,因为目标权限设置,ops 用户没有 /etc 目录的写入权限:

$ ansible -i inventories/production/hosts -u ops  all   -m command  -a "touch /etc/a"
10.19.11.7 | FAILED | rc=1 >>
touch: cannot touch ‘/etc/a’: Permission deniednon-zero return code

10.19.117.30 | FAILED | rc=1 >>
touch: cannot touch ‘/etc/a’: Permission deniednon-zero return code

依然使用 ops 用户,加上参数 -b --become-user=root 提升到 root 用户,提升方法用 --become-method 指定,默认是 sudo:

$ ansible -i inventories/production/hosts -u ops -b --become-user=root all   -m command  -a "touch /etc/a"
10.19.11.7 | CHANGED | rc=0 >>
10.19.117.30 | CHANGED | rc=0 >>

使用 playbook 时,也可以在 playbook 文件中设置:

- hosts: all
  gather_facts: no
  become: true
  become_user: root