1. 运维自动化
运维自动化就是将日常重复性的工作通过规则设定使其遵循预先既定规则,在指定的时间内自动化运行,整个过程无需人工参与。
1.1 运维自动化发展历程
- 本地部署(On-Premises)
- 基础设施即服务(IaaS,Infrastructure as a Service)
- 平台即服务(Paas,Platform as a Service)
- 软件即服务(SaaS,Software as a Service)
1.2 常用自动化运维工具
- Ansible:python,中小型应用环境
- Saltstack:python,一般需要部署agent,执行效率更高
- Puppet:ruby,功能强大,配置复杂,重型,适合大型环境(如谷歌)
- Farbic:python,agentless
2. Ansible
- Ansible是一款为Unix系统开发的自由开源的配置和自动化工具。它由Python写成,类似于Saltstack和Puppet,但有一个不同和优点是不需要在节点中安装任何客户端。它使用SSH来和节点进行通信。Ansible基于Python parmmiko开发,分布式,无客户端,轻量级,配置语法使用YAML和jinja2模块语言,更强的远程命令执行操作。
2.1 Ansible特点
- 模块化:调用特定的模块,完成特定任务
- 部署简单,基于Python和SSH,无代理
- 安全,基于Openssh
- 支持API及自定义模块,可通过python轻松扩展
- 幂等性:一个任务的执行1遍和N遍效果一样,不会因重复执行带来意外情况
- 通过playbook来定制强大的配置、状态管理
2.2 ansible架构
- 核心(Ansible)
- 核心模块(Core Modules):包括ansible自带的核心模块及自定义模块
- 扩展模块(Custom Modules)
- 插件(Plugins):完成模块功能的补充
- 剧本(Playbooks):ansible的任务配置文件,将多个任务定义在剧本中,由ansible自动执行
- 连接插件(Connetcior Plugins):ansible基于连接插件连接到各个主机上,虽然ansible是使用SSH连接到各个主机的,但是它还支持其他的连接方法,就会需要有连接插件
- 主机群(Host Inventory):定义ansible管理的主机
3. ansible安装
- yum安装
[root@CentOS7 ~]# yum install ansible -y
- apt-get安装
ycy@Ubuntu:~$ sudo add-apt-repository ppa:ansible/ansible -y
ycy@Ubuntu:~$ sudo apt-get update
ycy@Ubuntu:~$ sudo apt-get install ansible
- Git安装
[root@CentOS7 ~]# git clone git://github.com/ansible/ansible.git --recursive
[root@CentOS7 ~]# cd ./ansible
[root@CentOS7 .ansible]# source ./hacking/env-setup
- docker安装
[root@CentOS7 ~]# docker pull docker.io/ansible/centos7-ansible
查看ansible版本信息
4. Ansible相关文件
4.1 配置文件
/etc/ansible/ansible.cfg:主配置文件,配置ansible特性
/etc/ansible/hosts :主机清单
/etc/ansible/roles :存放角色的目录
4.2 程序
/usr/bin/ansible :主程序,临时命令执行工具
/usr/bin/ansible-doc :查看配置文档,模块功能查看工具
/usr/bin/ansible-galaxy:下载/上传优秀代码或Roles模块的官网平台
/usr/bin/ansible-playbook :定制自动化任务,编排剧本任务/usr/bin/ansible-pull远程执行命令的工具
/usr/bin/ansible-vault :文件加密工具
/usr/bin/ansible-console :基于console界面与用户交互的执行工具