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

01 ansible的基本介绍的更多相关文章

  1. Ansible 常见模块介绍

    目录 Ansible 常见模块介绍 ping 模块 command 模块 cron 模块 user 模块 group 模块 copy 模块 file 模块 service 模块 shell 模块 sc ...

  2. Ansible常用模块介绍及使用(week5_day1_part2)--技术流ken

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)--技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几 ...

  3. Ansible常用模块介绍及使用(2)

    Ansible模块 在上一篇博客<Ansible基础认识及安装使用详解(一)–技术流ken>中以及简单的介绍了一下ansible的模块.ansible是基于模块工作的,所以我们必须掌握几个 ...

  4. Ansible 插件 操作介绍

    一.Ansible 插件 之 [统计任务处理时间] 在做性能优化之前首先需要做的是收集一些统计数据,这样才能为后面做的性能优化提供数据支持,对比优化前后的结果.非常不错的是,在 github 发现一个 ...

  5. ansible安装 使用 介绍

    1.介绍安装 a.介绍 Ansible:—基于 Python paramiko 开发,分布式,无需客户端,轻量级,配置语法使用 YMAL 及 Jinja2模板语言,更强的远程命令执行操作. b.安装 ...

  6. 1、Ansible初识简要介绍及安装

    1.Ansible简介 1.1 Ansible介绍 Ansible 是一个简单的自动化运维管理工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fab ...

  7. Hibernate 系列 01 - 框架技术 (介绍Hibernate框架的发展由来)

    引导目录: Hibernate 系列教程 目录 本篇导航: 为什么学习框架技术 框架的概念 主流框架的介绍 1.为什么学习框架技术 如何制作一份看上去具有专业水准的PPT文档呢?一个简单的方法就是使用 ...

  8. Ansible 模块命令介绍

    copy模块: 目的:把主控端/root目录下的a.sh文件拷贝到到指定节点上 命令:ansible 10.1.1.113 -m copy -a 'src=/root/a.sh dest=/tmp/' ...

  9. Ansible自动化运维笔记2(Ansible的组件介绍)

    1.Ansible Inventory (1)静态主机文件 默认的ansible invetory是/etc/hosts文件,可以通过ANSIBLE_HOSTS环境变量或者通过运行命令的时候加上-i ...

  10. 01 Django REST Framework 介绍

    01-Django REST Framework的介绍 Django REST框架是一个用于构建Web API的强大而灵活的工具包. 您可能希望使用REST框架的一些原因: 1. Web可浏览API对 ...

随机推荐

  1. 看K线学炒股(8.10)

    今天大盘看起来疲软但强势的一天,收涨1.01%. 广东骏亚,现价21.39,看尾盘,这只票现在看还有下跌空间,但也有反弹可能,跌到21元以下均价上可加仓,博止跌反弹.现在60分钟线看有点阴雨绵绵的意思 ...

  2. nginx auth_basic uwsgi 目录简易认证。

    mkdir /etc/nginx/conf.d/auth_pwd touch /etc/nginx/conf.d/auth_pwd/xx.pwd htpasswd -c -d /etc/nginx/c ...

  3. SAP生产订单没有目标成本的原因解释

    首先,OKV6察看一下目标成本的配置,默认是当期成本估算,见下图: 其次,没有目标成本的原因还可能是下列原因导致: 1.该物料没有成本估算和发布2.工艺路线维护日期晚于这个物料估算日期3.没有做CO1 ...

  4. Word03 政府工作年度报告-office真题

    1.课程的讲解之前,先来对题目进行分析,首先需要在考生文件夹下,将Wrod素材.docx文件另存为Word.docx,后续操作均基于此文件,否则不得分. 2.这一步非常的简单,打开下载素材文件,在[文 ...

  5. Cupboard and Balloons CodeForces - 342C

    Cupboard and Balloons CodeForces - 342C 找到不变的点 抓住不确定的点进行讨论 #include<iostream> #include<cmat ...

  6. mac系统yarn使用报错:ERROR: add is not COMMAND nor fully qualified CLASSNAME.

    出现错误的过程: mac 系统上使用阿里的X6(@antv/x6) x6 快速上手: 1   npm install @antv/x6 --save 2   yarn add @antv/x6     ...

  7. vue基础 · 过滤器(3)

    过滤器:filter Vue.js 允许你自定义过滤器,可被用于一些常见的文本格式化.过滤器可以使用在2个地方:{{ }} 插值 和 v-bind 表达式(后者从 2.1.0+ 开始支持) 过滤器分为 ...

  8. [node]启动一个简单的node接口

    来自知乎. 需要先安装一个node,安装过程不表. 新建文件: nodeServer.js // 复制这个文件到目录,再输入一下命令: // npm i express // node nodeSer ...

  9. 实验:在Arduino上使用printf格式化输出到串口

    那么在pcDuino上如何用printf函数将数据从串口送出来呢?这就需要修改Arduino上的串口的库文件了.修改 步骤如下:  1.在 pcduino上arduino的库文件路径是:/usr /a ...

  10. Docker基本命令之 容器运行命令参数

    容器命令行参数介绍: docker run:顾名思义就是运行一个Docker 以下是具体参数介绍: -a: stdin:指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项 - ...