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. 解决django中的跨域问题

    解决django中的跨域问题: Django项目中出现跨域问题,用第三方包django-cors-headers来解决跨域问题. 安装:pip install django-cors-headers; ...

  2. redis的持久化方案RDB和AOF

    RDB:快照形式,定期把内存中当前时刻的数据保存到磁盘.Redis默认支持的持久化方案.速度快但是服务器断电的时候会丢失部分数据 AOF形式:append only file.把所有对redis数据库 ...

  3. Java 18-方法 认识方法与方法定义

    1.认识方法 1)什么是方法 Java方法是语句的集合,它们在一起执行一个功能; 方法是解决一类问题的步骤的有序组合; 方法一般包含于类中; 方法在程序中被创建,在其他地方被引用2 2)方法的有点 使 ...

  4. python 识别登陆验证码图片(完整代码)

    在编写自动化测试用例的时候,每次登录都需要输入验证码,后来想把让python自己识别图片里的验证码,不需要自己手动登陆,所以查了一下识别功能怎么实现,做一下笔记. 首选导入一些用到的库,re.Imag ...

  5. jadx 定位方法

    目录 链接参数定位 链接参数定位 通过搜索请求链接中的参数来定位函数位置,如下图所示,请求链接为 https://www.python-spider.com/api/app1,app1为链接标识,可以 ...

  6. 关于elementui 面包屑设置

    后台管理面包屑 新建组件 <template> <el-breadcrumb separator-class="el-icon-arrow-right"> ...

  7. Python冰墩墩(非原创,搬运工)

    import turtle turtle.title('2022北京冬奥会冰墩墩') turtle.speed(10000) # 速度 # 左手 turtle.penup() turtle.goto( ...

  8. BASE64编码作业

    BASE64编码作业 什么是BASE64编码 ase64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法.可查看RFC2045-RF ...

  9. CSR,SSR,PreRender原理解密

    CSR.SSR.Prerender 原理全解密   做前端的同学们肯定或多或少听说过CSR,SSR,Prerender这些名词,但是大多肯定只是停留在听说过,了解过,略懂一点,但是,你真的理解这些技术 ...

  10. iOS用runtime给一个类动态添加方法 ---class_addMethod

    先介绍下class_addMethod这个fangfa   /**   * Adds a new method to a class with a given name and implementat ...