当前位置: 首页 > news >正文

关于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/alwaysalways:如果密码不同,将更新密码
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'

未完待续......

感谢您的阅读与喜爱!

http://www.lryc.cn/news/331311.html

相关文章:

  • Spring Boot--文件上传和下载
  • hexo博客7:构建简单的多层安全防御体系
  • 《捕鱼_ue4-5输出带技能的透明通道素材到AE步骤》
  • (免费分享)基于微信小程序自助停取车收费系统
  • Vue3_2024_7天【回顾上篇watch常见的后两种场景】___续
  • Gemini即将收费,GPT无需注册?GPT3.5白嫖和升级教程
  • 【协议篇:Http与Https】
  • WPS二次开发系列:WPS SDK初始化
  • EXCEL地理数据处理工具(地图任务)
  • 软件设计原则:迪米特法则
  • MongoDB聚合运算符:$max
  • 神经网络学习笔记10——RNN、ELMo、Transformer、GPT、BERT
  • Java23种设计模式
  • pieces of cake concerning torchtorchvision
  • 如何在Python中处理JSON数据?
  • 站群服务器如何提高搜索引擎排名
  • Redis安装-Docker
  • day16-二叉树part03
  • 上位机图像处理和嵌入式模块部署(qmacvisual亮度检测)
  • 防止推特Twitter账号被冻结,应该选什么代理类型IP?
  • 【二叉树】Leetcode 114. 二叉树展开为链表【中等】
  • 2024年150道高频Java面试题(二十)
  • Docker-Compose容器编排
  • nvm 安装多个版本的Node npm
  • RisingWave 在品高股份 Bingo IAM 中的应用
  • .Net Core/.Net6/.Net8 ,启动配置/Program.cs 配置
  • 尚硅谷2024最新Git企业实战教程 | Git与GitLab的企业实战
  • 2024阿里云老用户服务器优惠价格99元和199元
  • 【前端webpack5高级优化】提升打包构建速度几种优化方案
  • 【第十一届大唐杯全国大学生新一代信息通信技术大赛】赛题分析