自动化运维工具之Ansible安全运维

admin 2024年6月13日17:05:44评论12 views字数 2756阅读9分11秒阅读模式

PART 01

引言

从早期All In One(所有应用部署在一台服务器上)的简单应用,到当前集群、高可用、缓存、消息队列、配置中心、主从分离、负载均衡、大数据存储等尖端技术的复杂应用,对运维的技术专业度和综合技能要求越来越高,运维的交付标准不再以月或周为单位,而是以天或小时为单位。现在如此,未来更是如此。运维不再如早期一样,手动一台台地登录服务器、部署应用配置环境、手动交付。该种方式耗时耗力,最主要的是这些重复手工劳动无法让运维有更大的价值体现,这一切都是不合理的,需要有更好的解决方式。在这个背景下,各种自动化管理工具如SaltStack、Puppet、Fabric、Chef等遍地开花,但今天我们介绍的是当下比较流行的Ansible自动化运维工具。

PART 02

Ansible是什么

运维自动化就是将日常重复性的工作通过规则设定使其遵循预先既定规则,在指定的范围时间内自动化运行,整个过程却无需人工参与。而Ansible 正是帮助运维人员实现自动化的工具之一。

Ansible是近年比较火的一款运维自动化工具,其主要功能是帮助运维人员实现IT工作的自动化、降低人为操作失误、提升运维工作效率,常用于软件部署自动化、配置自动化、管理自动化、持续集成、零宕机平滑升级等。它有着丰富的内置模块(如command、shell、yum等)和开放的API接口。

PART 03

Ansible是如何工作的

Ansible没有客户端,因此底层通信依赖于系统软件,Linux 系统下基于OpenSSH通信,Windows系统下基于PowerShell,管理端必须是Linux 系统,使用者在管理节点通过Ansible 工具调用各应用模块将指令推送至被管理端执行,并在执行完毕后自动删除产生的临时文件。根据Ansible使用过程中的不同角色,我们将其分为:

(1)使用者

Ansible使用者来源于多种维度,当前运维主要有以下几种使用方式:

自动化运维工具之Ansible安全运维

1)USERS直接使用Ad-Hoc 命令调用Ansible 工具集来完成任务执行;

2)USERS预先编写好的ANSIBLE PLAYBOOKS,通过执行 Playbooks中预先编排好的任务集按序完成任务执行;

3)Ansible除了有丰富的内置模块外,同时提供丰富的API语言接口,如Python、PERL等多种当下流行语言,使Ansible以API调用的方式运行。

自动化运维工具之Ansible安全运维

(2)Ansible工具集

Ansible 命令是Ansible的核心工具,Ansible命令并非是自身完成所有的功能集,其只是Ansible执行任务的调用入口,可以称其为“总指挥”,所有命令的执行通过其调用最终完成。Ansible命令共有INVENTORY、API、MODULES、PLUGINS这些工具可供调用。

(3)目标对象

Ansible的目标对象,不仅是Linux 和非 Linux操作系统的主机(HOSTS),同样也可以作用于各类公有云/私有云,商业和非商业设备的网络设施。

PART 04

Ansible优势与特点

自动化运维工具之Ansible安全运维

优势:

(1)轻便性:无需在被控制服务器上安装客户端,Ansible基于ssh协议;

(2)幂等性:大部分模块具有幂等特性,即如果输入systemctl stop firewalld当发现要停止的服务已经停止就不会做任何操作了,多次停止不会改变结果;

(3)判断性:大部分模块在执行时都会判断目标节点是否要执行任务;

(4)简洁性:一个窗口即可管理所有需要控制的机器,无需开启多个窗口。

自动化运维工具之Ansible安全运维

特点:

(1)部署简单,只需要主控端部署Ansible环境,被控端无需做任何操作;

(2)默认使用SSH协议进行管理;

(3)主从集中化管理;

(4)配置简单、功能强大、扩展性强;

(5)支持API及自定义模块,可以通过Python轻松扩展;

(6)通过playbooks来定制强大的配置、状态管理。

自动化运维工具之Ansible安全运维

PART 05

Ansible应用场景

Ansible底层基于Python,以简单著称,配置文件格式也以INI和YAML为主,与其他管理工具相比,学习成本较低,学习曲线也很平滑,无论是基础运维人员还是资深运维工程师都可以较快上手,稍加练习便可以熟练掌握。如果具备Dev基础,熟悉Python、PHP等主流语言,基于Ansible开放API接口做二次开发,可以灵活有效地发挥其价值。Ansible自身也包括非常丰富的内置模块,从Windows系统到开源Linux系统,从文件同步到命令执行,从软件的安全升级到配置的维护变更等,几乎囊括了日常运维所有的技术应用场景。从自动化工作类型角度归类如下:

(1)应用部署

现今的应用功能越来越强大,同步应用部署过程的依赖和规则也日趋复杂,但对应用运维的要求没有随之降低,快速平滑的应用部署需求日趋强烈。Ansible内置网络、应用、系统、第三方云平台扩展等完善的功能模块,协助运维快速完成应用的安装、卸载、升级、启停、配置等部署类工作,即使对跨平台或知名的商业硬件也同样支持。

(2)配置管理

配置管理(Configuration Management)是通过技术或其他手段对软件产品及其开发过程和生命周期进行控制、规范的一系列措施。配置管理的目标是记录软件产品的演化过程,确保软件开发者在软件生命周期中各个阶段都能得到精确的产品配置。在日益复杂的IT环境和用户需求下,Ansible内置File、Template,结合Jinja、Lineinfile等内置模块,同时无缝结合Git、SVN、Jenkins等主流版本控制和CI持续集成工具,助力配置管理自动化。

(3)任务流编排

有效保证 Tasks任务流按既定规则和顺序完成事先制订的目标和计划,同时Roles编排方式又能在一定程度上从书写习惯和代码层编排上保证整体项目的可架构性和规范性,协助控制项目维护成本不致过高。

如上场景适用于网络管理员、系统运维、应用运维、桌面运维、DevOps、基础架构运维等多领域运维行业,同时开发人员也可以经过简单的了解即可初步上手。

PART 06

Ansible安全优化

自动化运维工具在给日常运维工作带来便利的同时,也给运维带来了安全隐患;Ansible是如此的简洁方便易操作,但给系统安全带来的隐患也是灾难性的。因此,如何管控风险,是使Ansible参与运维过程中同样需要重视的问题。

针对以上存在的隐患行为,我们总结了以下方法,来避免外部攻击利用或误操作等带来的危害:

  • 使用安全加密的通信方式

  • 禁止root用户远程登录并充分利用sudo

  • 遵守权限最小化原则

  • 及时更新操作系统和软件

  • 使用合理被配置过、有针对性的防火墙

自动化运维工具之Ansible安全运维

参考文献

《Ansible权威指南》

《自动化运维工具Ansible》

文章作者:闫千

封面设计:Lina

自动化运维工具之Ansible安全运维

原文始发于微信公众号(EBCloud):自动化运维工具之Ansible安全运维

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月13日17:05:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   自动化运维工具之Ansible安全运维http://cn-sec.com/archives/2842573.html

发表评论

匿名网友 填写信息