Ansible Basic
Published:
0x01 自动化运维应用场景
- 平台架构组建
- 日常运营保障
- 性能、效率优化
工具组件
| 任务 | 工具 |
|---|---|
| 代码管理SCM | Github | GitLab | SubVersion |
| 构建工具 | maven | gradle |
| 自动部署 | Capistrano | CodeDeploy |
| 持续集成CI | Jenkins | Travis |
| 配置管理 | Ansible | Saltstack | Chef | Puppet |
| 容器 | Docker | Podman | LXC | AWS |
| 编排 | Kubernetes | Core | Mesos |
| 服务注册与发现 | Zookeeper | etcd | Consul |
| 日志管理 | ELK | Logentries |
| 系统监控 | Prometheus | Zabbix | Datadog | Graphite | Ganglia | Nagios |
| 性能监控 | Splunk | New Relic | AppDynamics |
| 压力测试 | JMeter | Blaze Meter | loader.io |
| 应用服务器 | Tomcat | JBoss |
| Web服务器 | Nginx |
| 数据库 | ==MySQL== | Oracle | PostgreSQL | mongoDB | ==redis== |
| 项目管理 | Jira | Asana | Taiga | Trello | Basecamp | Pivotal Tracker |
任务路线
【基础运维】IT解决 :arrow_right:【监控运维】外包到机房:arrow_right:【系统运维】PXE解决Intake问题 :arrow_right:【应用运维】Infra主要职责:arrow_right:【自动化运维】Infra主要职责 :arrow_right: 架构师 & CTO
上线流程
开发:Bug修复、更新数据
测试:测试用例、性能评测、条件构造
准备:Review、合并分支、打包
预上线:配置修复、预发部署、发布验收
上线:环境准备、上线部署、配置修改、添加监控
常用IaaS解决方案
- Ansible:python,Agentless,适应于几百台
- Saltstack:python,agent,专有协议效率高。适用于上千台机器
- Puppt:ruby,重型、配置复杂、适合大型环境(tweet、fb使用经验)
- Fabric:Python编写,agentless
- Chef:ruby编写,国内应用少
2. Ansible架构
Features
- 三个Python关键模块
- Paramiko:基于ssh的远程控制模块
- PyYAML
- Jinja2:模板生成
- 部署简单、基于python和SSH,agentless,无需代理,不依赖PKI
- 幂等性,执行一遍与多遍,结果相同
- 支持playbook编排任务,多层解决方案Role
Architecture
Intro


Ansible的API调用者包括:
- Users的手工调用
- Users编写的Playbook
- CMDB配置数据库的调用
- 公有云及私有云中的调用
Ansible自动化引擎内容包括:
- Inventory:Ansible管理主机清单
/etc/ansible/hosts - Modules:Ansible执行命令的功能模块,多为内置模块,亦可自定义
- Plugins:模块功能补充,如连接插件,循环插件,变量插件,过滤插件(不常用)
- API:供第三方使用的编程接口
Ansible最终作用对象通常是hosts主机或者Network设备
运行Ansible位置一般被称作主控端、中控、master或堡垒机
| Role | Need |
|---|---|
| Master Server | Python>2.6 |
| Windows无法作为master server使用 | |
| Slave Server | Python<2.4时需要python-simplejson |
开启SELinux时,需要libselinux-python |
Files
- Ansible主配置文件
/etc/ansible/ansible.cfg - Inventory主机清单
/etc/ansible/hosts - Roles Collection
/etc/ansible/roles
Project
- Ansible主程序
/usr/bin/ansible - Doc调阅程序
/usr/bin/ansible-doc - Ansible官网下载程序(ansible-galaxy)
/usr/bin.ansible-galaxy - 定制化任务
/usr/bin/ansible-playbook - 文件加密程序
/usr/bin/ansible-vault - Console界面程序
/usr/bin/ansible-console
3. Example
# use ping module on target server
ansible 192.168.1.101 -m ping
# define multiple servers as target(not ordered)
ansible 192.168.1.101,192.168.1.102 ping
# use all servers in inventory as target servers
ansible all ping
