Ansible学习笔记(持续更新)
Ansible学习目录
- 1.自动化运维
-
- [1.1 企业实际应用场景](#1.1 企业实际应用场景)
-
- [1.1.1 Dev开发环境](#1.1.1 Dev开发环境)
- [1.1.2 测试环境](#1.1.2 测试环境)
- [1.1.3 发布环境](#1.1.3 发布环境)
- [1.1.4 生产环境](#1.1.4 生产环境)
- [1.1.5 灰度环境](#1.1.5 灰度环境)
- [1.2 程序发布](#1.2 程序发布)
- [1.3 自动化运维应用场景](#1.3 自动化运维应用场景)
- [1.4 常用自动化运维工具](#1.4 常用自动化运维工具)
- 2.Ansible介绍和架构
-
- [2.1 Ansible特性](#2.1 Ansible特性)
- [2.2 Ansible架构](#2.2 Ansible架构)
-
- [2.2.1 Ansible主要组成部分](#2.2.1 Ansible主要组成部分)
- [2.2.2 Ansible工作原理](#2.2.2 Ansible工作原理)
- [2.2.3 Ansible注意事项](#2.2.3 Ansible注意事项)
1.自动化运维
1.1 企业实际应用场景
1.1.1 Dev开发环境
- 使用者:程序员
- 功能:程序员开发测试软件
- 管理者:程序员
1.1.2 测试环境
- 使用者:QA测试工程师(quality assurance)
- 功能:测试经过Dev环境测试通过的软件功能
- 管理者:运维
1.1.3 发布环境
- 使用者:运维
- 功能:发布代码至生产环境
- 管理者:运维
- 发布机:往往有主备2台
1.1.4 生产环境
- 使用者:运维,少数情况开放权限给核心开发人员
- 功能:对用户提供公司产品的服务
- 管理者:只能是运维
- 生产环境服务器:一般比较多且十分重要。往往需要自动工具协助部署
1.1.5 灰度环境
- 使用者:运维
- 功能:在全量发布代码前将代码的功能面向少量精准用户发布,可基于主机或用户执行灰度发布。待精准用户使用没有重大问题的时候,再全量发布至所有服务器
- 管理者:运维
- 发布过程:在调度器下线一批主机->关闭服务->部署最新版本应用程序->启动服务->在调度器上启用这一批服务器
1.2 程序发布
1.3 自动化运维应用场景
1.4 常用自动化运维工具
- Ansible:python,Agentless,中小型应用环境
- SaltStack:python,一般需部署agent,执行效率更高
- Pippet:ruby,功能强大,配置复杂,重型,适合大型环境
2.Ansible介绍和架构
2.1 Ansible特性
- 模块化:调用特定的模块,完成特定任务,支持自定义模块
- 部署简单:基于python和ssh(默认已安装),agentless无需代理,不依赖PKI
- 安全:基于OpenSSH
- 幂等性:一个任务执行一遍与执行n遍效果一样,不因重复执行带来意外情况
- 支持playbook编排任务,YAML格式,编排任务,支持丰富的数据结构
- 较强大的多层解决方案role
2.2 Ansible架构
2.2.1 Ansible主要组成部分
- PLAYBOOKS:编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的yml文件
- INVENTORY:Ansible管理主机的清单 /etc/ansible/hosts
- MODULES:Ansible执行命令的功能模块,多数为内置核心模块,也可自定义
- PLUNGINS:Ansible模块功能的补充,如连接类型插件、循环插件、变量插件、过滤插件等
- API:供第三方程序调用的应用程序编程接口
2.2.2 Ansible工作原理
- Ansible的命令来源
- USERS
- CMDB(配置管理数据库)API调用
- PUBLIC&PRIVATE CLOUD API调用
- USERS->Ansible Playbook->Ansible
- Ansible实现管理的方法
- Ad-Hoc即Ansible单条命令,主要用于临时命令使用场景
- ansible-playbook主要用于长期规划好的,大型项目的场景,需要有前期的规划过程
- Ansible-playbook剧本执行过程
- 将已有编排好的任务集写入ansible-playbook
- 通过ansible-playbook命令分拆任务集至逐条ansible命令,按预定规则逐条执行
2.2.3 Ansible注意事项
- Ansible是基于模块工作的,本身没有批量部署的能力,真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架*(后续实践后再理解)*
- 执行Ansible的主机一般称为主控端、中控、master、堡垒机
- Windows不能作为主控端
- Ansible不是服务,不会一直启动,只是需要的时候启动
- Ansible的主要操作对象是host主机和网络设备