暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Ansible实战:掌握authorized_key, user, group模块的高效用法

Linux运维智行录 2024-11-14
49

在当今快速发展的IT环境中,自动化运维成为了提高工作效率、减少人为错误的关键手段之一。Ansible作为一款强大的自动化工具,其简洁的配置管理和任务执行能力深受广大运维人员的喜爱。本文将聚焦于Ansible中的authorized_key
, user
, 和 group
三个模块,探讨它们如何帮助我们实现更高效的用户管理与权限分配。

让机器干活,让人思考。


01
authorized_key模块

authorized_key模块用于管理SSH授权密钥,它允许我们在远程主机上添加、修改或删除用户的SSH公钥。这对于确保只有授权用户能够通过SSH访问服务器至关重要。使用此模块时,可以指定user(用户名)、key(公钥字符串)等参数来完成操作

模块名称模块说明
user(required)用户名
key(required)ssh公钥文件
statepresent 和 absent
pathauthorized_keys文件路径

示例配置:

1、授权免密登录ansible主机的ops用户

$ ansible -i hosts 172.139.20.121 -m authorized_key -a "user=ops key={{ lookup('file', '/home/ops/.ssh/id_rsa.pub') }} state=present" 
172.139.20.121 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "comment": null, 
    "exclusive": false, 
    "follow": false, 
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnsbz/9E/gI6J20GmcniSWsLH2KS5XJQepkrADAN15S/8EbjpqaXR2FSigIt0fuRjS5K3fCVOIGC9Yi/caoa/vl5ALoAi2lF+v1gvdvMPVtSWXQFjVkP5BCrZTxCxCBPBjr0uPc9UPvTvBpD/h4A1cLDxXia3LX1iLweN1B6HF1Dp0ou6Ck+SLy2/x+rkVP+fhhPjnYpWgP1nzWCpSY2kQxigcEws0Z9dFrLAM1+x6b4wILuYemV0UY0TnkBvHCyPFBDhxatGI+M/nDC0yD9ZLlUoazr8o2ofM4HVdlYk/+CPU0QSGtcgPqAEh36LwYexjBSpSRX8psL2wsYCq0UBd ops@ansible", 
    "key_options": null, 
    "keyfile": "/home/ops/.ssh/authorized_keys", 
    "manage_dir": true, 
    "path": null, 
    "state": "present", 
    "user": "ops", 
    "validate_certs": true
}


2、回收免密登录ansible主机的ops用户

$ ansible -i hosts 172.139.20.121 -m authorized_key -a "user=ops key={{ lookup('file', '/home/ops/.ssh/id_rsa.pub') }} state=absent"           
172.139.20.121 | CHANGED => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": true, 
    "comment": null, 
    "exclusive": false, 
    "follow": false, 
    "key": "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCnsbz/9E/gI6J20GmcniSWsLH2KS5XJQepkrADAN15S/8EbjpqaXR2FSigIt0fuRjS5K3fCVOIGC9Yi/caoa/vl5ALoAi2lF+v1gvdvMPVtSWXQFjVkP5BCrZTxCxCBPBjr0uPc9UPvTvBpD/h4A1cLDxXia3LX1iLweN1B6HF1Dp0ou6Ck+SLy2/x+rkVP+fhhPjnYpWgP1nzWCpSY2kQxigcEws0Z9dFrLAM1+x6b4wILuYemV0UY0TnkBvHCyPFBDhxatGI+M/nDC0yD9ZLlUoazr8o2ofM4HVdlYk/+CPU0QSGtcgPqAEh36LwYexjBSpSRX8psL2wsYCq0UBd ops@ansible", 
    "key_options": null, 
    "keyfile": "/home/ops/.ssh/authorized_keys", 
    "manage_dir": true, 
    "path": null, 
    "state": "absent", 
    "user": "ops", 
    "validate_certs": true
}

02
user模块

user模块是Ansible中用来创建、修改或删除系统用户的核心组件。通过这个模块,我们可以轻松地设置用户的属性,如用户名、密码、主目录、默认shell等。此外,user模块还支持定义用户所属的组以及是否锁定账户等功能。

模块名称模块说明
name(required)用户名
uid设置用户id
group/groups用户所属组,授权多个用户组的话,请用 , 分割符
system账号是否为系统账号, 默认 no
comment账号的注释
create_home是否创建家目录,默认:yes
expires用户过期时间
home家目录路径
password将用户的密码设置为此加密值
remove删除用户时,是否删除家目录。默认 no
statepresent,absent

示例配置:

# 创建test用户,密码为JIf.54*2s,有效期为一个月
$ ansible -i hosts 172.139.20.121 -e pwd="JIf.54*2s" -m user -a "name=test state=present password={{ pwd | password_hash('sha512') }} expires=`date -d '1 month' +%s`"

# 更新密码,与创建用户一样
$ ansible -i hosts 172.139.20.121 -e pwd="JIf.54*2sfs" -m user -a "name=test state=present password={{ pwd | password_hash('sha512') }}"

# 创建test用户,用户id为1888,组是root,不创建家目录,有效期3个月
$ ansible -i hosts 172.139.20.121 -m user -a "name=test uid=1888 group=root create_home=no expires=`date -d '3 month' +%s`" 

# 删除test用户并删除家目录
$ ansible -i hosts 172.139.20.121 -m user -a 'name=test state=absent remove=true'

03
group模块

group模块则专注于系统组的管理。它可以用来创建新的用户组、更改现有组的信息或者删除不再需要的组。使用group模块时,可以通过指定name(组名)、gid(组ID)等选项来控制组的具体配置。

模块名称模块说明
name(required)用户组名称
gid 用户组id
statepresent,absent

示例配置:

# 创建test组,组id为1888
$ ansible -i hosts local -m group -a "name=test gid=188 state=present" 

# 删除test组
$ ansible -i hosts local -m group -a "name=test state=absent"


04
结语

通过本文对Ansible中authorized_key, user, 和 group模块的介绍,希望能帮助大家更好地理解和运用这些工具,以实现更加高效、安全的用户及权限管理。随着技术的发展,Ansible的功能也在不断丰富和完善,掌握这些基础知识将为您的自动化运维之路打下坚实的基础。希望每位读者都能在实际工作中找到适合自己的应用场景,让工作变得更加轻松愉快。


别忘了,关注我们的公众号,获取更多关于容器技术和云原生领域的深度洞察和技术实战,让我们携手在技术的海洋中乘风破浪!

END

文章转载自Linux运维智行录,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论