1、运维自动化发展历程及技术应用
本地部署:On-Premises
基础设施即服务:IaaS(Infrastructure as a Service)
平台即服务:PaaS(Platform as a Service)
软件即服务:SaaS(Software as a Service)
2、自动化运维应用场景
1>文件传输
2>命令执行
应用部署
配置管理
任务流编排
3>程序发布
预发布:新版本的代码先发布到服务器(跟线上环境完全相同,只是未接入调度器)
程序发布:不能导致系统故障或造成系统完全不可用;不能影响用户体验
灰度发布:先发布1/10的服务器,面向少量精准用户,在逐渐增多
发布路径:
/nginx1.1
nginx(软链接)
/nginx1.2
在调度机上将一台real-server置为down,停止旧版本的服务,删除旧的软链接,启动新的服务,创建新的软链接,在调度器启用这一批服务器
自动化灰度发布:脚本、发布平台
3、ansible特性
1>模块化,有Paramiko,PyYAML,jinja2(模块语言)三个关键模块,支持自定义模块
2>基于Python语言实现,部署简单,基于python和ssh(默认安装),安全、agentless(无代理,不需要配置代理,主控端直接控制被控端)
3>支持playbook编排任务
4>幂等性:一个任务执行1遍和执行n遍效果一样,不因重复执行带来意外情况
5>无需代理不依赖PKI(无需ssl)
6>可使用任何编程语言写模块
7>YAML格式,编排任务,支持丰富的数据结构
8>较强大的多层解决方案(角色)
4、ansible架构及工作原理
5、ansible主要组成部分
ansible playbook:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件
inventory:Ansible管理主机的清单/etc/anaible/hosts
modules:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
plugins:模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等,该功能不常用
API:供第三方程序调用的应用程序编程接口
ANSIBLE:组合INVENTORY、API、 MODULES、PLUGINS的绿框,可以理解为是ansible命令工具,其为核心执行工具
6、Ansible命令执行来源:
USER,普通用户,即SYSTEM ADMINISTRATOR
CMDB (配置管理数据库) API 调用
PUBLIC/PRIVATE CLOUD API调用
USER → Ansible Playbook → Ansibile
7、利用ansible实现管理的方式:
Ad-Hoc即ansible命令,主要用于临时命令使用场景
Ansible-playbook主要用于长期规划好的,大型项目的场景,需要有前提的规划
Ansible-playbook (剧本) 执行过程:
将已有编排好的任务集写入Ansible-Playbook
通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行
Ansible主要操作对象:
HOSTS主机
NETWORKING网络设备
注意事项:
➢执行ansible的主机一般称为主控端,中控,master或堡垒机
➢主控端Python版本需要2.6或以上
➢被控端Python版本小于2.4需要安装python-simplejson
➢被控端如开启SELinux需要安装libselinux-python
➢windows不能做为主控端
8、安装(本机采用rpm安装,实验)
1>rpm包安装:EPEL源
yum install ansible -y