ansible笔记():常用模块之系统类模块(二)

user模块
user模块可以帮助我们管理远程主机上的用户,比如创建用户、修改用户、删除用户、为用户创建密钥对等操作。 此处我们介绍一些user模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。 name参数:必须参数,用于指定要操作的用户名称,可以使用别名user。 group参数:此参数用于指定用户所在的基本组 gourps参数:此参数用于指定用户所在的附加组,注意,如果说用户已经存在并且已经拥有多个附加组,那么如果想要继续添加新的附加组,需要结合append参数使用,否则在默认情况下,当再次使用groups参数设置附加组时,用户原来的附加组会被覆盖。 append参数:如果用户原本就存在多个附加组,那么当使用groups参数设置附加组时,当前设置会覆盖原来的附加组设置,如果不想覆盖原来的附加组设置,需要结合append参数,将append设置为yes,表示追加附加组到现有的附加组设置,append默认值为no。 shell参数:此参数用于指定用户的默认shell uid参数:此参数用于指定用户的uid号 expires参数:此参数用于指定用户的过期时间,相当于设置/etc/shadow文件中的的第8列,比如,你想要设置用户的过期日期为2018年12月31日,那么你首先要获取到2018年12月31日的unix时间戳,使用命令"date -d 2018-12-31 +%s"获取到的时间戳为1546185600,所以,当设置expires=1546185600时,表示用户的过期时间为2018年12月31日0点0分,设置成功后,查看远程主机的/etc/shadow文件,对应用户的第八列的值将变成17895(表示1970年1月1日到2018年12月31日的天数,unix时间戳的值会自动转换为天数,我们不用手动的进行换算),目前此参数只支持在Linux和FreeBSD系统中使用。 comment参数:此参数用于指定用户的注释信息 state参数:此参数用于指定用户是否存在于远程主机中,可选值有present、absent,默认值为present,表示用户需要存在,当设置为absent时表示删除用户。 remove参数:当state的值设置为absent时,表示要删除远程主机中的用户,但是在删除用户时,不会删除用户的家目录等信息,这是因为remoove参数的默认值为no,如果设置为yes,在删除用户的同时,会删除用户的家目录,当state=absent并且remove=yes时,相当于执行"userdel --remove"命令 password参数:此参数用于指定用户的密码,但是这个密码不能是明文的密码,而是一个对明文密码"加密后"的字符串,相当于/etc/shadow文件中的密码字段,是一个对明文密码进行哈希后的字符串,你可以在python的命令提示符下输入如下命令,生成明文密码对应的加密字符串。 import crypt; crypt.crypt('') 输入上述命令后,即可得到明文密码666666对应的加密字符串。 update_password参数:此参数有两个值可选,always和on_create,当此参数的值设置为always时表示,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则直接更新用户的密码,默认值即为always,但是当此参数设置为on_create时,如果password参数设置的值与用户当前的加密过的密码字符串不一致,则不会更新用户的密码字符串,保持之前的密码设定,如果是新创建的用户,即使此参数设置为on_create,也会将用户的密码设置为password参数对应的值。 generate_ssh_key参数:此参数默认值为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,但是如果同名的密钥对已经存在,并不会对同名密钥做任何操作 user模块的ad-hoc示例命令如下: 在test211主机上创建名为tom的用户,如果用户已经存在,则不进行任何操作 [root@node1 data]# ansible test211 -m user -a 'name=tom' 在test211主机上删除名为tom的用户,但是不会删除tom用户的家目录 [root@node1 data]# ansible test211 -m user -a "name=tom state=absent" 在test211主机上删除名为tom的用户,同时会删除tom用户的家目录等信息
[root@node1 data]# ansible test211 -m user -a 'name=tom state=absent remove=yes' 指定test211主机上的tom用户的主组为chinasoft,chinasoft组需要提前存在,当不使用group设置主组时,不会创建用户 [root@node1 data]# ansible test211 -m user -a "name=tom group=chinasoft" 指定test211主机上的tom用户的附加组为china,china组需要提前存在,当不使用groups设置附属组时,默认附加组与用户名相同,注意,为了保险起见,在不知道用户原来的附加组设定的情况下,最好将append参数设置为yes,我们也可以一次性设置多个附加组,附加组之间用逗号隔开,比如groups=tom,chinasoft,root 示例命令如下 [root@node1 data]# ansible test211 -m user -a "name=tom groups=china append=yes" 指定test211主机上的zsy用户使用/bin/csh作为默认shell [root@node1 data]# ansible test211 -m user -a "name=tom shell=/bin/csh" 指定test211主机上的tom用户的uid为2018 [root@node1 data]# ansible test211 -m user -a "name=tom uid=2018" 指定test211主机上的tom用户的过期时间为2018年12月31日,使用"date -d 2018-12-31 +%s"命令可以获取到对应日期的unix时间戳 [root@node1 data]# ansible test211 -m user -a "name=tom expires=1546185600" 指定test211主机上的zsy用户的注释信息 [root@node1 data]# ansible test211 -m user -a "name=tom comment='www.chinasoft.com'" 将test211主机上的tom用户的密码设置为666666 首先生成666666的加密字符串
[root@node1 ~]# python
Python 2.7. (default, Apr , ::)
[GCC 4.8. (Red Hat 4.8.-)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import crypt
>>> crypt.crypt('')
'$6$mEdCfuWJogc15Sl.$M2UafBbNbRtVkX1HIs4nXX0AtQWEk/VMiLNGNvLLu1udhtmEhO8R5m578qsjQrLAG7NUPpla8SLI3wOGz40Jn. 使用生成的密码字符串设置用户密码 [root@node1 data]# ansible test211 -m user -a "name=tom password='$6$mEdCfuWJogc15Sl.$M2UafBbNbRtVkX1HIs4nXX0AtQWEk/VMiLNGNvLLu1udhtmEhO8R5m578qsjQrLAG7NUPpla8SLI3wOGz40Jn.'" 如下命令表示设置test211主机上的zsy用户的密码,但是如果用户当前的加密字符串与命令中设置的加密字符串不一致,则不进行密码更新的操作。 [root@node1 data]# ansible test211 -m user -a "name=tom password='$6$CNbf7EXv/5VoyIhl$shfLC.nsVwKHio6D/iYgXri5Zn4g7oS66tD4FwThMozAvfhxYaWVHx5HgSgz2/w7Opi0iv4ePK6GxWibz9L5Q/'" 为test211上的zsy用户生成ssh密钥对,默认在用户家目录的./ssh目录中生成名为id_rsa的私钥和名为id_rsa.pub的公钥,如果已经存在同名密钥,并不会覆盖原来的密钥,即不做任何操作。 [root@node1 data]# ansible test211 -m user -a "name=tom generate_ssh_key=yes ssh_key_file=/opt/id_rsa_tom" 为test211上的zsy用户生成ssh密钥对,同时指定公钥中的注释信息为"www.chinasoft.net",此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥
[root@node1 data]# ansible test211 -m user -a "name=tom generate_ssh_key=yes ssh_key_comment='www.chinasoft.com'" 为test70上的zsy用户生成ssh密钥对,同时指定私钥的密码为123456,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥 [root@node1 data]# ansible test211 -m user -a "name=tom generate_ssh_key=yes ssh_key_passphrase='123456'" 为test70上的zsy用户生成ssh密钥对,同时指定密钥对的类型为dsa,当不显式指定密钥类型时,默认类型为rsa,此参数只能在创建密钥时使用才会生效,并不能操作同名的老密钥 [root@node1 data]# ansible test211 -m user -a 'name=tom generate_ssh_key=yes ssh_key_type=dsa' group模块
group模块可以帮助我们管理远程主机上的组。 此处我们介绍一些group模块的常用参数,你可以先对这些参数有一个大概了解,然后再看小示例。 name参数:必须参数,用于指定要操作的组名称。 state参数:用于指定组的状态,两个值可选,present,absent,默认为present,设置为absent表示删除组。 gid参数:用于指定组的gid group模块的ad-hoc示例命令如下: 确保test211主机中存在名为chinasoft的组
[root@node1 data]# ansible test211 -m group -a 'name=chinasoft' 删除test211主机中存在名为zsythink的组,删除成功的前提是不能有用户把被删除的组当成主组。 [root@node1 data]# ansible test211 -m group -a "name=chinasoft state=absent" 确保test211主机中存在名为zsythink的组,并且确定zsythink组的组id为1008 [root@node1 data]# ansible test211 -m group -a "name=chinasoft gid=2018"

ansible笔记(8):常用模块之系统类模块(二)的更多相关文章

  1. ansible笔记(7):常用模块之系统类模块

    ansible笔记():常用模块之系统类模块 cron模块 cron模块可以帮助我们管理远程主机中的计划任务,功能相当于crontab命令. 在了解cron模块的参数之前,先写出一些计划任务的示例,示 ...

  2. Ansible笔记(7)---常用模块之系统类模块(cron、service)

    一.cron模块 1.1作用: cron 模块可以帮助我们管理远程主机中的计划任务,功能相当于 crontab 命令. 在了解cron模块的参数之前,先写出一些计划任务的示例: # 示例1,每天的1点 ...

  3. Ansible常用模块之系统类模块

    cron模块 管理远程主机上的计划任务 [root@tiandong ansible]# ansible all -m cron -a "name='cron test' minute=5 ...

  4. ansible笔记(6):常用模块之命令类模块

    ansible笔记():常用模块之命令类模块 command模块 command模块可以帮助我们在远程主机上执行命令 注意:使用command模块在远程主机中执行命令时,不会经过远程主机的shell处 ...

  5. python学习之算法、自定义模块、系统标准模块(上)

    算法.自定义模块.系统标准模块(time .datetime .random .OS .sys .hashlib .json和pickle) 一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1. ...

  6. ansible笔记(5):常用模块之命令类模块

    1.command模块 它的作用是帮助我们在远程主机上执行命令. [注意]使用command模块在远程主机中执行命令时,不会经过远程主机的shell处理,在使用command模块时,如果需要执行的命令 ...

  7. Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)

    一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应 ...

  8. Ansible常用模块之命令类模块

    Command模块 在远程节点上执行命令 [root@tiandong ~]# ansible all -m command -a "ls" 在远程主机上执行ls命令. [root ...

  9. Spring常用的接口和类(二)

    七.BeanPostProcessor接口 当需要对受管bean进行预处理时,可以新建一个实现BeanPostProcessor接口的类,并将该类配置到Spring容器中. 实现BeanPostPro ...

随机推荐

  1. JS盒模型

    JS盒模型 ***** 1.width | height parseInt(getComputedStyle(ele, null).getPropertyValue('width')) parseIn ...

  2. flask结合celery实现异步响应HTTP请求

    摘要: 1.场景描述 2.flask介绍 3.celery介绍 4.项目伪代码记录 5.几个备注点 内容: 1.场景描述 最近在优化用户画像的东西,要开发一个给文本打标签的服务:我这边需要提供一个HT ...

  3. 02-Unity深入浅出(二)

    一. Unity声明周期 Unity容器为我们提供了6种生命周期,便于我们根据项目需求来选择使用. (1). 瞬时.默认省略即为瞬时,无论单线程还是多线程,每次都重新创建对象.new Transien ...

  4. Python之线程 1 - 线程基本概念

    一 背景知识 1.进程 2.有了进程为什么还要线程 3.线程的出现 二 线程和进程的关系 三 线程的特点 四 线程的实际应用场景 五 内存中的线程 六 用户级线程和内核级线程(了解) 1.用户级线程 ...

  5. 小程序前端防止重复点击请求api的简陋方法

    upload: function () { let that = this; let {uploadFlag} = that.data; if (that.data.uploadFlag) { ret ...

  6. netty的解码器和粘包拆包

    Tcp是一个流的协议,一个完整的包可能会被Tcp拆成多个包进行发送,也可能把一个小的包封装成一个大的数据包发送,这就是所谓的粘包和拆包问题 粘包.拆包出现的原因: 在流传输中出现,UDP不会出现粘包, ...

  7. jira安装插件svn

    1.登录jira 2.设置-插件-查找新插件 搜索 Jira Subversion plugin 3.安装成功之后 4.关联svn仓库 5.关联成功

  8. Linux中的libc和glibc

    现在centos6.8-x64系统里的c标准库已经成了glibc,glibc取代了libc,c标准库的位置在/lib64/libc.so.6 以下为转载 一.libc库 Linux平台提供的C标准库包 ...

  9. 代码编辑器 - Visual Studio Code

    vscode的视图 1.Explorer 资源管理器 打开的编辑器:打开的正在编辑的文件,单击文件会覆盖前一个打开的文件tab,双击可使打开的文件并列显示 vue-server:你自己新建的项目目录, ...

  10. Dotest-两张图告诉你,为什么要测试兼容性?

     这就是为什么要测试兼容性的原因:如下图:一个是IE浏览器.一个是Google浏览器