zoukankan      html  css  js  c++  java
  • ansible用user/group模块管理受控机上的用户和组(ansible2.9.5)

    一,ansible的user/group模块的用途:

    ansible的user模块用来实现:生成用户、删除用户等用户的管理
    ansible的group模块用来实现:生成组、删除组等组的管理

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,group模块的使用例子

    1,创建一个组 

    #name=lhd  组名

    # system=yes   系统组

    [liuhongdi@centos8 work]$ ansible yujian -m group -a "name=lhd  system=yes" --become  --become-method=sudo --become-user=root

    说明:系统组是和系统用户相对应的,id值1-999,

             目的是为了能够让后台进程或服务类进程以非管理员的身份运行

    2,删除一个组

    #state=absent    删除操作

    [liuhongdi@centos8 work]$ ansible yujian -m group -a "name=lhd state=absent" --become --become-method=sudo --become-user=root

    3,修改一个group的gid

    [liuhongdi@centos8 work]$ ansible yujian -m group -a "name=lhd gid=1008" --become --become-method=sudo --become-user=root

    三,user模块的使用例子

    1,创建一个用户

    #name : 用户名

    #group : 指定所属的组

    #home: home目录

    #shell:  登录后使用的shell,如果指定 /sbin/nologin表示不允许从shell登录

    #说明: 开ftp账号时因为不允许登录到shell会指定shell为/sbin/nologin

    [liuhongdi@centos8 work]$ ansible yujian -m user -a "name=lhd group=lhd home=/home/lhdtest shell=/sbin/nologin" --become  --become-method=sudo --become-user=root

    登录到受控端查看效果

    [root@blog ~]# grep lhd /etc/passwd
    lhd:x:1004:1008::/home/lhdtest:/sbin/nologin

    查看目录

    [root@blog ~]# ls /home/lhdtest/

    2,删除一个用户(仅删除用户信息,保留其home目录)

    #state=absent: 删除用户

    [liuhongdi@centos8 work]$ ansible yujian -m user -a "name=lhd state=absent" --become  --become-method=sudo --become-user=root

    3,删除一个用户(删除用户信息的同时也删除其home目录)

    #remove=yes:   移除home目录

    [liuhongdi@centos8 work]$ ansible yujian -m user -a "name=lhd state=absent remove=yes" --become  --become-method=sudo --become-user=root

    4,创建用户时指定密码:

    用python生成一个原文是 123456 的字符串

    [liuhongdi@centos8 work]$ python3 -c 'import crypt,getpass;pw="123456";print(crypt.crypt(pw))'
    $6$Hs0KYj1vDFltM37B$JNPe0EQ2IhgfbEVivr/ezcfLsYSj63/Tof.05xcF508izVlcx3plCXQvKCBxw1NFIM3LNWqvmJvSn.QeAw/291

    #password   加密过的密码

    [liuhongdi@centos8 work]$ ansible yujian -m user -a 'name=lhd group=lhd password="$6$Hs0KYj1vDFltM37B$JNPe0EQ2IhgfbEVivr/ezcfLsYSj63/Tof.05xcF508izVlcx3plCXQvKCBxw1NFIM3LNWqvmJvSn.QeAw/291"' --become --become-method=sudo --become-user=root

    用ssh测试登录,看是否生效

    [root@centos8 ~]# ssh -p 12888 lhd@121.122.123.47

    5,移动一个用户的home目录到新目录

    说明:我们把用户lhd的home目录从/home/lhd迁移到/home/lhd_new

    登录到受控端查看目录:

    [root@blog ~]# ls /home/lhd
    lhd.txt

    #move_home=yes 移动home目录

    [liuhongdi@centos8 work]$ ansible yujian -m user -a 'name=lhd move_home=yes home=/home/lhd_new/' --become  --become-method=sudo --become-user=root

    再次登录到受控端查看目录:

    [root@blog ~]# ls /home/lhd
    ls: cannot access '/home/lhd': No such file or directory
    [root@blog ~]# ls /home/lhd_new/
    lhd.txt

    6,生成密钥对

    #generate_ssh_key=yes  生成密钥对

    #ssh_key_type=rsa   指定加密算法类型为rsa,可以不指定,默认值也是rsa

    [liuhongdi@centos8 work]$ ansible yujian -m user -a 'name=lhd generate_ssh_key=yes ssh_key_type=rsa' --become  --become-method=sudo --become-user=root

    登录到受控端查看密钥文件:

    [root@blog ~]# ll /home/lhd_new/.ssh/
    total 8
    -rw------- 1 lhd lhd 2610 Apr 20 19:05 id_rsa
    -rw-r--r-- 1 lhd lhd  579 Apr 20 19:05 id_rsa.pub

    7,生成密钥对时指定路径

    #ssh_key_file:当 generate_ssh_key == yes 时,使用此参数自定义生成 ssh 私钥的路径和名称,对应公钥会在同路径下生成,公钥名以私钥名开头,以”.pub”结尾

    [liuhongdi@centos8 work]$ ansible yujian -m user -a 'name=lhd generate_ssh_key=yes ssh_key_type=rsa ssh_key_file=/home/lhd_new/key/id_rsa_ding' --become  --become-method=sudo --become-user=root

    8,给用户修改密码

    update_password参数:两个值可选,always 和 on_create,默认值:always

                                     值=always: 如果 password 参数设置的值与用户当前的加密过的密码字符串不一致,直接更新用户的密码。

                                     值=on_create: 如果 password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定。

                                                         如果是新创建的用户,即使此参数设置为 on_create,也会将用户的密码设置为 password 参数对应的值

    生成加密后的密码

    [root@centos8 ~]# python3 -c 'import crypt,getpass;pw="12345678";print(crypt.crypt(pw))'
    $6$TkTobLpZ54Qytu8X$vN9RTz.URTtL0F3AZXD165N/cpOd3Ysf7l2uDEJBHvw3jXFKX5rtSblLlLQXEK9EMPZDPW62d7ZLxVt2p6TII/

    更新密码

    [root@centos8 ~]# ansible yujian -m user -a 'name=lhd update_password=always password="$6$TkTobLpZ54Qytu8X$vN9RTz.URTtL0F3AZXD165N/cpOd3Ysf7l2uDEJBHvw3jXFKX5rtSblLlLQXEK9EMPZDPW62d7ZLxVt2p6TII/"' --become  --become-method=sudo --become-user=root

    注意password的值用双引号包括起来

    测试是否可以登录:

    [liuhongdi@centos8 ~]$ ssh -p 12888 lhd@121.122.123.47

    四,user模块的其他参数:

    comment参数:此参数用于指定用户的注释信息

    ssh_key_comment参数:generate_ssh_key 参数的值=yes 时,在创建证书时,使用此参数设置公钥中的注释信息。

                                     如果同名的密钥对已经存在,则并不会修改原来的注释信息,即不做任何操作。

                                     当不指定此参数时,默认的注释信息为”ansible-generated on 远程主机的主机名”。

    ssh_key_passphrase参数:generate_ssh_key 参数的值=yes 时,在创建证书时,使用此参数设置私钥的密码。

                                       如果同名的密钥对已经存在,则并不会修改原来的密码,即不做任何操作

    五,查看ansible版本

    [root@centos8 liuhongdi]# ansible --version
    ansible 2.9.5
  • 相关阅读:
    mysql 远程登陆不上
    hdu 5339 Untitled【搜索】
    SqlServer 书目
    passwordauthentication yes
    oracle 11g RAC ocfs2
    Oracle 11g RAC database on ASM, ACFS or OCFS2
    CentOS ips bonding
    Oracle 11g RAC features
    openStack 王者归来之 trivial matters
    openstack windows 2008 img
  • 原文地址:https://www.cnblogs.com/architectforest/p/12766044.html
Copyright © 2011-2022 走看看