一,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