关于ansible的模块 ③

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


《关于Ansible的模块①》《关于Ansible的模块②》,继续学习ansible的user模块。

user模块可以增、删、改linux远程目标节点的用户账户,并为其设置账户的属性。

模块参数

|--------------------|----------------------|--------------------------------------------------------------------|
| 参数 | 可选项&默认值【红色】 | 含义 |
| name【必填参数】 | | 指定要创建/修改/删除的用户名,必填 |
| group | - | 指定用户属于哪个组 |
| groups | - | 指定用户属于哪些组 |
| comment | - | 设置账户描述 |
| home | - | 指定家目录路径,默认在/home |
| create_home | true/false | 是否创建家目录,默认创建,如无需创建则将该参数设置为false |
| move_home | true/false | 是否迁移家目录到指定目录 |
| expires | - | 设置用户到期时间 |
| remove | true/false | 参数在 state=absent 时使用,删除与用户关联的目录。等价于 userdel --remove,默认值为 false |
| password | - | 设置用户密码,不能使用明文方式 |
| password_lock | true/false | 锁定密码【不会禁用用户】,false表示解锁 |
| update_password | on_create/always | always:如果密码不同,将更新密码 on_create:仅为新创建的用户设置密码 |
| append | true/false | 默认值是false,用户将只被添加到在指定的组中groups,将他们从所有其他组中删除。可以设置为true,则用户被添加到指定的组里 |
| authorization | - | 给用户授权,可以使用逗号分隔设置多个授权。可使用 authorization=''删除授权 |
| force | true/false | 指定账户是否被强制删除,参数在 state=absent 时使用,等价于 userdel --force,默认值为false |
| ssh_key_bits | - | 指定要创建的 SSH 密钥中的位数。 |
| ssh_key_comment | - | ssh秘钥的注释说明 |
| ssh_key_file | .ssh/id_rsa | 指定 SSH 密钥文件名,默认为.ssh/id_rsa |
| ssh_key_passphrase | - | 设置 SSH 密钥的密码。如果未提供密码,则 SSH 密钥将默认为没有密码 |
| ssh_key_type | rsa | 指定要生成的 SSH 密钥的类型,默认指为rsa |
| generate_ssh_key | true/false | 是否为相关用户生成 SSH 密钥。默认不会覆盖现有的SSH密钥,如需覆盖,则加上force=yes |
| non_unique | - | 当与 -u 选项一起使用时,此选项允许将用户 ID 更改为非唯一值 |
| profile | - | 设置用户的配置文件。可以使用逗号分隔设置多个配置文件。可使用profile=''删除所有配置文件 |
| role | - | 设置用户的角色,可以使用逗号分隔设置多个角色。可使用role=''删除所有角色 |
| seuser | - | 选择是否在启用selinux的系统上设置seuser类型(user_u) |
| shell | - | 设置用户的默认 shell |
| state | absent/present | 无论账号是否应该存在,如果状态与声明不同,则采取措施。选值有 present、absent,默认值为 present |
| system | true/false | 指定用户是否为系统用户 |
| uid | - | 指定uid信息,选填 |

使用范例

1. 创建一个普通用户

ansible all -m user -a "name=sre"

2. 创建一个用户并指定组

ansible all -m user -a "name=sre group=root"
ansible all -m user -a "name=sre groups=root,test"

3. 给用户设置&修改密码

如果用户不存在,则会新创建用户并设置密码,用户已存在,则会更新密码

# 第一步:先在Python里获得明文密码的密文,例如给用户sre设置密码为123456,则获取123456的密文
[root@test101 ~]# python
Python 2.7.5 (default, Jun 28 2022, 15:30:04) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-44)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> 
>>> import crypt
>>> 
>>> crypt.crypt('123456')  #设置密码123456的密文
'$6$qMFSpDtevYE43QLA$38Bnydh7hNMUMZ1nfYXJxRbJdWTvOOXx7P8e9XptmmyneS.cJOCoOaPGWvMLiVc58kmJ1dlTnhl2kVwe4ZUHN1'
>>> 
>>> exit()
[root@test101 ~]# 


##上面的步骤也可以在命令行一步执行:
[root@test101 ~]# python -c 'import crypt,getpass;pw="123456";print(crypt.crypt(pw))'



#第二步:设置&修改密码
[root@test101 ~]# ansible all -m user -a "name=sre  password='$6$2JT1ImyA5Qpn7Lgl$4ed2kiN4G3ssPTf0Vi6k0EvjDhQVjZtIGC38pWa0nukMVukH5gGXZEZa.mycDV7aVDAsVWmidulZtvBW2yftO.' update_password=always"
#注意引号的位置,密码用双引号,

登录验证:

4. 设置用户到期时间

设置用户sre到期时间为2024年4月2日00:00分(今日为2024.4.3)

[root@test101 tmp]# date -d 2024-04-02 +%s  #获取对应日期的unix时间戳
1711987200
[root@test101 tmp]# 
[root@test101 tmp]# ansible all -m user -a "name=sre expires=1711987200 comment='expires date is 20240402'"
[root@test101 tmp]# 
[root@test101 tmp]# ssh sre@10.0.0.102
sre@10.0.0.102's password: 
Your account has expired; please contact your system administrator
Authentication failed.
[root@test101 tmp]#

5. 删除一个用户(及其家目录)

ansible all -m user -a "name=sre state=absent" #不删除家目录
ansible all -m user -a "name=sre state=absent remove=yes"  #删除家目录 
#备注:"state=absent"等价于"userdel --remove",如果远程主机正在以sre用户登录,则会删除失败

6. 为用户生成ssh密钥对

为远程服务器中的sre用户生成ssh密钥对,生成在/home/sre/.ssh(.ssh目录事先不存在会自动创建)目录下,私钥名id_rsa_sre,注释信息"sre rsa",私钥密码123456

ansible all -m user -a 'name=sre generate_ssh_key=yes ssh_key_file=/home/sre/.ssh/id_rsa_sre ssh_key_comment="sre rsa" ssh_key_passphrase=123456'

未完待续......

感谢您的阅读与喜爱!

相关推荐
墨水\\5 小时前
Ansible部署及基础模块
服务器·网络·ansible
七七powerful5 小时前
ansible play-book玩法
linux·服务器·ansible
Karoku0662 天前
【自动化部署】Ansible循环
linux·运维·数据库·docker·容器·自动化·ansible
W u 小杰2 天前
Ansible基本用法
服务器·网络·ansible
运维小文2 天前
ansible剧本快速上手
linux·运维·python·自动化·ansible·幂等性·剧本
记得多喝水o2 天前
Ansible自动化运维 技术与最佳实践
运维·自动化·ansible
Karoku0662 天前
【自动化部署】Ansible Playbook 基础应用
运维·网络·docker·容器·自动化·ansible·consul
运维小文3 天前
ansible的流程控制
python·自动化·ansible·脚本
阳阳大魔王5 天前
批处理命令的语法与功能
windows·笔记·命令模式·批处理
高hongyuan5 天前
Ansible 简介及常用命令 安装部署tomcat -单机版
运维·自动化·ansible