写点什么

Ansible 2.0 发布

  • 2016-02-01
  • 本文字数:2101 字

    阅读完需:约 7 分钟

经过了一年的开发工作后, Ansible 2.0 终于发布,现在已经是 GA 版了。这是目前为止最为闪耀的一个 Ansible 版本,它折射出了社区所贡献的巨大力量,这一切也令所有人感动万分。大约有 300 个用户对这个版本贡献了代码;自上一个主要的 Ansible 版本发布后,约有 500 个用户贡献了代码。

我们为何要开始 V2 的开发?

重构软件的过程中会遇到很多陷阱,那么我们为何要开启这个项目呢?在我们开始进行v2 的开发时,Ansible 距离最初的发布已经有3 年多的时间了,并且有超过1,000 个贡献者为其贡献代码。这种持续的增长也导致代码中出现了技术债务,这些技术债务在我们不断添加新特性的时候开始显现出来。

最终,我们决定退回一步,重新编写现有代码基中那些容易产生问题的部分。我们还重写了负责解析Playbook 与其他YAML 文件的代码,从而使得添加语言特性能够变得更加轻松,同时提供关于解析问题的更多错误信息。最后,我们做了划分并重新组织代码,让查找变得更加容易,并且删除了一些“辅助”代码;这些“辅助”代码已经变成了零散物品的收集器,将那些不知道该放在什么地方的代码都容纳了进来,实际上这是不对的。

在这整个过程中,我们的一个基本目标是保持对既有Playbook 的向后兼容性。对于解析与运行Playbook 来说,我们相信自己已经达成所愿。不过,对于某些特性来说还是存在一些不兼容的情况,用户需要清楚这一点,后面也会进行介绍。

新特性有哪些?

Ansible 2.0 并不仅仅只是对既有系统的重构。更清晰的架构可以让我们添加一直想要添加的新特性;同时由于重构的原因,我们还添加了之前一直无法添加的新特性。

任务块

块(Blocks)引入了对 Playbook 异常处理的概念,它根据 Python 的 try/except/finally 结构进行建模(同时也是其他很多语言的使用方式)。这简化了 Playbook 与任务的开发工作,其中任务失败可以被捕获到,并且在单个 Playbook 中进行处理,这一切要比之前简单太多了。用户还可以通过块使用标签与条件(以及其他任务属性)对相关任务进行分组。

Playbook 解析、错误报告改进与动态包含

如前所述,我们几乎完全重写了负责解析与解释 Playbook 的代码。新的代码提供了更加清晰的错误识别能力,同时还给出了超越简单的 YAML 语法错误的修复建议。除此之外,包含任务现在可以动态执行了。在 Ansible 1.9.x 及之前的版本中,包含的行为更像是预处理语句,任务会内联展开。这会导致用户在循环中使用包含时出现问题(Ansible 1.6 删除了该特性)。Ansible 2.0 则将该特性又加回来了,甚至比之前更加灵活。

新的执行策略插件

该特性是由于重构才添加进来的。执行策略可以让用户修改 Ansible 在目标主机上运行任务的方式。经典的 Ansible 任务是个单任务,在转向下一个任务前需要在所有主机上运行(现在我们称之为“线性”策略)。Ansible 2.0 也包含了“自由”策略,可以让每个主机尽快处理任务列表(依然是按照顺序的),同时又不必等待其他主机的处理。由于这些都是以插件的形式出现的(就像 Ansible 中的其他插件),因此用户可以自由选择这些策略。

新的模块

Ansible 2.0 包含了 200 多个新模块,从而延续了我们一直以来所秉承的“电池内置”策略。一些主要模块有:

  • 用于管理 OpenStack(主流的开源云计算框架)的全新模块集,这是与 OpenStack 社区合作开发的
  • 30 个全新模块,用于改进与扩展对 Amazon Web Services 的支持
  • 对于 VMware 环境配置与管理的进一步支持
  • 对于 Microsoft Window 环境的进一步支持
  • 对于 Docker 模块的实质性改进,以及新的 Docker 连接插件

Ansible 2.0 的已知问题

如前所述,Ansible 对于既有 Playbook 存在一些不兼容的情况,同时还有一些小问题,我们会在未来修复这些问题。

Plugin API 变化

在内部,我们所做的主要的代码清理工作之一就是让每个插件类(action、callback、lookup 等)都继承自一个共同的父类。这样就可以删除大量的重复代码。不过,这也意味着插件 API 发生了巨大的变化。已经编写过一些插件的用户可能需要更新其插件才能使用 Ansible 2.0。

动态包含问题

由于现在的包含任务是在运行期计算的,因此 Ansible 无法提前预知文件中应该包含哪些任务。这会在一些情况中出现问题(未来的版本中将会修复这些问题):

直到包含处理时才会看到任务标记,因此标记现在应该在包含任务上指定而非包含中的具体任务,否则将看不到他们。与之类似,–list-tags 选项无法展现只位于包含文件中的标记。只有当任务尝试通知时才会看到包含中的处理器,因此处理器这时应该避免使用包含。

丢失的标记

如果通过–tags 或是–skip-tags 指定了不存在的标记,那么 Ansible 2.0 现在是不会报错的。这也与之前提到的动态包含问题相关,一旦上面提到的问题解决后我们就将解决这个问题。

反斜杠转义

在 Ansible 1.9.x 及之前的版本中,某些情况下,反斜杠(“\”)需要转义两次,这会导致 4 个反斜杠序列(“\\\\”)。对于上面所提及的 Playbook 的改进意味着只需对反斜杠转义一次即可。还有其他一些细小的特性变化,我们会在迁移指南中以文档的形式记录下来。该指南还包含了对于诸如反斜杠转义等问题的解决办法。

Ansible 2.0 目前可以通过 GitHub PyPi 以及大多数主流 Linux 发布版本的包管理器获取。

2016-02-01 08:392811
用户头像

发布了 88 篇内容, 共 273.0 次阅读, 收获喜欢 9 次。

关注

评论 2 条评论

发布
暂无评论
发现更多内容

从海量噪音到精准洞察:AI驱动的境外社交媒体监控网站解决方案

沃观Wovision

舆情监测 沃观Wovision 海外舆情监测 社交媒体监控 海外社交媒体监控

和鲸科技入选《大模型一体机产业图谱》,以一体机智驱科研、重塑教学

ModelWhale

人工智能 大模型 高等教育 科研智能

区块链 Web3 项目的开发

北京木奇移动技术有限公司

区块链开发 软件外包公司 web3开发

比亚迪出海:从"建"到"简"的车联网修行

科技汇

Decart 发布口型实时同步 API;云蝠语音智能体发布网页语音客服模块丨日报

声网

AI 应用软件的外包开发

北京木奇移动技术有限公司

AI智能体 软件外包公司 AI应用开发

哈尔滨等保测评安全产品的选型与合规要点

等保测评

漆包线生产数字化管理:ERP、MES系统详解及选型推荐

万界星空科技

mes 万界星空科技mes 漆包线mes 制造业工厂 漆包线工厂

AI智能辅助系统:用技术重构效率,解锁全场景智能新体验

上海拔俗

AI 编程热潮下的万字思考 —— 规避风险,善用其利

Baihai IDP

AI 软件工程 AI编程 氛围编程

火山引擎推出数据智能体Data Agent评测体系!

字节跳动数据平台

从沉默到爆发:如何通过海外媒体监控工具发现被忽略的市场机会

沃观Wovision

舆情监测 沃观Wovision 海外舆情监测 社交媒体监控 海外社交媒体监控

产投公司档案AI智能管理系统:用技术让投资档案从“沉睡”到“焕活”

上海拔俗

音乐 NFT 平台的开发

北京木奇移动技术有限公司

区块链开发 软件外包公司 音乐NFT

MyEMS 的 “智慧大脑”:能耗建模、异常预警与优化策略的技术逻辑

开源能源管理系统

开源 能源管理系统

创新引航,华为云天筹AI求解器斩获全球权威榜单六项第一

新消费日报

Spring Boot快速集成MiniMax、CosyVoice实现文本转语音

程序猿DD

“团队敏捷教练进阶课程”11月24-25日 · 在线A-CSM认证(周中班)

ShineScrum

项目经理 Scrum Master Scrum event CSM认证 A-CSM

黑龙江等保测评公司选择:从风险防控到长期适配的进阶策略

等保测评

MyEMS 核心功能拆解:数据采集、能耗分析、智能调控如何落地?

开源能源管理系统

开源 能源管理系统

使用 Docker Compose 实现 TiDB 平凯数据库敏捷模式的两节点双向复制

TiDB 社区干货传送门

平凯数据库敏捷模式

Abaqus软件支持多少人同时使用?达索官方授权代理商推荐

思茂信息

abaqus

大数据-134 ClickHouse 单机+集群节点落地手册 | 安装配置 | systemd 管理 / config.d

武子康

大数据 flink 分布式 Clickhouse clickhouse入仓

软件信息化建设方案编制模版(WORD)

金陵老街

项目建设方案 软件模板

竞品都在用的秘密武器:境外社交媒体监控网站实战全解析

沃观Wovision

沃观Wovision 舆情监测系统 海外舆情监测 社交媒体监控 海外社交媒体监控

“数字创新产品课程” 11月11-12日 · CSPO认证在线课程(周中班)

ShineScrum

CSPO认证 CSPO #产品经理

构建新型电力系统:以云渲染技术破解智慧电网数字孪生应用难题

点量实时云渲染

数字孪生 智慧工厂 协同办公 云渲染 实时渲染云流化

轻量化 vs 定制化:不同规模企业如何选择 MyEMS 部署模式?

开源能源管理系统

开源 能源管理系统

【厦门大学主办】第五届人工智能、机器人和通信国际会议(ICAIRC 2025)

搞科研的小刘

人工智能 机器人 国际学术会议

下一代 AI Agent 的基石:Real-Time AI 新基建丨Convo AI&RTE2025

声网

Up!使用 Navicat Premium 连接平凯数据库敏捷模式

TiDB 社区干货传送门

数据库连接 平凯数据库敏捷模式

Ansible 2.0发布_语言 & 开发_张龙_InfoQ精选文章