首页 > 自动化运维 > 运维工具 > Ansible运维自动化工具
2015
02-13

Ansible运维自动化工具

     Ansible是一种集成系统的配置管理工具,使用Ansible可以批量管理服务器,应用的部署,批量的执行命令,并且Ansible还是一款轻量的开源软件,Ansible部署简单,使用yum包就可安装,但是功能的确相当的丰富,所以今天特地来聊聊Ansible。Ansible还有一个特点就是无需安装agent,使用ssh认证就可以远程控制服务器,这也是我喜欢他的一个原因,如果你python够牛的话,还可以自己定制模块,并且还有api接口,许多自动化运维平台都是调用他的。来看一张Ansible的架构图,了解一下它。

Ansible运维自动化工具

 

到此废话不多说,我们开始体验一下它的强大。

一、Ansible的安装配置

1.1、安装Ansible

yum install ansible

注意:如果yum源没有找到此包,检查是否安装了epel源,如果还是不行那就只能源码安装了

到此Ansible就安装完成了,是不是超级爽

1.2、配置Ansible

编辑/etc/ansible/hosts文件

[root@xen1-32 ~]# tail -3 /etc/ansible/hosts 
[test]
192.168.20.34
192.168.20.35
[root@xen1-32 ~]#

解析:

[test]:表示我们定义的组信息,这个更加业务自己合理的定义

192.168.20.34:这是我们组中的服务器ip

1.3、ssh免秘钥登陆设置

[root@xen1-32 ~]#ssh-keygen 
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Created directory '/root/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
86:d2:65:df:c6:08:ea:95:bf:b8:92:2d:aa:ee:25:ba root@localhost.localdomain
The key's randomart image is:
+--[ RSA 2048]----+
|                 |
|                 |
|        +        |
|     . = + +     |
|    . + S o +    |
|     o o . .     |
|  . . .o  .      |
| . o  + .. .     |
|E++... oo..      |
+-----------------+
#copy的过程需要输入用户名密码,这里省略
[root@xen1-32 ~]# ssh-copy-id 192.168.10.31
[root@xen1-32 ~]# ssh-copy-id 192.168.10.35

二、Ansible常用模块介绍

2.1、检查主机状态

[root@xen1-32 ~]# ansible test -m ping
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success >> {
    "changed": false, 
    "ping": "pong"
}

192.168.20.31 | success >> {
    "changed": false, 
    "ping": "pong"
}

[root@xen1-32 ~]#

2.2、远程执行命令的模块

command模块

[root@xen1-32 ~]# ansible test -m command -a "uptime"
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success | rc=0 >>
 11:07:19 up 64 days, 10:00,  0 users,  load average: 0.14, 0.04, 0.01

192.168.20.31 | success | rc=0 >>
 11:07:20 up 64 days,  9:59,  0 users,  load average: 1.52, 1.55, 1.11

 2.3、copy模块

将主控端的模块copy到目标主机上,类似于scp功能

[root@xen1-32 ~]# ansible test -m copy  -a "src=/root/test.sh  dest=/tmp/"
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success >> {
    "changed": true, 
    "dest": "/tmp/test.sh", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "5b8c9370213c34d3dfd32c5bfc793099", 
    "mode": "0644", 
    "owner": "root", 
    "size": 19, 
    "src": "/root/.ansible/tmp/ansible-tmp-1423798111.27-6384677130520/source", 
    "state": "file", 
    "uid": 0
}

192.168.20.31 | success >> {
    "changed": true, 
    "dest": "/tmp/test.sh", 
    "gid": 0, 
    "group": "root", 
    "md5sum": "5b8c9370213c34d3dfd32c5bfc793099", 
    "mode": "0644", 
    "owner": "root", 
    "size": 19, 
    "src": "/root/.ansible/tmp/ansible-tmp-1423798111.27-33410765486620/source", 
    "state": "file", 
    "uid": 0
}
#检查文件是否存在
[root@xen1-32 ~]# ansible test -m command  -a "ls /tmp/"
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success | rc=0 >>
hsperfdata_root
test.sh

192.168.20.31 | success | rc=0 >>
test.sh

[root@xen1-32 ~]#

2.4文件权限的修改

#权限修改之前
[root@xen1-32 ~]# ansible test -m command  -a "ls -l /tmp/"
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success | rc=0 >>
total 8
drwxr-xr-x 2 root root 4096 Jan 27 14:52 hsperfdata_root
-rw-r--r-- 1 root root   19 Feb 13 11:28 test.sh

192.168.20.31 | success | rc=0 >>
total 4
-rw-r--r-- 1 root root 19 Feb 13 11:28 test.sh

#修改命令
[root@xen1-32 ~]# ansible  test -m file -a "dest=/tmp/test.sh mode=755 owner=root group=root"
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success >> {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/tmp/test.sh", 
    "size": 19, 
    "state": "file", 
    "uid": 0
}

192.168.20.31 | success >> {
    "changed": true, 
    "gid": 0, 
    "group": "root", 
    "mode": "0755", 
    "owner": "root", 
    "path": "/tmp/test.sh", 
    "size": 19, 
    "state": "file", 
    "uid": 0
}

#修改之后
[root@xen1-32 ~]# ansible test -m command  -a "ls -l /tmp/"
 [WARNING]: The version of gmp you have installed has a known issue regarding
timing vulnerabilities when used with pycrypto. If possible, you should update
it (ie. yum update gmp).

192.168.20.35 | success | rc=0 >>
total 8
drwxr-xr-x 2 root root 4096 Jan 27 14:52 hsperfdata_root
-rwxr-xr-x 1 root root   19 Feb 13 11:28 test.sh

192.168.20.31 | success | rc=0 >>
total 4
-rwxr-xr-x 1 root root 19 Feb 13 11:28 test.sh

2.4、rpm模块

[root@xen1-32 ~]# ansible test -m yum -a "name=nmap state=installed"

 

本人常用的模块也就是这么多,还有一些user模块,service模块,yum模块等,其实都是比较简单的,相信大家看我这几个模块的演示之后,已经算是Ansible的入门了,的这里呢就不多说,如果遇到什么问题可以留言。

 

还有一个就是paybook,他的功能就更加强大灵活了,paybook使用YAML格式进行描述定义的,适合部署复杂的应用程序的基础,并且支持同步或异步的方式,官方还提供了大量的例子,有兴趣的朋友们可以了解一下。

 

本博客到此结束,如果遇到任何问题欢迎留言!

 




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复