博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ansible的使用
阅读量:7036 次
发布时间:2019-06-28

本文共 2226 字,大约阅读时间需要 7 分钟。

hot3.png

首先确认批量管理我们为什么使用ansible:无外乎主机分组管理、实时批量执行命令或脚本、实时批量分发文件或目录、定时同步文件等。

 

1.     ansible与saltstack对比

前一段时间用了saltstack,免不得要谈一下他们的优缺点。两者都是安装和使用都非常方便的批量管理软件。

1、salt要安装agent;ansible不需要,通过ssh连接,省掉装agent的事。

2、salt在server端要启进程;ansible不需要,但这都无所谓差不多。

3、salt与ansible都有模块,可使用任意语言开发模块。

4、salt与ansible都使用yaml语言格式编写剧本。

为什么不使用salt,

1,tcp断开,执行命令会漏装机器,

2,安装agent很麻烦,

3,依赖问题麻烦。

 

2.     ansible安装

centos:

yum install epel.repo(默认源会安装失败)

yum install ansible

 

注:在开始ansible操作受控机器前,需要配置好ssh免密码登陆

 

3.     ansible命令参数介绍

Ansible中的临时命令的执行是通过Ad-Hoc来完成,能够快速执行,而且不需要保存执行的命令,例如:

ansible -i ~/hosts all -m command -a ‘ls’ -u root

主要参数如下:

 

-u username          指定ssh连接的用户名,即执行后面命令的用户

-i inventory_file    指定所使用的inventory文件的位置,默认为/etc/ansible/hosts

-m module            指定使用的模块,默认为command,可能也是shell ,script

-f 10                指定并发数,并发量大的时候,提高该值

--sudo [-k]          当需要root权限执行的化,-k参数用来输入root密码

-a 指定参数,一般是指定执行脚本或者执行命令

 

4.     ansible主机分组管理:

配置好ssh免密码登陆后,就该把那些机器加入到hosts文件中,hosts不限路径,可用-i参数指定路径。

[root ~]# cat  /etc/ansible/hosts

[KD1]    #组名

1.1.1.1:62222    #这里的端口是ssh端口

1.1.1.2:62222

[KD2]

1.1.1.3:62222

1.1.1.4:62222

 

分组的使用情景:1,hosts文件全执行;2,指定组执行;3,指定主机和组混合执行。一般第二种使用常见。

 

全执行效果:ansible -i /etc/ansible/hosts all -m shell -a  'uptime' 

分组执行效果:ansible -i /etc/ansible/hosts KD1 -m shell -a  'uptime' 

连续的主机名使用";"号分隔,如:ansible -i /etc/ansible/hosts  'KD1;1.1.1.3' -m shell -a 'uptime'

 

更多的分组格式参考:

 

还可以使用脚本动态获取主机的方式:

官方地址:

网络文档:

 

5.     ansible实时批量执行命令和脚本:

批量执行命令:

ansible -i/etc/ansible/hosts all -m shell -a 'who'

ansible -i/etc/ansible/hosts all -m command -a 'who'

注:shell模块可以使用管道,而command则不可以。

 

*批量执行脚本:

ansible all -m script    -a "/root/ceshi.sh"   #这种方式可以替代paybook的使用,直接shell脚本加命令即可,包括文件备份,定时任务等。

 

6.     ansible实时批量拷贝文件或目录

从ansible-doc copy中的帮助信息得知

1,作用是将本机的文件,传送到目标机器;

2,ansible的copy模块是围绕rsync的包装,所以它是增量而不是全量的拷贝。

ansible MachineName   -m copy -a 'src=/etc/fstab dest=/tmp/fstab mode=644 owner=root'  #拷贝文件

ansible MachineName   -m copy -a 'src=/etc/test dest=/root/test mode=755 owner=root '  #此处test为目录

 

7.     ansible定时同步文件

既然ansible的copy模块是rsync的包装,那我定期执行copy目录的命令,就能完成文件的定时同步了。如果文件变化,就会同步过去,如果没变化,就不会拷贝。以后只要把要同步的文件放到该目录下即可。

 

8.     ansible模块帮助

执行命令用到的那些模块是干嘛的?使用ansible-doc查看帮助吧。

ansible-doc -l       #查看模块列表

ansible-doc  copy    #查看copy模块的详细信息

ansible-doc  script #查看script模块的详细信息

总结,使用ansible的script功能+copy+shell基本能完成几百台服务器的管理了。

 

转载于:https://my.oschina.net/u/2950272/blog/920073

你可能感兴趣的文章
at命令及服务
查看>>
sqlserver无法在数据库上放置锁
查看>>
完全背包问题
查看>>
resin app server安装总结
查看>>
订单信息表和订单明细表
查看>>
背包九讲
查看>>
AS莫名报错 Error:Could not download junit.jar (junit:junit:4.12): No cached version available
查看>>
Win7获取管理权限修改Host文件以其他权限问题
查看>>
php 读取mssql数据时格式问题
查看>>
【转向Javascript系列】深入理解Web Worker
查看>>
右侧客服 运动案例
查看>>
T4 Editor地址
查看>>
Django 视图系统
查看>>
5.15 pymysql 模块
查看>>
篇三、开发前知识补充:Android的长度单位和屏幕分辨率,这个也是转载~~
查看>>
陶哲轩实分析 习题 13.4.8
查看>>
从有理数到实数(序)
查看>>
微软职位内部推荐-SENIOR DEVELOPMENT LEAD
查看>>
Rinetd linxu TCP 端口转发
查看>>
html5笔记
查看>>