天天看点

自动化运维工具ansible的安装与使用

     一、简介  :ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、连接插件connection plugins:负责和被监控端实现通信; (2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机; (3)、各种模块核心模块、command模块、自定义模块; (4)、借助于插件完成记录日志邮件等功能; (5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。 二、安装和使用 (1 ) yum install epel-release -y   yum install ansible -y

自动化运维工具ansible的安装与使用

(2)配置主机组: cd   /etc/ansible/hosts 找到webservice,这个是主机组的名字,可以自定义,比如test,增加两台主机进入test组,分别是192.168.50.202和192.168.50.203 如下图所示

自动化运维工具ansible的安装与使用

(3)配置从这个管理节点(安装了ansible)的节点到其他两台的面密码登陆  ssh-keygen     //生成这台主机的公钥

将公钥发送到要管理的服务器

ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.50.202 

ssh-copy-id -i /root/.ssh/id_rsa.pub  192.168.50.202  

,此时已经可以实现从该主机到这两台主机的面密码登陆了 (4)使用ansible来操作和管理其他机器

命令格式如下: 

   ansible + 主机组名称 + -m + 模块名称 + -a + 参数

主机组名称,即hosts中定义的主机组名称 ,次数为test

-m 指使用模块,后加指定的模块名称 

-a 指传给模块的参数

在不指定模块时,默认调用command模块,即执行命令的动作,伺候还有copy等等

如我们想看下test组上的服务器的/root下面有哪些文件,可以使用如下命令 

      ansible test -a “ls /root”//运行结果会显示test下的所有主机组的root下的文件

自动化运维工具ansible的安装与使用

将本机的文件发给其他主机的做法 ansible test -m copy -a “src=/root/install.log dest=/tmp”   这个命令是将本地的/root/install.log发送到test组的/tmp下,执行的效果如下:

[[email protected] ~]# ansible test -m copy -a "src=/root/test.txt dest=/root"
192.168.50.202 | SUCCESS => {
    "changed": true, 
    "checksum": "656f625555335decef0659baf45acc406cc311f5", 
    "dest": "/root/test.txt", 
    "failed": false, 
    "gid": 0, 
    "group": "root", 
    "md5sum": "1822a4a658cb424813c8bfc7422d9077", 
    "mode": "0644", 
    "owner": "root", 
    "secontext": "system_u:object_r:admin_home_t:s0", 
    "size": 14, 
    "src": "/root/.ansible/tmp/ansible-tmp-1512651368.98-190797399495490/source", 
    "state": "file", 
    "uid": 0
}
192.168.50.203 | SUCCESS => {
    "changed": true, 
           

此时表明已经发送成功,好了今天下介绍ansible简单应用到这里。

继续阅读