侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

ansible的使用

2023-11-06 星期一 / 0 评论 / 0 点赞 / 50 阅读 / 5545 字

首先确认批量管理我们为什么使用ansible:无外乎主机分组管理、实时批量执行命令或脚本、实时批量分发文件或目录、定时同步文件等。 1.ansible与saltstack对比 前一段时间用了salt

首先确认批量管理我们为什么使用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@yang ~]# 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'

 

更多的分组格式参考:

http://www.ibm.com/developerworks/cn/linux/1407_liheng_ansible/

 

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

官方地址:http://docs.ansible.com/intro_dynamic_inventory.html

网络文档:http://noops.me/?p=1446

 

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基本能完成几百台服务器的管理了。

 

广告 广告

评论区