Ansible自动化运维工具介绍与部署

ansible自动化运维工具介绍与部署

文章目录

    • 一、什么是自动化运维?
    • 二、常用的自动化运维工具
      • 2.1 Ansible
      • 2.2 SaltStack
      • 2.3 Puppet
      • 2.4 三种自动化工具特点对比
    • 三、介绍Ansible
      • 3.1 什么是 Ansible?
      • 3.2 Ansible 无需代理
      • 3.3 Ansible 方式
    • 四、部署Ansible
      • 4.1 控制节点
      • 4.2 受管主机
      • 4.3 安装ansible
      • 4.4 安装ansible命令补齐功能


一、什么是自动化运维?

自动化运维是指将IT运维中日常的、大量的重复性工作自动化,把手工执行的工作,通过梳理分析,进行逻辑分解,借助程序脚本或工具转为机器自动化的操作。自动化不仅仅只是自动替代人工的一个过程,更是一个管理理念的提升过程,是运维的更高层次,也是未来的发展趋势。

二、常用的自动化运维工具

目前常见的运维自动化管理工具主要是Puppet、SaltStack、Ansible下面分别简述它们。

2.1 Ansible

Ansible 基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。

Ansible只需要在一台普通的服务器上运行即可,不需要在客户端服务器上安装客户端。因为Ansible基于SSH远程管理,而Linux服务器大部分都离不开SSH,所以Ansible不需要为配置添加额外的支持

Ansible安装使用都很简单,而且基于上千个插件和模块,实现各种软件、平台、版本的管理,支持虚拟容器多层级的部署。

Ansible自动化运维工具介绍与部署_第1张图片

ansible优点

  • 模块可以用任何语言开发
  • 受管节点不需要安装代理软件
  • 有Web管理界面、可配置用户、组、资源清单和执行Playbook
  • 安装和运行极其简单

ansible缺点

  • 对受管节点为Windows有待加强
  • Web管理界面是内置的一部分
  • 需导入资源清单
  • 执行效率相对较低

2.2 SaltStack

SaltStack是基础架构管理的一种自动化工具。部署轻松,在几分钟内可运行起来,扩展性好,很容易管理上万台服务器,速度够快。与服务器之间的交流,以毫秒为单位。SaltStack提供了一个动态基础设施通信总线用于编排,远程执行、配置管理等等。SaltStack项目于2011年启动,年增长速度较快,五年期固定基础设施编制和配置管理的开源项目。SaltStack社区致力于保持slat项目集中、友好、健康、开放。

saltstack是基于python开发的一套C/S自动化运维工具,通信采用了zeromq消息队列的(pub/sub),数据传输采用了AES(高级加密)保证安全性,认证采用了SSL方式。

Ansible自动化运维工具介绍与部署_第2张图片

saltsatck优点

  • 状态文件可用简单YAML配置模块或复杂的Python/PyDSL脚本
  • 与客户端可以基于SSH或在受管节点安装代理
  • Web界面可看到运行的工作、minion状态、事件日志、可在客户端执行命令
  • 扩展能力极强

saltsatck缺点

  • Web界面像毒药竞争产品不稳定与相对不完善
  • 缺乏生成深度报告的能力

2.3 Puppet

puppet是一个IT基础设施自动化管理工具,它能够帮助系统管理员管理基础设施的整个生命周期:供应(provisioning)、配置(configuration)、联动(orchestration)及报告(reporting)。
基于puppet ,可实现自动化重复任务、快速部署关键性应用以及在本地或云端完成主动管理变更和快速扩展架构规模等。
遵循GPL 协议(2.7.0-), 基于ruby语言开发。
2.7.0 以后使用(Apache 2.0 license)
对于系统管理员是抽象的,只依赖于ruby与facter。
能管理多达40 多种资源,例如:file、user、group、host、package、service、cron、exec、yum repo等。

Ansible自动化运维工具介绍与部署_第3张图片

puppet优点

  • 模块由Ruby或Ruby子集编写
  • push命令可以即可触发变更、
  • Web界面生成处理报表、资源清单、实时节点管理
  • 代理运行端进行详细、深入的报告和对节点进行配置

puppet缺点

  • 相对其它工具较复杂,需学习Puppet的DSL或Ruby
  • 安装过程缺少错误校验和产生错误报表

2.4 三种自动化工具特点对比

Ansible自动化运维工具介绍与部署_第4张图片


三、介绍Ansible

3.1 什么是 Ansible?

Ansible是一款自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

Ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是Ansible所运行的模块,Ansible只是提供一种框架。主要包括:
(1) 连接插件connection plugins:负责和被监控端实现通信;
(2) host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
(3) 各种模块核心模块、command模块、自定义模块;
(4) 借助于插件完成记录日志邮件等功能;
(5) playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

Ansible架构图:

Ansible自动化运维工具介绍与部署_第5张图片

Ansible自动化运维工具介绍与部署_第6张图片

3.2 Ansible 无需代理

Ansible 围绕无代理架构构建。通常而言,Ansible 通过 OpenSSH 或 WinRM 连接它所管理的主机并且运行任务,方法通常是将称为 Ansible 模块的小程序推送至这些主机。这些程序用于将系统置于需要的特定状态。在 Ansible 运行完其任务后,推送的所有模块都会被删除。

Ansible 不需要批准使用任何特殊代理,然后再部署到受管主机上。由于没有代理,也不需要额外的自定义安全基础架构,

Ansible 具有多个重要的优点:

  • 跨平台支持:Ansible 提供Linux、Windows、UNIX和网络设备的无代理支持,适用于物理、虚拟、云和容器环境。
  • 人类可读的自动化:Ansible Playbook采用YAML文本文件编写,易于阅读,有助于确保所有人都能理解它们的用途。
  • 完美描述应用:可以通过 Ansible Playbook进行每种更改,并描述和记录应用环境的每一个方面。
  • 轻松管理版本控制:Ansible Playbook和项目是纯文本。它们可以视作源代码,放在现有版本控制系统中。
  • 支持动态清单:可以从外部来源动态更新 Ansible 管理的计算机列表,随时获取所有受管服务器的当前正确列表,不受基础架构或位置的影响。
  • 编排可与其他系统轻松集成:能够利用环境中现有的 HP SA、Puppet、Jenkins、红帽卫星和其他系统,并且集成到 Ansible 工作流中。

3.3 Ansible 方式

Ansible 的设计宗旨是工具易用,自动化易写易读。所以在创建自动化时我们应追求简单化。

Ansible 自动化语言围绕简单易读的声明性文本文件来构建。正确编写的 Ansible Playbook可以清楚地记录你的工作自动化。

Ansible 是一种要求状态引擎。它通过表达你所希望系统处于何种状态来解决如何自动化IT部署的问题。Ansible 的目标是通过仅执行必要的更改,使系统处于所需的状态。试图将 Ansible 视为脚本语言并非正确的做法。

四、部署Ansible

4.1 控制节点

Ansible 易于安装。 Ansible 软件只需要安装到要运行它的一个(或多个)控制节点上。由 Ansible管理的主机不需要安装 Ansible。

对控制节点的要求:

  • 控制节点应是Linux或UNIX系统。不支持将Windows用作控制节点,但Windows系统可以是受管主机。
  • 控制节点需要安装Python3(版本3.5或以上)或Python2(版本2.7或以上)。

如果操作系统是红帽8.0,Ansible 2.9可以自动使用 platform-python 软件包,该软件包支持使用Python的系统实用程序。你不需要从 AppStream安装python37或python27软件包。

[root@localhost ~]# yum list installed platform-python
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Installed Packages
platform-python.x86_64                   3.6.8-1.el8.0.1                    @anaconda

4.2 受管主机

Ansible的一大优点是受管主机不需要安装特殊代理。Ansible控制节点使用标准的网络协议连接受管主机,从而确保系统处于指定的状态。

受管主机可能要满足一些要求,具体取决于控制节点连接它们的方式以及它们要运行的模块。

Linux和UNIX受管主机需要安装有Python2(版本2.6或以上)或Python3(版本3.5或以上),这样才能运行大部分的模块。

对于红帽8,可以启用并安装python36应用流(或python27应用流)

yum module install python36

如果受管主机上启用了SELinux,还需要确保安装python3-libselinux软件包,然后才能使用与任何复制、文件或模板功能相关的模块。所以在工作的时候,应当把SELinux功能关闭。

4.3 安装ansible

#配置国内YUM源
[root@localhost ~]# curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
[root@localhost ~]# sed -i -e '/mirrors.cloud.aliyuncs.com/d' -e '/mirrors.aliyuncs.com/d' /etc/yum.repos.d/CentOS-Base.repo

#注意,不要安装epel源,否则会报错
#过滤查看有无ansible的源
[root@localhost ~]# dnf list all|grep ansible
.................
centos-release-ansible-29.noarch                       1-2.el8
.................
#下载ansible的源
[root@localhost ~]# dnf -y install centos-release-ansible-29.noarch
#安装ansible
[root@localhost ~]# dnf -y install ansible

4.4 安装ansible命令补齐功能

ansible 2.9版本开始,支持命令的选项补全功能,该功能依赖于python的argcomplete插件,下面来安装python-argcomplete。

注意:centos8之前是python-argcomplete

yum -y install python3-argcomplete
activate-global-python-argcomplete
bash

你可能感兴趣的:(ansible,服务器,运维,linux,自动化运维,ansible)