关于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'

未完待续......

感谢您的阅读与喜爱!

相关推荐
Hy行者勇哥1 天前
用Cursor智能编写Ansible/Terraform脚本,打通CI/CD链路
ci/cd·ansible·terraform
芷栀夏3 天前
飞牛NAS怎么部署Immich?家庭照片自动备份与远程访问教程
服务器·nginx·ansible
悠然南风14 天前
Ansible常见模块总结及LDAP Role 编写与调试
ansible
祺风挽楠23 天前
ansible编辑
网络·ansible
芳心粽伙饭23 天前
Ansible课后作业
ansible
烁34724 天前
Ansible初识
ansible
烁34724 天前
Ansible安装部署调试
ansible
烁34724 天前
Ansible命令
ansible
小义_25 天前
【Ansible】(三)基础配置与连接设置
云原生·ansible
qqxhb1 个月前
47|成本与性能:缓存、批处理、模型路由与降级
缓存·批处理·智能模型路由·多级降级预案·成本预算