设为首页 收藏本站
查看: 1131|回复: 0

[经验分享] Ansible 2.0公布

[复制链接]

尚未签到

发表于 2018-1-2 17:05:41 | 显示全部楼层 |阅读模式
  本文来源于我在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眼下能够通过GitHub、PyPi以及大多数主流Linux公布版本号的包管理器获取。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-430876-1-1.html 上篇帖子: ansible 常见指令表 下篇帖子: Ansible 系列之 Patterns
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表