Ansible 架构及特点

第一章主要讲的是 Ansible 架构及特点,主要包含以下内容:

  1. Ansible 软件
  2. Ansible 架构模式
  3. Ansible 特性

Ansible 软件

Ansible 的编排引擎可以完成配置管理、流程控制、资源部署等工作。 Ansible 基于 Python语言实现,由 Paramiko 和 PyYAML 两个关键模块构建。

Ansible 应用领域

  1. 配置管理
  2. 服务即时开通
  3. 应用部署
  4. 流程编排
  5. 监控告警
  6. 日志记录

Ansible 架构模式

Ansible 维护模式通常由控制机和被管机组成。控制机是用来安装 Ansible 工具软件、执行维护指令的服务器或工作站,是 Ansible 维护的核心。被管机是运行业务服务的服务器,由控制机通过SSH来进行管理。

Ansible 管理方式

Ansible 是一个模型驱动的配置管理器,支持多节点发布、远程任务执行。默认使用SSH进行远程连接。无需再被管节点上安装附加软件,可使用各种编程语言进行扩展。

Ansible 管理系统由控制主机和一组被管节点组成。控制主机直接通过SSH控制被管节点,被管节点通过 Ansible 的资源清单来进行分组管理。

Ansible 用剧本方式对3台运行 Nginx 服务的 Ubuntu 服务器进行配置管理

编写 webservers.yml 的 Ansible 脚本,即 playbook ,其中包含被管节点的 hosts 和对这些 hosts 按照顺序执行的任务列表(task)。

hosts 包括web1、web2、web3。

任务列表包括如下过程:

  • 安装 Nginx(Install Nginx)
  • 创建 Nginx 配置文件(/etc/nginx/nginx.conf)
  • 基于安全证书SSH方式拷贝配置文件,重启 Nginx 服务
  • 确保 Nginx 服务处于启动状态

在 Ansible 系统的控制主机上执行ansible-playbook webservers.yml,Ansible 将会通过 SSH 连接并行地在web1、web2、web3上面安装、配置、运行 Nginx 服务。

Ansible 系统架构

  • 核心引擎:即 Ansible。
  • 核心模块(core modules):Ansible 模块资源分发到远程节点使其执行特定任务或匹配一个特定的状态。
  • 自定义模块(custom modules)
  • 插件(plugins):模块功能的补充,借助插件完成记录日志、邮件等功能。
  • 剧本(playbook):定义 Ansible 任务的配置文件,可将多个任务定义在一个剧本中,由 Ansible 自动执行,可由控制主机运行多个任务,同时对多台远程主机进行管理。
  • 连接插件(connectior plugins):Ansible 基于连接插件连接到各个主机,负责和被管节点实现通信。因为支持除SSH连接方法外的其他连接方法,所以需要连接插件。
  • 主机清单(host inventory):定义 Ansible 管理的主机策略。

Ansible 采用 paramiko 协议库,通过 SSH 或 ZeroMQ 等连接主机。Ansible 在控制主机将 Ansible 模块通过 SSH协议推送到被管节点执行,执行完自动删除。控制主机与被管节点之间支持 local、SSH、ZeroMQ 三种连接方式,默认使用基于 SSH 连接,在大规模情况下,使用 ZeroMQ 连接方式执行速度更快。

任务执行模式

Ansible 系统由控制主机对被管节点的操作方式可分为两类,即 ad-hoc 和 playbook。

  • ad-hoc 模式使用单个模块,支持批量执行单条命令。
  • playbook 模式是 Ansible 主要管理方式,playbook 通过多个 task 集合完成一类功能。(可以把 playbook 理解为通过组合多条ad-hoc 操作的配置文件)

Ansible 特性

Ansible 是基于一致性、安全性、高可靠性设计的轻量级自动化工具,具有功能强大、部署便捷、描述清晰等特性,很好地解决了统一配置、统一部署、流程编排等复杂的 IT 自动化管理问题。

Ansible 功能特性

  1. 语法简单、易读
  2. 不需要再被管节点安装客户端软件
  3. 基于推送(Push)方式
  4. 方便管理小规模场景
  5. 大量内置模块
  6. 非常轻量级的抽象层

Ansible 与其他配置管理的对比

项目 Puppet SaltStack Ansible
开发语言 Ruby Python Python
是否有客户端
是否支持二次开发 不支持 支持 支持
服务器与远程机器通信协议 标准 SSL 协议 使用AES加密 使用 OpenSSH
配置文件格式 Ruby语法格式 YAML YAML

与其他自动化工具比较,Ansible 不需要安装客户端就可以轻松地管理、配置。

总结

Ansible 的关键想法是计算机是一组,而不是一个个分开的机器,即“多层编排”的思想。避免了证书交换,以及反向解析 DNS 和 NTP 的问题。YAML的配置文件格式,简单易用。

《Ansible自动化运维:技术与佳实践》第一章读书笔记的更多相关文章

  1. Python自动化运维 技术与最佳实践PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取提取码:7bl4 一.内容简介 <python自动化运维:技术与最佳实践>一书在中国运维领域将有"划时代"的重要意义:一方面,这是国内第一本从纵.深和实践角度探 ...

  2. 技术沙龙|京东云DevOps自动化运维技术实践

    自动化测试体系不完善.缺少自助式的持续交付平台.系统间耦合度高服务拆分难度大.成熟的DevOps工程师稀缺,缺少敏捷文化--这些都是DevOps 在落地过程中,或多或少会碰到的问题,DevOps发展任 ...

  3. 沙龙报名 | 京东云DevOps——自动化运维技术实践

    随着互联网技术的发展,越来越多企业开始认识DevOps重要性,在企业内部推进实施DevOps,期望获得更好的软件质量,缩短软件开发生命周期,提高服务稳定性.但在DevOps 的实施与落地的过程中,或多 ...

  4. 一文详解 Ansible 自动化运维

    开源Linux 一个执着于技术的公众号 一.Ansible 概述 Ansible 是近年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误 ...

  5. Ansible自动化运维工具-上

    [Ansible特点] 1)Ansible与saltstack均是基于Python语言开发的 2)安装使用简单,基于不同插件和模块实现各种软件,平台,版本的管理以及支持虚拟容器多层级的部署 3)不需要 ...

  6. ansible 自动化运维

    Ansible 自动化运维 ansible安装epel #yum list all *ansible*#yum install *ansible*#yum info ansible#rpm -ql a ...

  7. Ansible 自动化运维工具

    Ansible 自动化运维工具 Ansible是什么? Ansible是一个"配置管理工具"也是一个"自动化运维工具" Ansible 作用: Ansible是 ...

  8. ansible自动化运维03

    ansible自动化运维常用模块 常用模块实现的功能:安装软件包:修改配置文件:创建程序用户组:创建目录,并修改所属和权限:挂载:启动服务:测试. command模块: shell模块: 注意:com ...

  9. 简单聊一聊Ansible自动化运维

    一.Ansible概述 Ansible是今年来越来越火的一款开源运维自动化工具,通过Ansible可以实现运维自动化,提高运维工程师的工作效率,减少人为失误.Ansible通过本身集成的非常丰富的模块 ...

  10. Ansible自动化运维工具的使用

                                 Ansible自动化运维工具的使用       host lnventory 管理主机 ip  root账号密码 ssh端口 core mod ...

随机推荐

  1. CEPH 自动化测试用例介绍

    1.QA 的内部逻辑关系. 首先用一个图表示一下QA的内部的逻辑关系. 2.QA的脚本介绍 3.QA脚本运行

  2. Button 使用详解

    极力推荐文章:欢迎收藏 Android 干货分享 阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以 ...

  3. Redis总结(八)如何搭建高可用的Redis集群

    以前总结Redis 的一些基本的安装和使用,大家可以这这里查看Redis 系列文章:https://www.cnblogs.com/zhangweizhong/category/771056.html ...

  4. 启动Eclipse提示找不到虚拟机

    由于硬盘坏了,把所有东西都清光了,今天重新安装Eclipse,出现了一点小插曲 安装的时候出现了这个画面,以前安装也是照着[软件安装管家]的发布装的,幸好还懂得几个英文单词,看了一下提示信息,直译:[ ...

  5. Danjgo学习笔记(一)

    ## 创建项目: 1. 通过命令行的方式:首先要进入到安装了django的虚拟环境中.然后执行命令: ``` django-admin startproject [项目的名称] ``` 这样就可以在当 ...

  6. C语言数组排序——冒泡排序、选择排序、插入排序

    一.冒泡排序 原理解析:(以从小到大排序为例)在一排数字中,将第一个与第二个比较大小,如果后面的数比前面的小,则交换他们的位置. 然后比较第二.第三个……直到比较第n-1个和第n个,此时,每一次比较都 ...

  7. 使用windows powershell ISE管理命令窗口,并集成git命令

    写于2018-09-03(基于win10) 开启 win + s 输入 ise 操作 主要使用新建的power shell选项卡 将git集成到power shell中 安装准备 确定你的power ...

  8. springboot集成redis实现消息发布订阅模式-双通道(跨多服务器)

    基础配置参考https://blog.csdn.net/llll234/article/details/80966952 查看了基础配置那么会遇到一下几个问题: 1.实际应用中可能会订阅多个通道,而一 ...

  9. File Compression and Archiving in linux (linux 中文件的归档)

    1. Compressing Files at the Shell Prompt Red Hat Enterprise Linux provides the bzip2, gzip, and zip ...

  10. MinorGC和FullGC的触发条件

    前言 无论是日常工作,还是企业面试,我们都会经常接触到GC.我们都知道GC是java中的垃圾回收策略.GC帮我们省去了很多事.在GC中,我经常听到的就属于MinorGC和FullGC了.那么在什么情况 ...