ansible 架构原理(Ansible模块学习之user模块)

user模块

做运维的都知道,同一台机器可以有很多用户登陆。我们要创建用户,删除用户,给用户附加组等等。这些都会用到user模块。下面对user模块和参数的使用结合实例进行讲解

name参数:这个是必须参数,指定要操作用户的名称

group参数:指定用户所在的基本组

shell参数:指定用户默认登陆shell

uid参数:指定用户uid,一般不做设置

comment参数:用作用户的注释信息,

state参数:指定用户是否在远程机器,有2个可选值。默认是present,用户存在远程机器上,absent删除远程机器上的用户

remove参数:当我们删除用户,也就是state参数值是absent的时候。默认是不会删除家目录

的。也就是remove值默认是no,如果要删除家目录remove值yes

password参数:用于设置用户密码 ,但是这个密码不是明文的,而是加密后的

和/etc/shadow文件中密码字段一样

参数介绍就到这里,下面将用实例讲解各参数的用法

例1:创建名称为test的用户

[root@localhost ~]#ansible 192.168.146.129 -m user -a "name=test"

ansible 架构原理(Ansible模块学习之user模块)(1)

可以从返回参数看出创建了用户test,uid是1000,groupid也是1000,家目录是/home/test 使用的shell 是/bin/bash

如果test用户已经存在了,则不做任何操作,如下:

[root@localhost ~]#ansible 192.168.146.129 -m user -a "name=test"

ansible 架构原理(Ansible模块学习之user模块)(2)

可以看到changed的值是false,说明没有做任何改变。

例2:我要删除刚才创建的test用户。并且把它的家目录也一起删了

[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=test state=absent remove=yes"

ansible 架构原理(Ansible模块学习之user模块)(3)

如果我不想删除用户的家目录怎么操作呢?直接把remove=yes去掉就可以保留用户的家目录了

例3:安装apache要创建apache用户,但是这个用户是不需要登陆的,我们要如何做呢?这里就要指定登陆shell了,而指定的shell值是nologin。意思是不允许apache这个用户登陆

[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=apache shell=nologin"

ansible 架构原理(Ansible模块学习之user模块)(4)

这样就创建apache用户了,而且无法用这个用户登陆系统。因为无法登陆系统所以是没有家目录的。

如果指定apache用户使用/bin/sh作为默认shell如下操作即可

[root@localhost ~]# ansible 192.168.146.129 -m user -a "name=apache shell=/bin/sh"

例4:刚才创建了test用户,我需要做个说明,这是一个测试用户,如下操作:

[root@localhost ~]# ansible 192.168.146.129 -m user -a "user=test comment=Thistestuser"

然后我们查看一下远程机器上的/etc/passwd文件

[root@localhost ~]# ansible 192.168.146.129 -m shell -a "grep test /etc/passwd"

ansible 架构原理(Ansible模块学习之user模块)(5)

可以看到"Thistestuser"字段

用户创建好了,是时候给用户添加个密码了。这里用到了password参数,前面做参数说明的时候讲到了,这个密码不是明文的。是加密的,因此我们要把密码的明文经过加密处理才能使用。

比如:我想给test用户设置密码为123456,应该怎么做呢?下面跟我一步一步的操作即可。

首先进入到python命令行界面。用python的crypt模块对字符串进行加密,最后返回的字符串就是我们要用到的,注意字符串是用单引号引起来的,我们只要单引号里面的字符串

具体操作步骤如下:

[root@localhost ~]# python Python 2.7.5 (default, Jun 17 2014, 18:11:42) [GCC 4.8.2 20140120 (Red Hat 4.8.2-16)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import crypt >>> crypt.crypt('123456') '$6$xXHy1LuASc7e9tbO$38vx7.ZvpllcavRxvQ1z1GMBwGx5C3eTR2H8Xofbiq8/hwaj8cvWfM6D63agNMWeL6vu2kQ2lszum0JBQRejD/'

ansible 架构原理(Ansible模块学习之user模块)(6)

加密后的密码已经生成了,我们直接拿来用就可以了。

例5:给test用户设置密码为123456

ansible 192.168.146.129 -m user -a 'user=test password="$6$xXHy1LuASc7e9tbO$38vx7.ZvpllcavRxvQ1z1GMBwGx5C3eTR2H8Xofbiq8/hwaj8cvWfM6D63agNMWeL6vu2kQ2lszum0JBQRejD/" '

这里有个地方必须要注意的,执行的整条命令是单引号引起来的,密码内容是双引号引起来的。这样做的原因是,加密后的密码内容包含了一些特殊符号,必须要用双引号引起来,避免产生歧义。

user模块常用的参数和参数值的使用已经讲完了,接下来讲解file模块

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页