随着IT行业的发展,运维已经成为IT信息产业和服务中不可或缺的一部分。面对越来越复杂的业务,越来越多样化的用户需求,运维的业务量也随之增大,单个运维人员管理的IT对象也越来越多。从初期的几台服务器发展到庞大的数据中心,单靠人工已经无法满足在技术、业务、管理等方面的要求,那么标准化、自动化、架构优化、过程优化等降低IT服务成本的因素越来越被人们所重视。其中,自动化最开始作为代替人工操作为出发点的诉求被广泛研究和应用。这种情况下运维自动化的概念随之而出。
自动化运维
IT运维自动化是一组将静态的设备结构转化为根据IT服务需求动态弹性响应的策略,目的就是实现IT运维的质量,降低成本。可以说自动化一定是IT运维最高层面的重要属性之一,但不是全部。
自动化运维路线图
ansible
ansible是基于Python开发,集合了众多运维工具的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能的自动化运维工具。它相较于其它自动化运维工具的有以下优点:
轻量级,无需在客户端安装agent,更新时,只需在操作机上进行一次更新即可。
批量任务执行可以写成脚本,而且不用分发到远程就可以执行。
使用python编写,维护更简单,ruby语法过于复杂。
支持sudo。
ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
connection plugins:连接插件,负责和被监控端实现通信。
host inventory:指定操作的主机,是一个配置文件里面定义监控的主机。
各种模块核心模块、command模块、自定义模块。
借助于插件完成记录日志邮件等功能。
playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。
Redhat/CentOS(前提是软件仓库增加了EPEL源)
yum install ansible
Debian/Ubuntu
apt-get update
apt-get install software-properties-common
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible
其它linux发行版及源码编译安装见官方网站http://docs.ansible.com/ansible/latest/intro_installation.html
定义host inventory,即主机清单。
vim /etc/ansible/hosts
[webhosts]
192.168.1.2 ansible_ssh_user=root ansible_ssh_pass=your_passwd
web2 ansible_ssh_user=root ansible_ssh_pass=your_passwd
参数解析(更多的参数详见官网):
[webhosts]:自定义主机组,可以添加多行,不在主机组的记录则一行就是一条主机信息,支持IP和可解析主机名。
ansible_ssh_user=root 是ssh登陆用户 ,默认是使用root登录。
ansible_ssh_pass=guoting 是ssh登陆密码。如果被控制主机配置了允许ansible主机密钥登录,引处可不填写。
测试连接
ansible web2 -m ping
web2 | SUCCESS => {
"changed": false,
"ping": "pong"
}
ansible命令最常用的用法(所支持的模块可以使用ansible-doc -l来查看):
ansible 主机/主机组 -m 模块名 -a '模块参数'
常用模块:
ping/win_ping:ping测试
hostname:管理主机名
command:在远程主机上执行命令
shell:切换到某个shell执行指定的指令
raw:类似command,但可以传递管道
script:执行脚本 (执行的是本地的脚本将其复制到远程在执行)
copy:复制文件到远程主机
fetch:获取远程主机文件
file:设置文件的属性
setup:查看远程主机的基本信息
service:用于管理服务
cron:用于管理计划任务
filesystem:在块设备上创建文件系统
yum:用yum管理软件包
user:管理用户
group:管理组
synchronize:使用rsync同步文件
mount:配置挂载点
pip:管理python的pip模块
联系客服