Ansible 常用模块GroupUserFileMountScript

Posted zhengqianfeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ansible 常用模块GroupUserFileMountScript相关的知识,希望对你有一定的参考价值。

ansible的帮助工具

    [root@manager ~]# ansible-doc yum -s
    ansible-doc 模块名
    ansible-doc 模块名 -s 列出该模块的所有选项
    ansible-doc -l 列出所有模块

Group模块

    - gid    设置组id
    = name   需要管理的组名
    - state  执行状态,  absent   删除 
    					present  创建(默认)
例1:创建组名为www,并设置gid 666
	[root@manager ~]# ansible all -m group -a "name=www gid=666 "
    10.10.10.14 | SUCCESS => {
        "changed": true, 
        "gid": 666, 
        "name": "www", 
        "state": "present", 
        "system": false
    }
    10.10.10.12 | SUCCESS => {
        "changed": true, 
        "gid": 666, 
        "name": "www", 
        "state": "present", 
        "system": false
    }
    10.10.10.13 | SUCCESS => {
        "changed": true, 
        "gid": 666, 
        "name": "www", 
        "state": "present", 
        "system": false
    }
例2:修改www组的gid为888
    [root@manager ~]# ansible all -m group -a "name=www gid=888"
    10.10.10.14 | SUCCESS => {
        "changed": true, 
        "gid": 888, 
        "name": "www", 
        "state": "present", 
        "system": false
    }
    10.10.10.12 | SUCCESS => {
        "changed": true, 
        "gid": 888, 
        "name": "www", 
        "state": "present", 
        "system": false
    }
    10.10.10.13 | SUCCESS => {
        "changed": true, 
        "gid": 888, 
        "name": "www", 
        "state": "present", 
        "system": false
    }
例3:删除wwww组
    [root@manager ~]# ansible all -m group -a "name=www gid=888 state=absent"
    10.10.10.14 | SUCCESS => {
        "changed": true, 
        "name": "www", 
        "state": "absent"
    }
    10.10.10.12 | SUCCESS => {
        "changed": true, 
        "name": "www", 
        "state": "absent"
    }
    10.10.10.13 | SUCCESS => {
        "changed": true, 
        "name": "www", 
        "state": "absent"
    }

Uesr模块

= name         用户名
- uid          uid
- group        gid或groupname
- state        执行状态, absent 删除 
    			 		present  创建(默认)
- shell        登录shell,/bin/bash(默认),/sbin/nologin
- create_home  创建用户时,是否创建家目录,create_home=no
- password     用户密码,不能使用明文,需用使用openssl加密后的密码
例1:创建一个用户zqf,指定uid 60000,gid 666,并设置密码为123
    [root@manager ~]# ansible backup -m user -a "name=zqf uid=60000 group=666 password=‘123‘"
    #此时你发现登录不上去。注意:password不能使用明文,需要加密,password的加密值需要用双引号
     #使用MD5进行加密 -stdin 非交互式
    [root@manager ~]# echo "123" |openssl passwd -1 -stdin
    $1$aQ8AU6.N$l4VDDfDxZtUhrLpCksekH1
	#注意单双引号 否则密码登录会错误
    [root@manager ~]# ansible backup -m user -a ‘name=zqf uid=60000 group=666 password="$1$aQ8AU6.N$l4VDDfDxZtUhrLpCksekH1"‘
    10.10.10.12 | SUCCESS => {
        "append": false, 
        "changed": true, 
        "comment": "", 
        "group": 666, 
        "home": "/home/zqf", 
        "move_home": false, 
        "name": "zqf", 
        "password": "NOT_LOGGING_PASSWORD", 
        "shell": "/bin/bash", 
        "state": "present", 
        "uid": 60000
    }
例2:创建一个程序用户www,指定uid 666,gid 666 不让登录 不创建家目录

[root@manager ~]# ansible all -m user -a "name=www uid=666 group=666 shell=/sbin/nologin create_home=no"

file模块

    = path		路径 copy模块的dest 其他模块的name 
    - src		源文件路径
    - owner		属主
    - group		属组
    - mode		权限
    - state		absent 删除 
    				directory 创建目录
    				file 修改文件属性(默认)
    				touch 创建文件
    				link hard 连接
    - recurse		递归
    				recurse=yes
例1:创建目录/datah和/backup,属主666,属组666,递归

[root@manager ~]# ansible all -m file -a "path=/data owner=666 group=666 recurse=yes state=directory"

例2:创建文件/etc/rsync.password,权限600

[root@manager ~]# ansible all -m file -a "path=/etc/rsync.password state=touch mode=600"

例3:对/etc/hosts做个软连接,到/tmp/hosts

[root@manager ~]# ansible all -m file -a "src=/etc/hosts path=/tmp/hosts state=link"

总结:file模块仅适合创建目录,修改所属和权限,创建连接,除开这些操作的其他文件管理都通过copy模块实现

mount模块

= path		挂载点
- src		需要挂载的设备
- fstype	挂载设备的文件系统
					iso9660 光驱
					ext4
					xfs
					nfs
					cifs samba的共享文件系统
					ntfs windows磁盘文件系统
- opts		挂载属性
					noatime
					noexec
					nosuid
- state		挂载动作
					present  #开机挂载,仅将挂载配置写入/etc/fstab
					mounted  #挂载设备,并将配置写入/etc/fstab
					unmounted #卸载设备,不会清楚/etc/fstab写入的配置
					absent   #卸载设备,会清理/etc/fstab写入的配置
例1:通过nfs实现网络文件共享

1)安装nfs
[root@manager ~]# ansible nfs -m yum -a "name=nfs-utils state=installed"
2)启动服务
[root@manager ~]# ansible nfs -m service -a "name=rpcbind state=started"
3)修改配置文件
方法一:在manager上创建配置文件,推给nfs(建议使用)
[root@manager ~]# mkdir -p /server/conf
[root@manager ~]# echo ‘/data 10.10.10.0/24(rw,sync,all_squash,anonid=666,anongid=666) > server/conf/exports
[root@manager ~]# ansible nfs -m copy -a "src=/server/conf/exports dest=/etc/"
方法二:在manager上直接使用copy模块,推送文件内容
[root@manager ~]# ansible nfs -m copy -a "content=‘/data 10.10.10.0/24(rw,sync,all_squash,anonid=666,anongid=666)‘ dest=/etc/exports"
4)创建目录,用户、并修改所属
通过user group file模块来实现,参考上面的例子
5)重载配置文件
[root@manager ~]# ansible nfs -m service -a "name=nfs state=restarted"
6)在web01上挂载nfs的共享目录

[root@manager ~]# ansible web01 -m shell -a "showmount -e 10.10.10.13"
10.10.10.14 | SUCCESS | rc=0 >>
Export list for 10.10.10.13:
/data 10.10.10.0/24
[root@manager ~]# ansible web01 -m mount -a "src=10.10.10.13:/data path=/var/www/html fstype=nfs state=present"  #只是写入/etc/fstab文件并未挂载
[root@manager ~]# ansible web01 -m shell -a "df -h"
10.10.10.14 | SUCCESS | rc=0 >>
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        20G  3.7G   15G  20% /
tmpfs           498M     0  498M   0% /dev/shm
/dev/sr0        3.7G  3.7G     0 100% /mnt/cdrom   
#并没有挂载成功,只是写入了/etc/fstab文件
[root@manager ~]# ansible web01 -m shell -a "tail -3 /etc/fstab"
10.10.10.14 | SUCCESS | rc=0 >>
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
10.10.10.13:/data /var/www/html nfs defaults 0 0
#卸载设备
[root@manager ~]# ansible web01 -m mount -a "src=10.10.10.13:/data path=/var/www/html fstype=nfs state=unmounted" 
#删除设备
[root@manager ~]# ansible web01 -m mount -a "src=10.10.10.13:/data path=/var/www/html fstype=nfs state=absent"
#挂载并写入/etc/fstab
[root@manager ~]# ansible web01 -m mount -a "src=10.10.10.13:/data path=/var/www/html fstype=nfs state=mounted"  

script模块

1)写个脚本,创建文件
[root@manager server]# cat 1.sh 
#!/bin/bash
touch /root/zqfbeautiful
2)运行脚本
[root@manager server]# ansible all -m script -a "/server/conf/1.sh"















以上是关于Ansible 常用模块GroupUserFileMountScript的主要内容,如果未能解决你的问题,请参考以下文章

Ansible概述及常用命令模块

Ansible概述及常用命令模块

ansible常用模块

ansible常用基础模块

Ansible常用模块介绍及使用

Ansible自动化运维工具Ansible常用模块的基本使用