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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM