ansible之权限升级

playbook权限升级

了解权限升级: Ansible 社区文档

playbook参数

参数 释义
become true和false,是否开启特权升级
remote_user 执行任务的用户
become_user 切换到受控机上的哪个用户
become_flags 允许对任务或角色使用特定标志。’-s /bin/sh’
become_method sudo |su |pbrun |pfexec |doas |dzdo |ksu |runas |machinectl

​ 要指定 sudo 的密码,使用 ansible-playbook –ask-become-pass -K become -K

清单变量

参数 释义
ansible_become 覆盖该指令并决定是否使用权限提升。become
ansible_become_method 应使用哪种权限提升方法
ansible_become_user 设置您通过权限提升成为的用户
ansible_become_password 设置权限提升密码。
ansible_common_remote_group 确定 Ansible 是否应尝试将其临时文件发送到组
webserver ansible_user=manager ansible_become=true

命令行变量

参数 释义
–ask-become-pass, -K 要求提供权限升级密码;并不意味着会成为将被使用。请注意,此密码将用于所有主机。
–become, -b 使用 BECOME 运行操作(无密码隐含)
–become-method=BECOME_METHOD 要使用的权限提升方法(默认=sudo), 有效选择:sudo |su |pbrun |pfexec |doas |dzdo |ksu |runas |machinectl
–become-user=BECOME_USER 以此用户身份运行操作 (default=root),并不意味着--become/-b

become测试

centos70 ansible_user=ansible ansible_password=111111
---
- name:
  gather_facts: no
  hosts: centos70
  tasks:
    - name: 测试主机
      shell: touch /tmp/become
[root@eab5aec2df6c palybook]# ansible-playbook ping.yml

[root@centos70 ~]# ls -l /tmp/become
-rw-r--r-- 1 ansible ansible 0 Jun  6 09:17 /tmp/become
[root@eab5aec2df6c palybook]# ansible-playbook ping.yml --ask-become-pass (必须要配置,如果sudo没有配置免密)
BECOME password:

PLAY [centos70] *************************************************************************************************************************

TASK [测试主机] *************************************************************************************************************************
changed: [centos70]

PLAY RECAP ******************************************************************************************************************************
centos70                   : ok=1    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

[root@centos70 ~]# ls -l /tmp/become_user
-rw-r--r-- 1 root root 0 Jun  6 09:34 /tmp/become_user

通过以上配置,先以ansible运行命令,临时提权为root用户下新建了文件

如果不想配置–ask-become-pass手动输入密码,可以在清单文件中配置

centos70 ansible_user=ansible ansible_password=111111 ansible_become_password=111111

错误及解决

Failed to create temporary directory.

TASK [测试主机] **************************************************************************************************************************
fatal: [centos70]: UNREACHABLE! => {"changed": false, "msg": "Failed to create temporary directory. In some cases, you may have been able to authenticate and did not have permissions on the target directory. Consider changing the remote tmp path in ansible.cfg to a path rooted in \"/tmp\", for more error information use -vvv. Failed command was: ( umask 77 && mkdir -p \"` echo /home/ansible/.ansible/tmp `\"&& mkdir \"` echo /home/ansible/.ansible/tmp/ansible-tmp-1717664850.594444-1739-182305253388095 `\" && echo ansible-tmp-1717664850.594444-1739-182305253388095=\"` echo /home/ansible/.ansible/tmp/ansible-tmp-1717664850.594444-1739-182305253388095 `\" ), exited with result 1", "unreachable": true}

PLAY RECAP *******************************************************************************************************************************
centos70                   : ok=0    changed=0    unreachable=1    failed=0    skipped=0    rescued=0    ignored=0

原因是我使用ansible用户登录,默认要使用/home/ansible目录来创建临时文件,但是我没有添加家目录,所有报错

[root@centos70 ~]# mkdir /home/ansible
[root@centos70 ~]# chown -R  ansible:ansible /home/ansible
[root@centos70 ~]# chmod -R 750 /home/ansible/
点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注