本文来源于我在InfoQ中文站翻译的文章,原文地址是:http://www.infoq.com/cn/news/2016/02/ansible-2-released

经过了一年的开发工作后,Ansible 2.0最终公布。如今已经是GA版了。这是眼下为止最为闪耀的一个Ansible版本号,它折射出了社区所贡献的巨大力量。这一切也令全部人感动万分。大约有300个用户对这个版本号贡献了代码;自上一个基本的Ansible版本号公布后,约有500个用户贡献了代码。

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

重构软件的过程中会遇到非常多陷阱,那么我们为何要开启这个项目呢?在我们開始进行v2的开发时。Ansible距离最初的公布已经有3年多的时间了,而且有超过1,000个贡献者为其贡献代码。

这样的持续的增长也导致代码中出现了技术债务,这些技术债务在我们不断加入新特性的时候開始显现出来。

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

在这整个过程中,我们的一个基本目标是保持对既有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眼下能够通过GitHubPyPi以及大多数主流Linux公布版本号的包管理器获取。

Ansible 2.0公布的更多相关文章

  1. Qt on Android: Qt 5.3.0 公布,针对 Android 改进的说明

    5月20日本,Qt 官方博客宣布 Qt 5.3.0 公布! 这个版本号聚焦在性能.稳定性和可用性的提升上,与 5.1 / 5.2 相比有非常大提升. 5.3.0 的主要变化: 稳定能.可用性大大提升 ...

  2. GCC 4.9.0 公布,提升 C++11 和 C++14 特性

    from :http://www.oschina.net/news/51084/gcc-4-9-0 GCC 4.9.0 公布,此版本号是个主要版本号更新,包含了 GCC 4.8.x 系列和之前的 GC ...

  3. ansible api2.0 多进程执行不同的playbook

    自动化运维工具:ansible 多进程调用ansible api的应用场景:   应用系统检查 一个应用系统可能具有20—50台服务器的集群,初步的系统层面检查可以用一个统一的playbook来检查, ...

  4. 【版本号公布】Jeecg-P3 1.0 公布,J2EE微服务框架(插件开发)

    JEECG-P3 1.0 公布了! JEECG-P3 1.0是一个J2EE微服务框架(插件开发). 特点:业务组件以JAR方式提供,插件模式.松耦合.可插拔.支持独立部署,也能够无缝集成Jeecg平台 ...

  5. 基于 Web 的 Go 语言 IDE - Wide 1.1.0 公布!

    公布 1.1.0 这个版本号改进了非常多细节,已经全然能够用于正式项目的开发 同一时候我们上线了 Wide 在线服务 到眼下,我们提供了 Wide 和 Solo 两个在线服务,详情请看这里. Wide ...

  6. 号外:Spark 1.3.0公布了,快来一起飞!

    Spark 1.3.0 Release Note Spark 1.3.0在上周五正式公布.真是千呼万唤始出来.本次公布最大的惊喜就是DataFrame.另外一个值得关注的是Spark SQL从Alph ...

  7. 在iis6.0公布asp.net mvc3网站

    在iis6.0发布asp.net mvc3网站 这个问题一直困扰了我很长一段时间,终于在今天综合网上查的资料把它解决了. 在iis6.0发布asp.net mvc3网站 1   需要在服务器下安装.n ...

  8. SecureCRT 8.0公布

    百度搜索到的7.3 注冊码生成器还是能够用于8.0的破解. 破解时,选择手动输入(Enter Licence Manually)产生的代码. 添加了一些特性,我最看重的是: 1.  能够在以下命令窗体 ...

  9. Java 开源博客——B3log Solo 0.6.7 正式版公布了!

    Java 开源博客 -- B3log Solo 0.6.7 正式版公布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 P ...

随机推荐

  1. 让TortoiseGit记住帐号密码方法

    我的电脑环境是: Windows7 64x   系统用户名是:steden 所以,我的路径是:C:\Users\steden\ 具体要根据你的系统环境及当前用户名来决定. 在这里,有个文件:.gitc ...

  2. OpenGL Column-Major Matrix 使用注意事项

    这column major的矩阵是彻底把我搞晕了,以后右乘规则下的矩阵应该这么用 假设我想创建一个2x2的矩阵,数学上我这么写: 1 2 3 4 用代码创建的话这么写 // 按照 row major ...

  3. POJ_1125_(dijkstra)

    Stockbroker Grapevine Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 35553   Accepted: ...

  4. swift不同地方 命名空间module iOS

    Objective-C没有命名空间,为了避免冲突,Objective-C的类型一般都会加上两到三个字母的前缀,比如Apple保留的NS和UI前缀,各个系统框架的前缀,各个系统框架的前缀SK(Store ...

  5. 安卓 Android 简单数据库(增删改查)

    <Button android:id="@+id/delete_btn" android:layout_width="wrap_content" andr ...

  6. vue-cli中使用rem,vue自适应

    2018年04月27日 09:25:34 董小礼 阅读数:4196    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_39588818/ar ...

  7. CPU怎么计算1+1----CPU计算的电路基础

    从<十进制和二进制的运算---我所理解到的人类的运算的本质>这里我们知道,人类进行运算的本质是查表,并且我们存储的表是有限的.那么计算机是怎进行四则运算的呢,也是查表吗,肯定不是,今天,我 ...

  8. Windows:32位程序运行在64位系统上注册表会重定向

    参考资料 微软注册表英文文档 StackOverflow社区回答 1.注册表位置 64bit系统(Windows Server 2008 R2只有64bit系统)的注册表分32 位注册表项和64位注册 ...

  9. 原生 js 上传图片

    js <!doctype html> <html> <head> <meta charset="utf-8"> <title& ...

  10. pycharm激活2018

    因为我的是Windows,所以这篇文章只针对Windows系统. 1.将“0.0.0.0 account.jetbrains.com”中的内容添加到hosts文件中,hosts路径为:C:\Windo ...