应用
管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作。
参数
- 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'