1、现有的企业服务器环境

  在现在的企业中,特别是互联网公司,他们的业务量众多;比如负载均衡服务器、web服务器、动态解析(php)服务器、数据库(mysql)服务器以及网站缓存服务器,等等;

  例如:一个hadoop集群就有上前台的服务器;这样的话,如何批量管理这些服务器是一个很大的问题;

  第二个问题,为了提高管理效率,必须把服务器的基础环境设施配置好,就好像高速公路一样,如果不平,则汽车的速度也无法提起来;

  所以,我们首先需要一个批量化管理系统程序,其次,系统的硬件设备不能相差太大;

2、运维工作基本介绍

  想要做批量化管理,我们首先就要知道,那些事情需要进行批量操作;基本上,很多的运维工作都是需要进行,或者说都是可以进行批量化操作的;

  总体来说,运维人员包括的基本工作有:

    1、系统安装(包括物理机和虚拟机) 

  物理机通过PEX 或则要求厂家安装
  虚拟机 则是通过glance 镜像模板这种技术来实现(克隆)

    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的基本用法

最新文章

  1. Android安全攻防战,反编译与混淆技术完全解析(上)
  2. 技术之余。。。电吉他自弹 魂斗罗 solo
  3. iOS-三方框架AFNetworking基本使用
  4. Windows Server 2008 R2 创建辅助DNS服务器并接管主要DNS服务器
  5. android:强制关闭其他应用
  6. 第二百一十天 how can I 坚持
  7. [CoffeeScript] Level 4 Arrays, Objects, Iterations -- Ex
  8. 【19】设计class犹如设计type
  9. 跟我学android-Activity介绍
  10. [Linked List]Remove Linked List Elements
  11. Delphi XE7,Rad Studio XE7 官方下载(附Delphi XE7破解),更新Update1(转)
  12. 对抗栈帧地址随机化/ASLR的两种思路和一些技巧
  13. 简单对比一下不同Windows操作系统在相同硬件配置的情况下浏览器js引擎的性能
  14. [geos]Geometry基本的几何对象
  15. vue的项目优化---回顾
  16. JAVA中如何将一个json形式的字符串转为json对象或对象列表
  17. chrome 插件 导出与导入,以apizza SQ为例
  18. python开发中容易犯的错误整合
  19. Pandas DataFrame 数据选取和过滤
  20. Centos 6.5将光盘作为yum源的设置方法

热门文章

  1. String intern的理解
  2. 记一次couchbase(memcached)安装以及使用
  3. oracl ocp认证到底有没有用!!!
  4. mac怎么设置开机自启动项,mac选择开机启动项
  5. 2363. 合并相似的物品 (Easy)
  6. tomcat 1 - Servlet 容器
  7. Python生成whl文件
  8. [mysql练习]多行结果合并问题练习
  9. 计算机网络基础(1): 拓扑结构/ OSI模型/ TCP/IP模型
  10. 微信字体大小调整导致的H5页面错乱问题处理