01 ansible的基本介绍
1、现有的企业服务器环境
在现在的企业中,特别是互联网公司,他们的业务量众多;比如负载均衡服务器、web服务器、动态解析(php)服务器、数据库(mysql)服务器以及网站缓存服务器,等等;
例如:一个hadoop集群就有上前台的服务器;这样的话,如何批量管理这些服务器是一个很大的问题;
第二个问题,为了提高管理效率,必须把服务器的基础环境设施配置好,就好像高速公路一样,如果不平,则汽车的速度也无法提起来;
所以,我们首先需要一个批量化管理系统程序,其次,系统的硬件设备不能相差太大;
2、运维工作基本介绍
想要做批量化管理,我们首先就要知道,那些事情需要进行批量操作;基本上,很多的运维工作都是需要进行,或者说都是可以进行批量化操作的;
总体来说,运维人员包括的基本工作有:
1、系统安装(包括物理机和虚拟机)
2、程序包的安装
对程序进行配置,满足使用者的需求,然后需要启动服务,保证服务正常运行;
3、程序发布
这里的程序一般指的是开发人员开发的程序代码,运维人员需要将其在生产环境下面进行部署与配置;现在程序更新、且现在都是以敏捷模式开发,每周都需要更新一次,并部署到生产环境下;
同样的web页面、游戏的代码也是如此,且游戏代码更新较为频繁,且更多的是在晚上进行代码部署,这个时候的流量会比较小,相对的影响也会比较小一点;
4、监控
这里的监控操作就较为复杂,除了系统的正常运行以外;我们还需要去监控服务的正常运行;服务器CPU、内存的使用情况;网络设备的运行情况;带宽流量的占用情况等等;
同时,如果监控中出现了错误,我们需要对应的做出一些对应的操作!
基于以上四点,我们大致将运维工作氛围三个层面:

在系统操作层面上(OS Provisioning),我们需要安装好操作系统;对于物理机器,我们可以使用PXE、Cobbler、kickstack来实现服务器的批量部署;而对于虚拟机实例,我们则使用各种云管理工具(云stack)来实现批量安装,通过定制glance,或者说是image templates通过镜像文件来启动虚拟机;
服务操作层面上(configration),我们使用puppet工具(ruby开发的一款自动化运维工具)、saltstack(python开发一款自动换运维工具)、chef、cfengine等软件程序来实现服务安装、服务配置与服务启动;
批量操作层面(command and control),fabric(python研发的一个命令行工具)。在规模稍大的公司里面,都会自己研发批量管理工具,其中蓝鲸就是腾讯自己的自动化运维工具;
3、ansible的基本介绍
3.1、ansible的历史
Ansible的第一个版本是0.0.1,发布于2012年3月9日,其作者兼创始人是Michael DeHaan。Michael DeHaan曾经供职于Puppet Labs、RedHat、Michael,在配置管理和架构设计方面有丰富的经验。
其在RedHat任职期间主要开发了Cobble,经历了各种系统简化、自动化基础架构操作的失败和痛苦,在尝试了Puppet、Chef、Cfengine、Capistrano、Fabric、Function、Plain SSH等各式工具后,决定自己打造一款能结合众多工具优点的自动化工具,Ansible由此诞生。
3.2、ansible的特点
1、平缓的入门曲线,ansible简单易学;
2、无需要bootstrapping(这是一种重复抽样的算法)功能;
3、ansible使用模式是一种非有效的无环图的形式;
4、无代理端(no agents);
5、没有服务端,不是C/S架构的,直接装上ansible服务,就可以对服务器进行控制;
6、不依赖额外的PKI机制;
7、ansible是一种模块化的结构,需要什么功能,插入或者调用什么模块即可;
8、使用YAML模板语言文件;YAML可以用来编写playbook,通过playbook来实现各种功能,如果功能较为负载,需要多个playbook来协调完成,则需要使用roles来指定各个playbook之间的关系;
9、默认使用ssh来进行服务器之间的互通;
10、强大的任务编排工具,类似于kubernetes;
3.3、ansible的工作原理
ansible包含了众多自动化工具的优点;
其中,在系统层面上有红帽的卫星服务,需要购买(很少有人使用),还有cobbler、func实现系统的统一安装与管理;
其次,在配置层面上面具有cfengin和puppet,以及chef的配置功能;
ansible又凭什么来接受自动化平台管理呢?其实,在系统管理上有两种方式,以一种是有agent端的,一种是没有agent端的;
有agent端的:例如puppet、func都是需要安装agent进行管理,这种管理方式相对而言比较麻烦,但是比较稳定;
无agent端的(agentless):例如ansible、fabirc,无agent端的管理程序可以通过ssh来进行程序管理,这时候就存在一个问题,我们需要拥有root权限,如果没有root权限就需要通过sudo来提权,从而才能达到对其他服务器进行管理的目的;
相对而言,有agent端的程序更加安全,这一点agentless是不具备的;所以,ansible的管理工具对安全提出了一定的挑战,客户端需要有服务器端的秘钥,这样如果服务器端被人攻破,则所有的服务器都会很危险;
所以,ansible使用ssh密码登录的方式来进行管理,这样如果被管理端没有获取公钥,则就无法被加入到被管理的服务器群中来,也不会被攻破了;
3.4、ansible的架构
ansible属于一种模块化架构;所有的模块都与ansible主模块相连,如下图:

除了主核心模块--ansible外,还包括一些其他的模块,例如:core modules(核心模块)、costome modules(自定义模块)、plugins(第三方插件)、connection plugins(链接插件)、host inventory(主机清单)、playbooks(剧本);
其中core modules和costome modules指定了一系列的操作动作;
playbooks则是通过YAML语言将模块调用起来,进行编排,按照一定的顺序来执行相应的操作;
而host inventory则指定了清单列表,指示了什么机器要被进行playbook的操作;
connection plugins则用来关联被管理的主机;
4、ansible的安装与基本用法
yum install ansible -y
ansible的主配置文件
/etc/ansible/ansible.cfg
/etc/ansible/hosts
ssh的无秘钥认证
ansible-doc的基本用法
01 ansible的基本介绍的更多相关文章
- Ansible 常见模块介绍
目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...
- Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...
- Ansible常用模块介绍及使用(2)
Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)–技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几个 ...
- Ansible 插件 操作介绍
一.Ansible 插件 之 [统计任务处理时间] 在做性能优化之前首先需要做的是收集一些统计数据,这样才能为后面做的性能优化提供数据支持,对比优化前后的结果.非常不错的是,在 github 发现一个 ...
- ansible安装 使用 介绍
1.介绍安装 a.介绍 Ansible:—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作. b.安装 ...
- 1、Ansible初识简要介绍及安装
1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...
- Hibernate 系列 01 - 框架技术 (介绍Hibernate框架的发展由来)
引导目录: Hibernate 系列教程 目录 本篇导航: 为什么学习框架技术 框架的概念 主流框架的介绍 1.为什么学习框架技术 如何制作一份看上去具有专业水准的PPT文档呢?一个简单的方法就是使用 ...
- Ansible 模块命令介绍
copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...
- Ansible自动化运维笔记2(Ansible的组件介绍)
1.Ansible Inventory (1)静态主机文件 默认的ansible invetory是/etc/hosts文件,可以通过ANSIBLE_HOSTS环境变量或者通过运行命令的时候加上-i ...
- 01 Django REST Framework 介绍
01-Django REST Framework的介绍 Django REST框架是一个用于构建Web API的强大而灵活的工具包. 您可能希望使用REST框架的一些原因: 1. Web可浏览API对 ...
随机推荐
- bladex 通用日志不入库,日志无法使用
公司最近要记录操作日志,然后用的是bladex脚手架.想起来刚好有自带的日志管理功能,然后就很happy的将日志功能授权给了管理员. 也就是那几个通用日志.接口日志.错误日志. 结果人傻了,根本不会记 ...
- Flink Application Development DataStream API Event Time--Flink应用开发DataStream API事件时间
目录 概览 事件时间 接下来去哪儿 水印生成 水印策略简介 使用水印策略 处理空闲源 写水印生成代码 写周期WatermarkGenerator代码 写符号形式的WatermarkGenerator代 ...
- java 动手动脑 方法重载
如下代码://MethodOverload.java //Using overloaded methods package HJssss; public class zhuce { public st ...
- 5. icon创建
1 <!DOCTYPE html> 2 <html lang="zh"> 3 <head> 4 <meta charset="U ...
- SSH 秘钥登入
1.打开权限 vim /etc/ssh/sshd_config 去掉 PubkeyAuthentication yes 一行的# 2.重启ssh服务 systemctl restart ss ...
- centos7.4离线安装.NETCore3.1 环境
1.在有网的情况下把离线包下载到电脑上sudo yum install --downloadonly --downloaddir=/home/mjb/soft/dotnet-sdk-3.1 dotne ...
- Linux一键单机部署和集群部署
整个部署脚本只用执行sh即可,有需要可以联系我. 一.部署类型 可参考:常见的部署类型(停机部署.蓝绿部署.滚动部署.灰度部署.AB测试等) 二.一键单机部署Docker服务 三.一键单机部署原生服务 ...
- react 学习笔记更新
生命周期 插槽 组件中间内容用this.props.children访问 是否组件更新 shouldcompontsupdata(props,newstatus){ return false: } 父 ...
- Echarts xAxis、yAxis
2017年08月06日 09:10:12 数据架构师 阅读数:37641更多 所属专栏: Echarts数据可视化 版权声明:本文为博主原创文章,转载请注明来源.开发合作联系82548597@q ...
- vscode提交修改的时候报错:无法推送 refs 到远端。您可以试着运行“拉取”功能,整合您的更改
vscode提交修改的时候报错:无法推送 refs 到远端.您可以试着运行"拉取"功能,整合您的更改, git操作命令行 git pull origin yourbranch - ...