應用
管理遠程主機上的用戶,比如創建用戶、修改用戶、刪除用戶、為用戶創建密鑰對等操作。
參數
- user:指定要操作的用戶名稱
- uid:指定用戶的uid
- comment:指定用戶的注釋信息
- expires:指定用戶的的過期時間,相當於設置/etc/shadow文件中的第8列
- shell:指定用戶的默認shell
- group:指定用戶的基本組
- groups:指定用戶的附加組,新加時會覆蓋原有的附加組,默認append=no
- append:配合groups使用,在原有附加組的基礎上追加組,append=yes
- state present|absent:默認present,表示添加用戶或需要用戶存在;absent表示刪除用戶
- remove:刪除用戶時,默認是不刪除家目錄,remove=no;remove=yes表示刪除用戶家目錄
- password:指定用戶的密碼,需要是加密后的字符串,相當於/etc/shadow文件中的第2列
- update_password always|on_create:默認always
- generate_ssh_key no|yes:默認為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,若已存在同名的密鑰,不會覆蓋
示例
- 在所有服務器中創建test用戶,若已存在,不進行任何操作
]# ansible all -m user -a 'name=test'
- 在所有服務器中刪除test用戶,但不刪除此用戶的家目錄
]# ansible all -m user -a 'name=test state=absent'
- 在所有服務器中刪除test用戶,且刪除此用戶的家目錄
]# ansible all -m user -a 'name=test state=absent remove=yes'
- 指定所有服務器中test用戶的基本組為admin(需提前存在),不指定時默認與用戶名一樣
]# ansible all -m user -a 'name=test group=admin'
- 指定所有服務器中test用戶的附加組為root和admin
]# ansible all -m user -a 'name=test groups=root,admin append=yes'
- 指定所有服務器中test用戶過期時間是2020-05-20
]# date -d 2020-05-20 +%s #獲取對應日期的unix時間戳
1589904000
]# ansible all -m user -a 'name=test expires=1589904000'
- 修改所有服務器中test用戶的密碼為'123455'
]# python
>>> import crypt
>>> crypt.crypt('123455')
'$6$B0zo/bCGaUmqFKx8$apGEf9i1Yd4/PE.bhL7P86T6FDir45jE5DQ549CjG3SoWtfPmAQSCDkz2Wt5kXppAlhbTLqOclg45yOz7YH9K/'
>>> exit()
]# ansible all -m user -a 'name=test password="$6$B0zo/bCGaUmqFKx8$apGEf9i1Yd4/PE.bhL7P86T6FDir45jE5DQ549CjG3SoWtfPmAQSCDkz2Wt5kXppAlhbTLqOclg45yOz7YH9K/"'
- 為所有服務器中test用戶生成ssh密鑰對,生成在/opt目錄下,私鑰名id_rsa_test,注釋信息"test rsa",私鑰密碼123455
]# ansible all -m user -a 'name=test generate_ssh_key=yes ssh_key_file=/opt/id_rsa_test ssh_key_comment="test rsa" ssh_key_passphrase=123455'