Ansible(1)—— Ansible 概述

前言

其实写 Ansible 系列的想法已经存在很久了,今天我终于把勾画的蓝图给实现啦!

本篇文章是我的第三个系列------ Ansible 系列的第一篇,主要讲述了 Ansible 的基本概念。和前两个系列一样,有关 Ansible 的其他内容也会在后续慢慢和大家见面。


目录

[一、自动化与 Linux 管理:](#一、自动化与 Linux 管理:)

1、基础架构即代码:

2、减少人为错误:

[二、什么是 Ansible :](#二、什么是 Ansible :)

[1、Ansible Is Simple :](#1、Ansible Is Simple :)

[2、Ansible Is Powerful:](#2、Ansible Is Powerful:)

[3、Ansible Is Agentless:](#3、Ansible Is Agentless:)

4、跨平台⽀持:

5、精准的描述应⽤:

6、轻松管理版本控制:

7、⽀持动态清单:

8、可与其他系统轻松集成:

[三、Ansible 是 DevOps 语言:](#三、Ansible 是 DevOps 语言:)

[四、Ansible 架构:](#四、Ansible 架构:)

1、控制节点和受管主机:

[2、Play :](#2、Play :)

3、任务与模块:

4、幂等性:

5、插件:

[五、Ansible 支持:](#五、Ansible 支持:)

[六、Ansible 设计要求:](#六、Ansible 设计要求:)

[1、复杂性会破坏效率( Complexity Kills Productivity ) :](#1、复杂性会破坏效率( Complexity Kills Productivity ) :)

[2、专为易读性优化( Optimize For Readability ) :](#2、专为易读性优化( Optimize For Readability ) :)

[3、声明式思维( Think Declaratively ) :](#3、声明式思维( Think Declaratively ) :)

[七、Ansible 的常见适用场景:](#七、Ansible 的常见适用场景:)

[1、配置管理 (Configuration Management) :](#1、配置管理 (Configuration Management) :)

[2、应用部署 (Application Deployment) :](#2、应用部署 (Application Deployment) :)

[3、调配 (Provisioning) :](#3、调配 (Provisioning) :)

[4、持续交付 (Continuous Delivery) :](#4、持续交付 (Continuous Delivery) :)

[5、安全和合规性 (Security and Conpliance) :](#5、安全和合规性 (Security and Conpliance) :)

[6、编排 (Orchestration) :](#6、编排 (Orchestration) :)


一、自动化与 Linux 管理:

大多数系统管理都依赖于通过图形或命令行界面执行的手动任务实现,但这样的做法容易出错,且对步骤执行是否正确以及是否产生预期结果的验证通常很有限。另外,以手动方式管理每个服务器,对于需要一致性的许多服务器而言,很容易会出现微小(或重大)的差异,给 IT 环境带来不一致性。

自动化则可以帮助避免手动管理系统和基础架构造成的问题 。作为系统管理员,可使用自动化确保快速、正确地部署和配置所有系统 。对组织而言,自动化也可以帮助加快推出新应用或服务更新。

1、基础架构即代码:

良好的自动化系统允许实施基础架构即代码( Infrastructure as Code )的方法,基础架构即代码可让自动化语言来定义和描述所需的 IT 基础架构状态。理想情况下,这种自动化语言也应方便人类阅读,并作出调整。如果自动化语言表现为简单的文本文件,则可使用版本控制系统轻松管理,并获得持续的更改记录。

遵循 DevOps 中的最佳实践,开发人员可以在自动化语言中定义所需的配置,运维人员可以更轻松地查看更改以提供反馈,并利用自动化,重复地确保系统处于开发人员期望的状态。

2、减少人为错误:

通过任务自动化和基础架构即代码的方式可以提高服务器获得一致配置的几率 。这意味着需要习惯于通过更新自动化代码进行更改,而不是手动将其应用到服务器,管理员可借助代码审查、专家的同行评审,以及自动化内容中添加文档来降低操作⻛险 ,还可以强制通过自动化执行 IT 基础架构更改,以减少人为错误。

二、什么是 Ansible :

Ansible 是一个开源的自动化平台 ,使用 simple automation language 编写的 Playbook 完美地描述了 IT 应用架构。同时带有自动化引擎(automation engine )运行 Playbook 。

Ansible 还可以执行功能强大的自动化任务,适用于不同的工作流和环境,即使新手也能快速掌握。

1、Ansible Is Simple :

playbook 以 YAML 文本文件格式编写,提供人类可读的自动化,更容易阅读、理解和更改,编写它们不需要特殊的编码技巧。playbook 按顺序执行任务。

2、Ansible Is Powerful:

管理员可用 Ansible 部署应用程序进行配置管理、工作流自动化和网络自动化。Ansible 可用于编排整个应用程序生命周期。

3、Ansible Is Agentless:

Ansible 使用 OpenSSH 或 WinRM 连接到它管理的主机并运行任务,向这些主机推送称为 Ansible modules 小程序,这意味着不需要在受管主机上安装 Ansible 专用代理 ,也不需要允许控制节点和受管主机之间进行其他通信。当 Ansible 完成任务时,被推送的模块将被删除。由于没有代理,Ansible比其他替代方案更加高效、安全。

4、跨平台**⽀**持:

Ansible 提供 Linux 、Windows 、UNIX 、网络设备的无代理支持,因此适用于物理、虚拟、云和容器环境。

5、精准的描述应⽤:

可以通过AnsiblePlaybook进行每一种更改,并描述和记录 IT 环境的各个方面。

6、轻松管理版本控制:

Ansible Playbook 和项目一切均以文档记录,可以视为源代码,放入代码管理系统中进行管理。

7、⽀持动态清单:

Ansible 管理的主机列表可以从外部资源动态更新,随时获取所有受管服务器的当前正确列表,不受基础架构或位置 的影响。

8、可与其他系统轻松集成:

HP SA 、Puppet 、Jenkins 、RedHat Satellite 等已有系统在编排时均可集成到当前的 Ansible工作流中。

三、Ansible 是 DevOps 语言:

通信是 DevOps 的关键。Ansible 是第一款可以跨 IT 读写的自动化语言 ,也是唯一能够对应用程序生命周期进行完整管理的自动化引擎。

四、Ansible 架构:

1、控制节点和受管主机:

Ansible 架构中有两种计算机类型:控制节点 和受管主机 ( control node and managed hosts ),Ansible 软件安装在控制节点上 ,所有组件也在控制节点上被维护,受管主机罗列在主机清单( inventory )文本文件中,位于控制节点上,含有受管主机名称或 IP 列表,便于集中管理。

2、Play :

Ansible 用户无需编写复杂的脚本,而只要创建高级别 play即可确保主机或主机组处于特定状态。Play 按 该 play 指定的顺序对主机执行一系列任务 ,采用 YAML 格式。包含一个或多个 play 的文件称为playbook 。

3、任务与模块:

每个任务(task)运行一个模块(module),即使用 Python、PowerShell 或某种其他语言编写的一小段代码。Ansible 随附了数百个实用模块,它们能够执行许多不同的自动化任务,可以作用于系统文件、安装软件或作用于 API 调用。

在 task 中使用时,模块通常确保计算机的某一特定方面处于特定的状态,如果系统不处于指定的状态,task 应将其置于相应状态。如果 task 失败,Ansible 会默认在出错主机上中止 playbook 的其余部分,其他主机不受影响。

4、幂等性:

task 、play 和 playbook 均具有幂等性。这意味着,可以在相同主机上多次安全地运行一个 playbook。当系统处于正确状态时,playbook在运行过程中不会进行任何更改。

5、插件:

Ansible 也使用插件( plugin )。插件是可以添加到 Ansible 中的代码,以对它进行扩展并使它适合新的用途和平台。

五、Ansible 支持:

红帽 Ansible 自动化平台是一个受到全面支持的 Ansible 版本,支持企业大规模实施自动化管理,平台具有以下优势:

(1)对核心 Ansible 工具集的官方支持;

(2)红帽认证 Ansible Content Collection 通过受支持的代码更快实施 Ansible 自动化;

(3)本地工具可帮助集中交付自动化内容、管理自动化任务,并扩大自动化管理范围;

(4)云服务可帮助寻找经过认证的 Ansible 内容,促进团队协作,并提供运维分析,以实现混合环境自动化。

六、Ansible 设计要求:

在设计 Ansible 期间,会设定以下目标:

1、复杂性会破坏效率( Complexity Kills Productivity ) :

复杂性会破坏效率即越简单越好。Ansible 的设计宗旨是使其工具易于使用,自动化脚本易于编写和读取。

2、专为易读性优化( Optimize For Readability ) :

Ansible 自动化语言是围绕简单的、声明性的、基于文本的文件构建的,文件便于人类阅读。正确编写的 Ansible playbook 可清楚地记录工作流自动化。

3、声明式思维( Think Declaratively ) :

Ansible 是一种要求状态引擎,通过根据用户希望系统处于的状态来进行 IT 部署。Ansible 的目标是将系统置于所需的状态,只做必要的更改。因此试图像理解脚本语言一样对待 Ansible 并不是正确的方法。

七、Ansible 的常见适用场景:

与其他工具不同,Ansible 在一个易用平台中,将编排与配置管理、调配以及应用部署等相结合。

1、配置管理 (Configuration Management) :

集中化配置文件管理和部署是 Ansible 的常见用途,很多超级用户就是通过这种方式了解 Ansible 自动化平台。

2、应用部署 (Application Deployment) :

通过 Ansible 定义应用 以及使用自动化控制器管理部署,开发团队可以更加有效地管理从开发到生产的整个应用生命周期。

3、调配 (Provisioning) :

应用需要安装或部署在系统上,而 Ansible 和自动化控制器可以帮助简化调配系统的流程。

4、持续交付 (Continuous Delivery) :

创建 CI/CD 管道需要多个团队的协调和参与 ,如果没有组织内人人可用的简单自动化平台,就无法实现此目标。而 Ansible Playbook 可用使应用在整个生命周期内得到正确的部署与管理。

5、安全和合规性 (Security and Conpliance) :

安全是所有部署中不可或缺的重要组成部分,在 Ansible Playbook 中定义安全策略时,可以将扫描和修复潜在安全问题的程序集成到 其他的自动化流程中。

6、编排 (Orchestration) :

除配置本身外,还需定义多个配置间如何交互,确保以整体的方式管理各类分散资源,才能定义用户环境。

相关推荐
不悔哥5 小时前
Linux系统编程多线程程序如何安全退出
linux
Fcy6485 小时前
Linux下 数据链路层详解(从以太网到ARP协议)
linux·mac·以太网·数据链路层·arp
YH行业报告分析6 小时前
2026电缆铺设设备市场:自动化敷设与电网升级驱动增长
运维·自动化
ajassi20007 小时前
AI语音智能体开发日记(十八)智能体服务器xiaozhi-esp32-server源码部署指南
运维·服务器·人工智能·ai·ai编程
‎ദ്ദിᵔ.˛.ᵔ₎7 小时前
linux 进程信号(下)
linux·运维·服务器
skywalk81637 小时前
在FreeBSD系统的linux仿真环境下安装和使用kiro 这个亚马逊的AI agent
linux·人工智能·freebsd·kiro
Mikko77 小时前
Linux 磁盘满了但 du 找不到?LVM 扩容 df 不变?fstab 写错开不了机?三台真机实测磁盘排查
linux·运维·centos
蓝胖的四次元口袋8 小时前
Jenkins知识梳理(2)
运维·jenkins
yumgpkpm8 小时前
Acceldata ODP 3.3.6.4 vs CDP Private Cloud Base 7.3.2 对比
大数据·运维·服务器·hadoop·华为·zookeeper·hbase
Madison-No78 小时前
多语言聊天大模型--测试报告
linux·git·python·selenium·jmeter·自动化·postman