自动化运维—ansible常用模块之系统模块(user&group模块)


文章目录

  • 自动化运维---ansible常用模块之系统模块(user&group模块)
  • 1.user模块
  • user模块作用
  • user模块参数
  • user模块应用
  • 2.group模块
  • group模块作用
  • group模块参数
  • group模块应用


1.user模块

user模块作用

user模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等

user模块参数

  • name参数:必须参数,用于指定要操作的用户名称,可以使用别名user。
  • group参数:此参数用于指定用户所在的基本组
  • gourps参数:此参数用于指定用户所在的附加组,注意:如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合append参数使用,否则在默认情况下,当再次使用groups参数设置附加组时,用户原来的附加组会被覆盖。
  • append参数:如果用户原本就存在多个附加组,那么当使用groups参数设置附加组时,当前设置会盖原来的附加组设置,如果不想覆盖原来的附加组设置 ,需要结合append参数,将append设置为yes,表示追加附加组到现有的附加组设置,append默认值为no
  • shell参数:此参数用于指定用户的默认shell
  • uid参数:此参数用于指定用户的uid号
  • expires参数:此参数用于指定用户的过期时间,相当于设置/etc/shadow文件中的的第8列, 比如:你想要设置用户的过期日期为2020年12月31日,那么你首先要获取到2020年12月31日的unix时间戳,使用命令"date -d2020-12-31 +%s"获取到的时间戳为1609344000,所以,当设fexpires=1609344000时,表示用户的过期时间为2020年12月31日0点0分,设成功后,查看远程主机的/etc/shadow文件,对应用户的第八列的值将变成18626 (表示1970年1月1日到2020年12月31日的天数,unix时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在Linux和EreeBSD系统中使用
  • comment参数:此参数用于指定用户的注释信息
  • state参数:此参数用于指定用户是否存在于远程主机中,可选值有present、absent,默认值为present,表示用户需要存在,当设为absent时表示删除用户。
  • remove参数:当state的值设置为absent时,表示要删除远程主机中的用户,但是在删除用户时,不会删除用户的家目录等信息,这是因为remoove参数的默认值为no。如果设置为yes,在删除用户的同时,会删除用户的家目录,当state=absent并且remove=yes时,相当于执行"userdel -r"命令
  • password参数:此参数用于指定用户的密码,但是这个密码不能是明文的密码,而是一个对明文密码"加密后"的字符串,相当于/etc/shadow文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在python的命令提示符下输入如下命令,生成明文密码对应的加密字符串:
    import crypt crypt.crypt('666666') 输入上述命令后,即可得到明文密码666666对应的加密字符串
  • update_ password参数:此参数有两个值可选:always和on_create,当此参数的值设置为always时表示如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always。但是当此参数设置为on_ create时,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定,如果是新创建的用户,即使此参数设为on_ create,也会将用户的密码设置为password参数对应的值

user模块应用

给远程主机新建用户:

ansible testB -m user -a "name=yy"

ansible 添加sudo权限 ansible user_ansible 添加sudo权限


ansible 添加sudo权限 ansible user_删除用户_02


删除远程主机用户(只删除用户,不删除对应文件):

ansible testB -m user -a "name=yy state=absent"

ansible 添加sudo权限 ansible user_删除用户_03


ansible 添加sudo权限 ansible user_字符串_04


删除远程主机用户(完全删除):

先重新创建用户:

ansible testB -m user -a "name=yy"

删除:

ansible testB -m user -a "name=yy state=absent remove=yes"

ansible 添加sudo权限 ansible user_删除用户_05


ansible 添加sudo权限 ansible user_参数设置_06


设定用户主组(组必须存在):

首先在远程主机中创建组:

groupadd ansible

设定主组:

ansible testB -m user -a "name=yy group=ansible"

ansible 添加sudo权限 ansible user_删除用户_07


ansible 添加sudo权限 ansible user_ansible 添加sudo权限_08


设定用户附加组(组必须存在):

首先在远程主机中创建组(后面的都要创建,不再赘述)

ansible testB -m user -a "name=yy groups=linux"

ansible 添加sudo权限 ansible user_参数设置_09


ansible 添加sudo权限 ansible user_删除用户_10

附加组存在时设定附加组,系统会覆盖以前的组:

ansible testB -m user -a "name=yy groups=redhat"

ansible 添加sudo权限 ansible user_参数设置_11


ansible 添加sudo权限 ansible user_删除用户_12


附加组存在时设定附加组,但不覆盖之前的:

ansible testB -m user -a "name=yy groups=linux append=yes"

ansible 添加sudo权限 ansible user_ansible 添加sudo权限_13


ansible 添加sudo权限 ansible user_删除用户_14


同时设定多个附加组(用逗号隔开):

ansible testB -m user -a "name=yy groups=shell,python append=yes"

ansible 添加sudo权限 ansible user_参数设置_15


ansible 添加sudo权限 ansible user_ansible 添加sudo权限_16


设定用户过期时间(例如2020-12-31过期):

首先要获得unix时间戳:

date -d 2020-12-31 +%s

设定:

ansible testB -m user -a "name=yy expires=1609344000"

ansible 添加sudo权限 ansible user_字符串_17


在/etc/shadow文件对应用户第八列为天数:

tail /etc/shadow

ansible 添加sudo权限 ansible user_参数设置_18


指定用户注释信息:

ansible testB -m user -a "name=yy comment='www.westos.org'"

ansible 添加sudo权限 ansible user_参数设置_19


查看用户信息:

tail /etc/passwd

ansible 添加sudo权限 ansible user_字符串_20


指定用户密码:

首先要获得明文密码的加密字符串:

ansible 添加sudo权限 ansible user_ansible 添加sudo权限_21


设定:

ansible testB -m user -a "name=yy password='$6$GzCr4RUlgDfyuEdQ$Z33AW8V6HAGwTaOeu0ATSf8vCRXnqyRnUjo.q6lpS5G1k7U1cdPhewEmbG7cKLwLWax0VzFbd1lm7MsRT4P.w.'"

ansible 添加sudo权限 ansible user_字符串_22


生成密钥:

ansible testB -m user -a "name=yy generate_ssh_key=yes"

ansible 添加sudo权限 ansible user_字符串_23


ansible 添加sudo权限 ansible user_ansible 添加sudo权限_24


指定密钥文件路径及文件名:

ansible testB -m user -a "name=yy generate_ssh_key=yes ssh_key_file=/opt/id_rsa_yy"

ansible 添加sudo权限 ansible user_删除用户_25


ansible 添加sudo权限 ansible user_ansible 添加sudo权限_26

2.group模块

group模块作用

group模块可以帮助我们管理远程主机上的组

group模块参数

  • name参数:必须参数,用于指定要操作的组名称。
  • state参数:用于指定组的状态,两个值可选,present、absent;默认为present,设置为absent表示删除组。
  • gid参数:用于指定组的gid

group模块应用

给远程主机新建组:

ansible testB -m group -a "name=java"

ansible 添加sudo权限 ansible user_ansible 添加sudo权限_27


ansible 添加sudo权限 ansible user_ansible 添加sudo权限_28


删除远程主机中的组:

ansible testB -m group -a "name=java state=absent"

ansible 添加sudo权限 ansible user_ansible 添加sudo权限_29


在远程主机中通过id yy命令可以看到组的情况:

当组为某一用户附加组时,可以正常删除:

ansible testB -m group -a "name=linux state=absent"

当组为某一用户主组时,无法删除:

ansible testB -m group -a "name=ansible state=absent"

ansible 添加sudo权限 ansible user_字符串_30

设定组的gid:

ansible testB -m group -a "name=test gid=8888"
ansible testB -m group -a "name=test gid=6666"

ansible 添加sudo权限 ansible user_参数设置_31


ansible 添加sudo权限 ansible user_ansible 添加sudo权限_32


注意:当组不存在时,系统会直接创建组并且设定gid;当组存在时,会覆盖原来的gid