5. ansible之sudo提权

发布时间 2023-05-09 23:59:59作者: 站在巨人的肩上Z

在linux中为了安全,一般root(超级管理员权限)是不可能随便给人用的,但是在linux中有些命令只有root才能执行,因此我们用普通用户执行这些命令时需要给他们添加sudo权限

配置文件/etc/sudoers   注意:这个配置只要root用户才有权限进行修改

这里使用ansible批量创建一个普通用户,然后给这个用户用sudo提权

# 创建用户alice
ansible test -m user -a "name=alice password={{'123'|password_hash('sha512')}}"

# sudo权限,让alice可以执行任何命令
ansible test -m lineinfile -a "path=/etc/sudoers line='alice ALL=(ALL) NOPASSWD:ALL'

修改主配置文件ansible.cfg

[defaults]
inventory = ~/ansible/hosts
remote_user = alice     #以什么用户远程被管理主机
[privilege_escalation]
become = true           # 是否需要切换用户
become_method = sudo    # 如何切换用户
become_user = root      # 切换成什么用户
become_ask_pass = False # sudo是否需要输入密码

当在控制机上用ansible批量管理其他节点(如果用alice用户管理),需要加上上面的配置文件,且需要控制机到各个节点的实现免密

for i in db01 db01

do

  ssh-copy-id  alice@$i

done

这样就可以用普通用户管理其他节点了

补充:我们用ansible配置host文件时,账户和密码以及端口都是统计管理,但是如果需要做特别设置(自定义),这里我们可以改一下hosts文件

修改主机清单文件,添加变量(多个变量可以用空格分隔)

[test]
db01    ansible_ssh_port=220               #自定义远程ssh端口
db02    ansible_ssh_user=alice               #自定义远程连接账户
[servers]
db03    ansible_ssh_pass=密码               #自定义远程连接密码
db04    ansible_ssh_private_key_file=密钥文件  #自定义远程连接密钥
db05