标签:前言 代理 图片 架构 批量部署 参数 etc 没有 分享图片
前言什么是自动化运维?
下面 我们看看我们运维工程师需要干的事情
上图就是运维人员需要干的事情:N多开发工程师开发出一个游戏,经过不断完善,终于OK了,N多个测试工程师测试这个游戏有没有问题,比如:bug、稳定性等,如果有就返工,如果没有就是交给运维人员准备上线。
那么问题来了,如果有成千上万太服务器,要把服务挨个上线,那么我们运维人员就要累死了。有没有可以让我们偷懒的方法呢?
1)ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
2)ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
(1)、连接插件connection plugins:负责和被监控端实现通信;
(2)、host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3)、各种模块核心模块、command模块、自定义模块;
(4)、借助于插件完成记录日志邮件等功能;
(5)、playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
- 比如:让你在100台服务器上搭建LAMP,可以用Ansible解决
- 比如:让你拷贝一个文件到这100台服务器,可以用Ansible解决
- 比如:让你对这100台服务器同时上线服务,可以用Ansible解决
- 当然,Ansible 的作用不止于此。只是举例说明具体干嘛用的!
* 模块化:调用特定的模块,完成特定的任务
* 有Paramiko、PyYAML、Jinja2(模板语言)三个关键模块
* 支持自定义模块
* 基于Python语言实现
* 部署简单,基于python和ssh(默认已安装),angentless
* 安全,基于openSSH
* 支持playbook编排任务
* 幂等性:一个任务执行1次和执行n遍效果一样,不会因为重复执行带来意外情况
* 无需代理,不需要PKI (ssl)
* 可使用任何编程语言写模块
* YAML格式,编排任务,支持丰富的数据结构
* 较强大的多层解决方案
规划表格:
IP地址 | 系统版本 | 功能 |
---|---|---|
192.168.154.131 | CenOS 7.4 | Ansible主控端 |
192.168.154.132 | CenOS 7.4 | 被控制端 |
192.168.154.133 | CenOS 7.4 | 被控制端 |
开始部署:
1·安装epel源、Ansible
[root@mange ~]# yum install epel-release -y
[root@mange ~]# yum install ansible -y
2·修改 Host 主机清单
[root@mange ~]# vim /etc/ansible/hosts
添加内容如下:
[webserver] //添加组
192.168.154.132 //组里面添加被控制端的IP
[mysql]
192.168.154.133
3·查看 Ansible 版本等信息
[root@mange ~]# ansible --version
4·设置ssh无密码登陆
[root@mange ~]# ssh-keygen -t rsa
[root@mange ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.154.132
[root@mange ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub 192.168.154.133
5·到此 Ansible 部署完成,看看基础操作
[root@mange ~]# ansible all -m command -a ‘date‘ ------(查看两台主机的时间)
192.168.154.132 | CHANGED | rc=0 >> //显示第一台被控主机时间
2018年 10月 17日 星期三 16:01:55 CST
192.168.154.133 | CHANGED | rc=0 >> //显示第二台被控主机时间
2018年 10月 17日 星期三 16:01:55 CST
6·以上命令参数解释:
all :是代表你 /etc/ansible/hosts 里的所有IP主机,当然也可以跟具体IP
-m:指定模块,command 模块是默认模块,之后会详解更过模块功能
-a:指定具体你要在被控制端的操作
* Ansible 是基于 “ 模块 ” 完成各种任务的,Ansible就相当于一个框架
* 所以学习Ansible的重点是学习它里面的功能模块
* 在配置过程中我们可以看出来Ansible是一款通过SSH协议就可以远程执行或下发配置的自动化环境部署软件!
* 在Ansible 架构图中可以看出它包括:Ansible core核心引擎、Host inventory 主机清单、Connect plugin 连接插件、Playbook剧本、Core modules 核心模块,Custom modules 自定义模块这及部分组成。
标签:前言 代理 图片 架构 批量部署 参数 etc 没有 分享图片
原文地址:http://blog.51cto.com/13746824/2301282