Ansible 2.0公布
本文来源于我在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公布的更多相关文章
- Qt on Android: Qt 5.3.0 公布,针对 Android 改进的说明
5月20日本,Qt 官方博客宣布 Qt 5.3.0 公布! 这个版本号聚焦在性能.稳定性和可用性的提升上,与 5.1 / 5.2 相比有非常大提升. 5.3.0 的主要变化: 稳定能.可用性大大提升 ...
- 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 ...
- ansible api2.0 多进程执行不同的playbook
自动化运维工具:ansible 多进程调用ansible api的应用场景: 应用系统检查 一个应用系统可能具有20—50台服务器的集群,初步的系统层面检查可以用一个统一的playbook来检查, ...
- 【版本号公布】Jeecg-P3 1.0 公布,J2EE微服务框架(插件开发)
JEECG-P3 1.0 公布了! JEECG-P3 1.0是一个J2EE微服务框架(插件开发). 特点:业务组件以JAR方式提供,插件模式.松耦合.可插拔.支持独立部署,也能够无缝集成Jeecg平台 ...
- 基于 Web 的 Go 语言 IDE - Wide 1.1.0 公布!
公布 1.1.0 这个版本号改进了非常多细节,已经全然能够用于正式项目的开发 同一时候我们上线了 Wide 在线服务 到眼下,我们提供了 Wide 和 Solo 两个在线服务,详情请看这里. Wide ...
- 号外:Spark 1.3.0公布了,快来一起飞!
Spark 1.3.0 Release Note Spark 1.3.0在上周五正式公布.真是千呼万唤始出来.本次公布最大的惊喜就是DataFrame.另外一个值得关注的是Spark SQL从Alph ...
- 在iis6.0公布asp.net mvc3网站
在iis6.0发布asp.net mvc3网站 这个问题一直困扰了我很长一段时间,终于在今天综合网上查的资料把它解决了. 在iis6.0发布asp.net mvc3网站 1 需要在服务器下安装.n ...
- SecureCRT 8.0公布
百度搜索到的7.3 注冊码生成器还是能够用于8.0的破解. 破解时,选择手动输入(Enter Licence Manually)产生的代码. 添加了一些特性,我最看重的是: 1. 能够在以下命令窗体 ...
- Java 开源博客——B3log Solo 0.6.7 正式版公布了!
Java 开源博客 -- B3log Solo 0.6.7 正式版公布了!欢迎大家下载. 另外,欢迎观摩 B3log 团队的新项目:Wide,也很欢迎大家參与进来 :-) 特性 基于标签的文章分类 P ...
随机推荐
- 从GridView中直接导出数据到Excel文件 处理导出乱码 类型“GridView”的控件“XXXX”必须放在具有 runat=server 的窗体标记内。”的异常
导出到Excel方法: <span style="color: rgb(0, 0, 255);">public</span> <span style= ...
- Jquery+ashx实现Ajax
一 Ajax的实现方式 1.使用一般的webform,在页面用jQuery ajax调用,再从取得的html数据中取得<body>内的内容,写入DOM 优点:不用改变现有的asp.net开 ...
- Java IO(二)--RandomAccessFile基本使用
RandomAccessFile: 翻译过来就是任意修改文件,可以从文件的任意位置进行修改,迅雷的下载就是通过多个线程同时读取下载文件.例如,把一个文件分为四 部分,四个线程同时下载,最后进行内容拼接 ...
- zabbix4.2学习笔记--TCP状态监控
Tcp的连接状态对于我们web服务器来说是至关重要的,尤其是并发量ESTAB:或者是syn_recv值,假如这个值比较大的话我们可以认为是不是受到了攻击(例如SYN攻击),或是是time_wait值比 ...
- pymouse pykeyboard
import time from pymouse import PyMouse from pykeyboard import PyKeyboard import re import win32clip ...
- Python学习笔记(2)——Python的函数、模块、包和库
Table of Contents 1. 函数. 2. 模块. 3. 包(package) 4. 库(library) 初识Python,对于没有接触过编程的我,恐怕只能听懂什么是函数,这里介绍一下几 ...
- HDU1401 Solitaire
题目描述:8×8的棋盘上有4个棋子,棋子的运动方法如下:1.如果其上/下/左/右一格没有棋子,则可以去;2.如果其上/下/左/右一格有棋子,而且沿原方向再跳一步没有,则可以去. 给出初始结束位置,问8 ...
- 32道常见的Java基础面试题
1. 什么是 Java 虚拟机(JVM)?为什么 Java 被称作是“平台无关的编程语言”? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被编译成能被 Java 虚拟 ...
- Java反射机制(Reflect)解析-----https://www.cnblogs.com/fzz9/p/7738381.html
Java反射机制(Reflect)解析-----https://www.cnblogs.com/fzz9/p/7738381.html
- Leetcode 179.最大数
最大数 给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数. 示例 1: 输入: [10,2] 输出: 210 示例 2: 输入: [3,30,34,5,9] 输出: 9534330 impo ...