ansible批量管服务和常用的模块介绍(一)

实验环境:centos7.6,2G内存,50G硬盘大小,虚拟机服务端ip:172.16.1.61 客户端ip:172.16.1.7,172.16.1.41,172.16.1.31

ansible批量管理服务介绍

意义:

1)提高工作效率
2)提高工作准确度
3)减少维护成本
4)减少重复性工作

功能:

1)可以实现批量系统操作配置
2)可以实现批量软件服务部署
3)可以实现批量文件数据分发
4)可以实现批量系统信息收集

ansible批量管理服务部署

第一步:ansible批量管理服务部署

yum -y install ansible
/etc/ansible/ansible.cfg	---ansible服务配置文件
/etc/ansible/hosts			---主机清单文件,比如添加可以管理主机的IP地址
/etc/ansible/roles			---角色目录

第二步:编写主机清单文件

vim /etc/ansible/hosts

直接在文件的下面添加要管理主机的ip
被管理的主机要关闭防火墙和selinux
在这里插入图片描述

第三步:测试是否可以连接多台主机

ansible all -a "hostname"

在这里插入图片描述
可以看到,每台主机的主机名全部都显示出来了

ansible的安装和测试都比较简单的,最重要的是ansible的模块和剧本编写功能

ansible软件模块应用

模块应用方式:ansible 主机名称/主机地址信息/all(代表所有主机) -m(指定应用的模块信息) 模块名称 -a(指定的动作,也就是执行的命令)

补充说明: ansible软件输出颜色说明:
01. 绿色信息: 查看主机信息/对主机未做改动
02. 黄色信息: 对主机数据信息做了修改
03. 红色信息: 命令执行出错了
04. 粉色信息: 忠告信息
05. 蓝色信息: 显示ansible命令执行的过程

命令模块:command(默认模块):

作用:在一个远程主机上执行一个命令,无法支持"<",">","|",";","&"等符号
用法:

ansible 172.16.1.41 -m command -a "hostaname"

扩展用法:
1.chdir:在执行命令之前,先切换目录

ansible 172.16.1.41 -m command -a "chdir=zsb touch zsb.txt"

在这里插入图片描述
在这里插入图片描述
2.creates:如果文件存在,不执行命令操作,文件存在是会显示绿色

ansible 172.16.1.41 -m command -a "creates=1.txt touch 1.txt"

在这里插入图片描述
3.free_from:使用command模块的时候,-a参数后面必须写上一个合法linux指令

4.removes:如果文件存在了,后面的命令将会执行

ansible 172.16.1.41 -m command -a "chdir=zsb removes=1.txt touch 2.txt"

可以看到zsb目录下没有1.txt,所以2.txt没有被创建出来,而zsb.txt是有的
所以2.txt被创建出来了
在这里插入图片描述
在这里插入图片描述

万能模块:shell

作用:在一个远程主机上执行一个命令,支持"<",">","|",";","&"等符号
用法:其他功能和command一样,是command的升级版

万能模块:script

作用:可以直接运行本地的脚本,来控制远端主机执行
用法:其他功能和command一样
测试:
1)编写一个脚本1.sh,在zsb目录下创建一个3.txt文件
在这里插入图片描述
2)使用script模块
在这里插入图片描述
3)对比前后可以看到3.txt是被创建出来了
在这里插入图片描述

文件模块:copy

作用:将数据信息进行批量分发
用法:

ansible 172.16.1.41 -m copy -a "src=~/1.sh dest=/zsb/"

PS:src要拷贝的目录,dest被拷贝到远程主机的目录

扩展用法:
1.owner,group,mode:在传输文件时修改文件的属主和属组信息以及权限信息

ansible 172.16.1.41 -m copy -a "src=~/1.sh dest=~/zsb/ owner=zhangsb group=zhangsb mode=1666"

1)传输前
在这里插入图片描述
2)传输成功之后
在这里插入图片描述
在这里插入图片描述

2.backup:当本地与远程主机之间存在名字相同的文件的时候,并且与ansible主机内容不同,当backup=yes,
就会对远程主机的文件进行备份,生成一个备份文件,再将内容复制过去,并且会覆盖.

ansible 172.16.1.41 -m copy -a "src=~/1.sh dest=/zsb/ backup=yes"

在两个1.txt文件追加不同的内容
在这里插入图片描述
在这里插入图片描述
因为这里的主机和远程主机的两个文件是不相同的,所以执行命令之后,会在远程主机生成一个备份文件

3.content:在远程主机创建一个文件并直接写入信息,与src必有其一,否则会报错

ansible 172.16.1.41 -m copy -a "content=123 dest=/zsb/3.txt"

在这里插入图片描述
在这里插入图片描述
4.force:当本地与主机之间存在名字相同的文件的时候,并且与ansible主机内容不同,当force=yes,会覆盖远程主机内容,为no时,不会执行覆盖拷贝操作远程主机的文件保持不变

PS: ansible软件copy模块复制目录信息
ansible 172.16.1.41 -m copy -a “src=/zsb dest=/zsb”
src后面目录没有/: 将目录本身以及目录下面的内容都进行远程传输复制
ansible 172.16.1.41 -m copy -a “src=/zsb/ dest=/zsb”
src后面目录有/: 只将目录下面的内容都进行远程传输复制

拉取模块:fetch

作用:将数据进行信息进行批量拉取
用法:

ansible all -m fetch -a "src=/etc/hosts dest=/test/"

将远程主机的hosts文件拉取到本地主机上
在这里插入图片描述
可以看到在test目录下,看到不同主机的文件
在这里插入图片描述
可以看到拉取成功
在这里插入图片描述

文件属性模块:file

作用:批量设置远程主机的文件属性
用法:

ansible 172.16.1.41 -m file -a "dest=~/zsb/3.txt owner=zsb group=zsb mode=666"

这里用dest和用path都可以
扩展用法:
1.state 参数
1)=absent — 缺席/删除数据信息

ansible 172.16.1.31 -m file -a "dest=~/zsb/2.txt state=absent"

在这里插入图片描述
2)=directory — 创建一个目录信息

ansible 172.16.1.41 -m file -a "dest=/zsb/ state=directory"
ansible 172.16.1.41 -m file -a "dest=/zsb/zsb1/zsb2 state=directory"   --创建多级目录

=file — 检查创建的数据信息是否存在 绿色存在 红色不存在
在这里插入图片描述
=hard --创建一个硬链接文件

ansible 172.16.1.41 -m file -a "src=~/zsb/1.txt dest=~/zsb/1_hard.txt state=hard"

在这里插入图片描述
在这里插入图片描述
=link — 创建一个软链接文件

ansible 172.16.1.41 -m file -a "src=~/zsb/2.txt dest=~/zsb/2_link.txt state=link"

在这里插入图片描述
在这里插入图片描述
3)创建文件

ansible 172.16.1.31 -m file -a "dest=/zsb/zsb.txt state=touch"

4)recurse:递归地对目录内容设置指定的文件属性,仅当状态设置为“目录”时才适用

ansible 172.16.1.41 -m file -a "dest=/zsb/zsb01 state=directory owner=zhangsb group=zhangsb recurse=yes"

在这里插入图片描述
还有一些模块介绍在下一篇文章.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值