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
  • 相关阅读:
    boost::asio 连接管理11 如何关闭连接
    boost::asio async_write也不能保证一次发完所有数据 二
    boost::asio async_write也不能保证一次发完所有数据 一
    boost参考博客
    C++ 多线程编程总结
    Boost::asio io_service 实现分析
    使用boost io_service时,需要注意的东西
    Boost::Thread 多线程的基础知识
    boost::thread类
    Boost::thread库的使用
  • 原文地址:https://www.cnblogs.com/architectforest/p/12766044.html
Copyright © 2011-2022 走看看