码迷,mamicode.com
首页 > 其他好文 > 详细

Ansible之玩转常见运维场景(个人总结)

时间:2016-11-01 21:30:15      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:ansible

一、环境描述

Ansible管理节点:192.168.1.101

被管理节点1192.168.1.135

被管理节点2192.168.1.128

 

二、Ansible实现

1、实现管理节点和被管理节点免ssh密码

思路:在ansible管理节点上生成一对ssh密钥,并把管理节点的公钥拷贝给被管理节点

1.1ansible管理节点生成ssh密钥

root@mysql02:~/.ssh# ssh-keygen

技术分享

1.2、拷贝ansible管理节点的公钥文件到被管理主机

1.2.1、在管理节点上拷贝

技术分享

技术分享

说明:id_rsa.pub文件为公钥文件,id_rsa为私钥文件

 

1.2.2、在被管理节点上操作(粘贴管理节点的SSH公钥)

root@testweb01:~/.ssh# vim authorized_keys      #如果没有authorized_keys文件,创建即可

技术分享

说明:其他的被管理节点依次拷贝即可


1.2.3、如果不做ssh免密码,在管理节点上进行让被管理节点执行hostname命令,则出现如下错误

技术分享

1.2.4、将管理节点的ssh公钥拷贝到被管理节点后,一切正常

技术分享

 

2、管理节点配置

2.1、查看ansilbe有哪些模块

#ansible-doc -l

技术分享

技术分享

模块名称:command 作用:在远程节点上执行命令

 

2.2、定义主机和组

root@mysql02:~# cd /etc/ansible/

root@mysql02:/etc/ansible# vim hosts

技术分享

目前只看hosts文件,其它先不用管。Hosts配置文件中的 [webservers][dbservers]这两行的作用是定义主机组,主机组名下可以写成员主机的IP(或域名),这是后可以把我需要管理的主机IP放到[webservers][dbservers]主机组下。目前,我这里的被管理节点有两台,都在主机组[webservers]里,IP192.168.1.135192.168.1.128

 

3、运维场景1(在被管理节点上执行相关的shell命令)

3.1、小栗子,截取IP地址

shell_cmd=`ifconfig |grep ‘inet 地址‘|grep ‘192.168.1‘ | grep -v ‘grep‘ | awk ‘{print $2}‘| tr -d "地址:"`

root@mysql02:/etc/ansible# ansible webservers -m command -a ‘echo $shell_cmd‘

技术分享

功能解析:将截取IP地址的命令赋值给shell_cmd变量,然后通过ansible执行‘echo $shell_cmd‘命令打印出截取到的IP地址。

 

参数说明:

其中webservers是主机组名称,在该主机组名称下的所有主机都会运行uptime命令,-m后是模块名称,-a 后是模块参数。

 

4、运维场景2(在管理节点上执行shell脚本,脚本在被管理节点上)

小栗子:

在被管理节点上的/root/目录中有osd.sh脚本,内容如下:

技术分享

root@mysql02:~# ansible webservers -m shell -a ‘/root/osd.sh‘

技术分享

 


5、运维场景3(脚本在主控端(管理节点),但需要在客户机上执行,可以用script模块)

脚本动作如下:

1、在tmp目录下创建一个文件夹

2、在新创建的文件下创建一个txt文件

技术分享

5.1、开始在ansible管理节点上运行

root@mysql02:~# ansible webservers -m script -a ‘/root/test.sh‘

技术分享

 

5.2、在被管理节点上验证

技术分享

结果:已成功完成任务

 

6、运维场景4(文件发布或称文件下发)

场景描述:在我的管理节点中的root目录里存在一个zabbix_3.0.4.orig.tar.gz文件,这个文件需要批量下发给被管理节点。

6.1ansible管理节点上开始执行

 root@mysql02:~# ansible webservers -m copy -a ‘dest=/tmp src=/root/zabbix_3.0.4.orig.tar.gz‘

技术分享

 

6.2、验证被管理节点

技术分享

结果:文件下发成功

 

7、运维场景5(需要在被管理节点上安装软件,如通过:apt-getyum

场景描述:需要在被管理节点上安装ipython

root@mysql02:~# ansible webservers -m raw -a ‘apt-get -y install ipython‘

技术分享

 

7.1ipython是否安装成功?验证一下

没安装之前

技术分享

技术分享

 

8、运维场景6(在被管理节点中,重启或停止或启动某个服务)

root@mysql02:~# ansible webservers -m service -a "name=zabbix-agent state=restarted"

场景描述:我这里需要重启zabbix-agent服务

技术分享



本文出自 “FA&IT运维-Q群:223843163” 博客,请务必保留此出处http://freshair.blog.51cto.com/8272891/1868219

Ansible之玩转常见运维场景(个人总结)

标签:ansible

原文地址:http://freshair.blog.51cto.com/8272891/1868219

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!