分享交流
合作共赢!

ansible 普通用户执行root权限操作方法

方法一、become语句的调用

ansible -h可以看到有

  • –become (-b)
  • –become-method
  • –become-user
  • –ask-become-pass (-K)大写K

四个参数,利用这四个参数可以在ansible命令和playbook中用普通用户执行root操作。

命令:

ansible 10.12.3.27,10.31.2.38 -m shell -a 'date' -b --become-method su --become-user root --ask-become-pass(-K)大写K

输入密码后,相当于用root执行了date命令,可以把date换成 cat /etc/shadow验证root权限。 多个ip(主机列表)的主机需要相同的root密码(只用输入一次),密码不同可以分多次或者直接配好密码。

如果想配好密码,可以在/etc/ansible/hosts为每个机器添加密码或者为组添加密码。例如:

[groupa]
10.10.10.1 ansible_become_pass=rootpwd1
10.10.10.2 ansible_become_pass=rootpwd2
[groupb]
10.10.10.3
10.10.10.4
[groupb:vars]
ansible_become_pass=rootpwd34

实例:

[ucentos]
130.147.219.38
[ucentos:vars]
ansible_ssh_user=hpadmin
ansible_ssh_pass=P@ssw0rd
ansible_become_pass=P@ssw0rd (*重要)

如果失败可能是ssh过去后,执行su -后没有提示输入密码,应该是编码问题,在受控机器上执行echo export en_CN.utf-8 >>~/.bashrc,然后再执行ansible命令试试。

在playbook中使用如下:

playbook:

---
- hosts: 10.12.3.28,10.12.3.27
  become: yes
  become_user: root
  become_method: su
  tasks:
  - name: date
    shell: date

others

- hosts: www.361way.com
 remote_user: zabbix
 become: yes
 become_method: su
 tasks:
- selinux:
 state: disabled
- name: disable firewalld
 shell: systemctl stop firewalld && systemctl disable firewalld

上面的切换主要使用的是become语句,其参数主要解释如下:

become: yes #是否允许身份切换
become_method: su #切换用户身份的方式,有sudo、su、pbrun等方式,默认为sudo
become_user: root #切换指定的用户

become语句的使用,可以是在全局位置(见开始示例),也可以是在局部任务处,如下是局部任务位调用的方法:

tasks:
- name: transfer file to server
 copy: src=/root/pswd.sh dest=/tmp/pswd.sh mode=755
- name: to root and chage password
 become: yes
 become_method: su
 shell: /bin/bash -x /tmp/pswd.sh

当然,这里不仅仅是切换为root,也可以配合become_user,切换为其他用户。

方法二、通过sudo进行操作

sudo相关的配置文件内容解释如下:

  • hosts:用于指定要执行指定任务的主机其可以是一个或多个由冒号分隔主机组。
  • remote_user :用于指定远程主机上的执行任务的用户。不过remote_user也可用于各task中。也可以通过指定其通过sudo的方式在远程主机上执行任务其可用于play全局或某任务。此外甚至可以在sudo时使用sudo_user指定sudo时切换的用户。
  • user:于remote_user相同
  • sudo:如果设置为yes,执行该任务组的用户在执行任务的时候,获取root权限
  • sudo_user:如果设置userbreezesudoyessudo_userbernie时,则breeze用户在执行任务时会获得bernie用户的权限

使用的时候也比较简单,还是如最上面的配置一样,只是从become换成了sudo,所不同的是,sudo方式需要事先配置的有sudo权限。

赞(7) 打赏
未经允许不得转载:琼杰笔记 » ansible 普通用户执行root权限操作方法

评论 抢沙发

评论前必须登录!

 

分享交流,合作共赢!

联系我们加入QQ群

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏