【Ansible 学习之旅】Ansible 介绍和架构

目录

  • [Ansible 发展](#Ansible 发展)
  • [Ansible 介绍](#Ansible 介绍)
  • [Ansible 组成](#Ansible 组成)

Ansible 发展

2012-03-09,发布0.0.1版

2015-10-17,Red Hat宣布1.5亿美元收购

官网:https://www.ansible.com/

官方文档:https://docs.ansible.com/


Ansible 介绍

Ansible 可自动管理远程系统并控制其所需状态。

Ansible 使用简单、人类可读的脚本(称为 playbook)来自动执行任务。 你可以在playbook中声明本地或远程系统所需的状态。 Ansible 可确保系统保持该状态。

作为自动化技术,Ansible 的设计遵循以下原则:

  • 无代理架构:Ansible 不需要在被管理的服务器上安装任何额外的软件或代理。这种设计减少了部署和维护成本,因为我们不必担心在每个服务器上都要安装和更新代理程序。
  • 简单性:Ansible 使用直观的 YAML 格式来编写自动化脚本(playbook)。YAML 语言简单易读,使得剧本不仅易于编写,而且也容易理解,甚至可以当作文档来使用。并且Ansible 利用已存在的 SSH 凭据来访问远程机器,无需额外的认证机制
  • 可扩展性和灵活性: Ansible 的模块化设计支持广泛的系统、云平台和网络设备,这使得它可以轻松且快速地扩展到不同的环境中。这种设计允许用户根据需要选择合适的模块来完成特定任务,提高了整体的灵活性。
  • 幂等性和可预测性:当目标系统已经符合剧本中定义的状态时,即使你重复运行剧本,Ansible 也不会对系统做出任何改变。这种特性保证了运行剧本的结果是一致且可预测的,有助于保持系统的稳定性和可靠性。

Ansible 组成

如上图所示,大多数 Ansible 环境有三个主要组件:

  1. 控制节点 (Control Node)
    控制节点是安装了 Ansible 的系统。我们可以在控制节点上运行 Ansible 命令,例如 ansible 或 ansible-inventory。这是发起自动化操作的地方。
  2. 清单 (Inventory)
    清单是一份列出并逻辑组织被管理节点的列表。我们在控制节点上创建清单文件来告诉 Ansible 需要管理哪些主机以及它们是如何分组的。清单文件通常包含主机名、IP 地址、变量和其他相关信息。
  3. 被管理节点 (Managed Node)
    被管理节点是指那些由 Ansible 控制的远程系统或主机。这些节点通常是我们希望进行配置管理、部署应用程序或其他自动化任务的目标系统。

除此之外,还有一些通用的组成部分:

  1. Playbooks

    剧本使用 YAML 语言编写,易于阅读、编写、分享和理解。

    剧本包含 Play(Ansible 执行的基本单位),并且是 ansible-playbook 命令操作的文件。

    • Roles(角色)是一种可重用的 Ansible 内容集合(任务、处理器、变量、插件、模板和文件),用于在 Play 中使用。要使用任何角色资源,必须将该角色导入到 Play 中
    • Tasks (任务)定义了要应用于被管理主机的"动作"
    • Handlers(处理器)任务的一种特殊形式,只有在前一个任务发出通知,导致状态 "已更改 "时才会执行。
  2. 模块 (Modules)

    模块是 Ansible 复制到并执行在每个被管理节点上的代码或二进制文件,以实现任务中定义的动作。

    每个模块都有特定的用途,例如管理特定类型数据库中的用户或管理特定网络设备上的 VLAN 接口。

    Ansible 模块按集合进行分组。

  3. 插件 (Plugins)

    插件是扩展 Ansible 核心功能的代码片段,例如连接插件用于控制如何连接到被管理节点,过滤插件用于操纵数据,回调插件用于控制控制台显示的内容。

  4. 集合 (Collections)

    集合是一种用于分发 Ansible 内容的格式,可以包含剧本、角色、模块和插件


"运维的未来是,让研发人员能够借助工具、自动化和流程,并且让他们能够在运维干预极少的情况下部署和运营服务,从而实现自助服务。每个角色都应该努力使工作实现自动化。"------《运维的未来》

相关推荐
@小博的博客30 分钟前
C++初阶学习第十弹——深入讲解vector的迭代器失效
数据结构·c++·学习
南宫生1 小时前
贪心算法习题其四【力扣】【算法学习day.21】
学习·算法·leetcode·链表·贪心算法
懒惰才能让科技进步2 小时前
从零学习大模型(十二)-----基于梯度的重要性剪枝(Gradient-based Pruning)
人工智能·深度学习·学习·算法·chatgpt·transformer·剪枝
love_and_hope2 小时前
Pytorch学习--神经网络--搭建小实战(手撕CIFAR 10 model structure)和 Sequential 的使用
人工智能·pytorch·python·深度学习·学习
Chef_Chen2 小时前
从0开始学习机器学习--Day14--如何优化神经网络的代价函数
神经网络·学习·机器学习
芊寻(嵌入式)2 小时前
C转C++学习笔记--基础知识摘录总结
开发语言·c++·笔记·学习
hong1616883 小时前
跨模态对齐与跨领域学习
学习
阿伟来咯~4 小时前
记录学习react的一些内容
javascript·学习·react.js
Suckerbin4 小时前
Hms?: 1渗透测试
学习·安全·网络安全
水豚AI课代表4 小时前
分析报告、调研报告、工作方案等的提示词
大数据·人工智能·学习·chatgpt·aigc