Ansible—— 15. user模块

管理远程主机上的用户,创建用户、修改用户、删除用户、为用户创建密钥对等操作。

1. 参数

name:required,指定用户名称,可以使用别名 user。
group:指定用户所在的基本组。
gourps:此参数用于指定用户所在的附加组。注意,如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合 append 参数使用,否则在默认情况下,当再次使用 groups 参数设置附加组时,用户原来的附加组会被覆盖。
append:如果用户原本就存在多个附加组,那么当使用 groups 参数设置附加组时,当前设置会覆盖原来的附加组设置,如果不想覆盖原来的附加组设置,需要结合 append 参数,将 append 设置为 yes,表示追加附加组到现有的附加组设置,append 默认值为 no。
shell:指定用户的默认 shell。
uid:指定用户的 uid 号。
expires:指定用户的过期时间,相当于设置 /etc/shadow 文件中的的第8列。
comment:指定用户的注释信息。
state:指定用户是否存在于远程主机中,可选值有 present、absent,默认值为 present,表示用户需要创建,当设置为 absent 时表示删除用户。
remove:删除用户的家目录等信息。
password:指定用户的密码。
update_password:有两个值可选,always 和 on_create,当此参数的值设置为always 时表示,如果 password 参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为 always,但是当此参数设置为 on_create 时,如果 password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定。如果是新创建的用户,即使此参数设置为 on_create,也会将用户的密码设置为 password 参数对应的值。
generate_ssh_key:默认值为 no,如果设置为 yes,表示为对应的用户生成 ssh 密钥对,默认在用户家目录的 ./ssh 目录中生成名为 id_rsa 的私钥和名为 id_rsa.pub 的公钥,如果同名的密钥已经存在与对应的目录中,原同名密钥并不会被覆盖(不做任何操作)。
ssh_key_file:当 generate_ssh_key 参数的值为 yes 时,使用此参数自定义生成 ssh 私钥的路径和名称,对应公钥会在同路径下生成,公钥名以私钥名开头,以”.pub”结尾。
ssh_key_comment:当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置公钥中的注释信息。但是如果同名的密钥对已经存在,则并不会修改原来的注释信息,即不做任何操作。当不指定此参数时,默认的注释信息为”ansible-generated on 远程主机的主机名”。
ssh_key_passphrase:当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置私钥的密码。但是如果同名的密钥对已经存在,则并不会修改原来的密码,即不做任何操作。
ssh_key_type:当 generate_ssh_key 参数的值为 yes 时,在创建证书时,使用此参数设置密钥对的类型。默认密钥类型为 rsa,但是如果同名的密钥对已经存在,并不会对同名密钥做任何操作。

2. 示例

示例1
在host1 主机上创建名为 ding 的用户,如果用户已经存在,则不进行任何操作。

[root@ansible-manager ~]# ansible host1 -m user -a 'name=ding'

示例2
在host1 主机上删除名为 ding 的用户,但是不会删除 ding 用户的家目录。

[root@ansible-manager ~]# ansible  host1 -m user -a 'name=ding state=absent'

示例3
在host1 主机上删除名为 ding 的用户,同时会删除 ding 用户的家目录等信息。如果已经不存在 ding 的用户,则不做任何操作。

[root@ansible-manager ~]# ansible host1 -m user -a 'name=ding state=absent remove=yes'

示例4
指定host1 主机上的 ding 用户的主组为 testgroup,testgroup 组需要提前存在,当不使用 group 设置主组时,默认主组与用户名相同。

[root@ansible-manager ~]# ansiblehost1 -m user -a "name=ding group=testgroup"

示例5
指定host1 主机上的 ding 用户的附加组为 testgroup2,testgroup2 组需要提前存在,当不使用 groups 设置附属组时,默认附加组与用户名相同。注意,为了保险起见,在不知道用户原来的附加组设定的情况下,最好将 append 参数设置为 yes,我们也可以一次性设置多个附加组,附加组之间用逗号隔开,比如groups=ding,testgroup,root 。

[root@ansible-manager ~]# ansiblehost1 -m user -a "name=ding groups=testgroup2 append=yes"

示例6
指定host1 主机上的 ding 用户的过期时间为2018年12月31日。使用”date -d 2018-12-31 +%s“命令可以获取到对应日期的 unix 时间戳。

[root@ansible-manager ~]# ansiblehost1 -m user -a 'name=ding expires=1546185600'

示例7
指定host1 主机上的 ding 用户的注释信息。

[root@ansible-manager ~]# ansiblehost1 -m user -a 'name=ding comment="www.ding.com" '

示例8
将host1 主机上的 ding 用户的密码设置为666666。
首先生成666666的加密字符串:

[root@ansible-manager ~]# python
Python 2.7.5 (default, Aug  4 2017, 00:39:18) 
[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt;crypt.crypt('666666')
'$6$ziT/sb5KRtUaxoq7$ulfHVLqVgXfmfFUYY7FppzqBQMUYd.2GLDyQwmKv4dYAd0zpgtt5JDheoO/OvvTvY53x9UShX.PtHykJEvsmG0'  

使用生成的密码字符串设置用户密码:

[root@ansible-manager ~]# ansible host1 -m user -a ' name=ding password="$6$ziT/sb5KRtUaxoq7$ulfHVLqVgXfmfFUYY7FppzqBQMUYd.2GLDyQwmKv4dYAd0zpgtt5JDheoO/OvvTvY53x9UShX.PtHykJEvsmG0" '

示例9
为host1 上的 ding 用户生成 ssh 密钥对。默认在用户家目录的 ./ssh 目录中生成名为 id_rsa 的私钥和名为 id_rsa.pub 的公钥,如果已经存在同名密钥,并不会覆盖原来的密钥,即不做任何操作。

[root@ansible-manager ~]# ansible host1 -m user -a 'name=ding generate_ssh_key=yes'

示例10
为host1 上的 ding 用户生成 ssh 密钥对,密钥对生成在 /opt 目录下,私钥名为 id_rsa_ding,公钥名为 id_rsa_ding.pub。

[root@ansible-manager ~]# ansible host1 -m user -a 'name=ding generate_ssh_key=yes ssh_key_file=/opt/id_rsa_ding'

示例11
为host1 上的 ding 用户生成 ssh 密钥对,同时指定公钥中的注释信息为 “www.ding.com”,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥。

[root@ansible-manager ~]#ansible host1 -m user -a 'name=ding generate_ssh_key=yes ssh_key_comment="www.ding.com"'

示例12
为host1 上的 ding 用户生成 ssh 密钥对,同时指定私钥的密码为123456,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥。

[root@ansible-manager ~]#ansible host1 -m user -a 'name=ding generate_ssh_key=yes ssh_key_passphrase="123456"'

示例13
为host1 上的 ding 用户生成 ssh 密钥对,同时指定密钥对的类型为 dsa,当不显式指定密钥类型时,默认类型为 rsa,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥。

[root@ansible-manager ~]#ansible host1 -m user -a 'name=ding generate_ssh_key=yes ssh_key_type=dsa'

————Blueicex 2020/2/1 14:40 blueice1980@126.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值