免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 19756 | 回复: 5

【话题讨论+送书福利】如何啃透Python自动运维工具Ansibel开源项目的源码? [复制链接]

论坛徽章:
168
申猴
日期:2013-10-09 10:10:16天秤座
日期:2013-10-10 15:28:08天蝎座
日期:2014-07-17 14:02:54丑牛
日期:2014-07-17 14:03:04处女座
日期:2014-07-17 14:03:12双子座
日期:2014-07-17 14:03:21天秤座
日期:2014-07-17 14:03:29酉鸡
日期:2014-07-17 14:03:39金牛座
日期:2014-07-21 10:37:54水瓶座
日期:2014-07-22 16:56:09巳蛇
日期:2014-07-23 11:48:03天蝎座
日期:2014-07-31 10:16:36
发表于 2021-11-18 15:02 |显示全部楼层


话题背景:

      Ansible是基于Python开发的一款优秀的自动化运维工具,它的简单易用性使其深受运维人员的喜爱。学习开源工具源码是掌握该工具的最有效途径,但是面对海量的源码内容,往往会让人无从下手。对对于大部分人而言,学习开源项目源码的一个好方法是从最初的源码版本开始,依次深入学习和跟踪源码的演进过程,这能帮助他们最大程度理解相应的核心源码。此外,从GitHub上的Bug记录也可以追踪源码的演进过程,这也是深入学习源码的一个方法。为了帮助读者掌握Ansible并展现Python项目源码案例,机械工业出版社近期出版了《吃透Ansible:核心源码剖析与项目实战》一书。该书以Ansible为例,给大家展现了一个探索开源项目内部源码的完整过程。本次活动便是以此为契机,和各位运维工程师、Python爱好者就学习开源项目源码的相关话题展开讨论,欢迎大家踊跃发言。

话题讨论:

(1)谈谈你所了解的Ansible源码极其内部模块的运行机制,以及使用Ansible时的依赖和限制。
(2)如何高效地学习一个开源项目的源码?
(3)相比C++和Go语言,阅读基于Python的开源项目源码有何优势?
(4)你有哪些给相关项目的开源社区提交Bug记录甚至贡献过代码的经历?
(5)如果你想成为社区的代码贡献者,你觉得需要从哪些方面着手?


本期奖品:

吃透Ansible:核心源码剖析与项目实战立体封.jpg


最佳积极参与经验分享奖5名,各奖励价值149元的《吃透Ansible:核心源码剖析与项目实战》图书1本。

参与方式:

直接在该主题下回帖即可。

图书购买:

京东:https://item.jd.com/12898815.html
当当:http://product.dangdang.com/29276646.html


图书试读:内容简介+前言+目录    1.1-1.4节(试读) 前言 目录.pdf (277.61 KB, 下载次数: 3)

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
发表于 2021-11-18 16:09 |显示全部楼层
沙发先坐上。

论坛徽章:
0
发表于 2021-11-20 15:47 |显示全部楼层
me=《kasini3000》作者,前来祝贺。

论坛徽章:
8
2017金鸡报晓
日期:2017-01-10 15:13:2915-16赛季CBA联赛之天津
日期:2019-06-20 14:25:4015-16赛季CBA联赛之天津
日期:2019-08-20 23:06:5319周年集字徽章-庆
日期:2019-08-27 13:24:4219周年集字徽章-19
日期:2019-09-06 18:55:5019周年集字徽章-年
日期:2019-09-06 18:55:5019周年集字徽章-周
日期:2019-09-20 17:18:2220周年集字徽章-CU
日期:2020-11-11 13:06:03
发表于 2021-11-21 17:46 |显示全部楼层
(1)谈谈你所了解的Ansible源码及其内部模块的运行机制,以及使用Ansible时的依赖和限制。
ansible运行是不需要客户端的,其依赖底层通信系统软件,linux系统下基于openssh通信,windows系统下基于powershell,管理端必须是Linux系统,使用者认证通过后在管理节点通过ansible工具调用各应用模块将指令推送至管理端执行,并在执行完毕后自动删除产生的临时文件。

(2)如何高效地学习一个开源项目的源码?
1.首先,查找和阅读该项目的博客和资料,通过google你能找到某个项目大体介绍的博客,快速阅读一下就能对项目的目的、功能、基本使用有个大概的了解。从全局的视角去了解整个项目,这有助于形成整体的知识结构,上来就从细微处硬啃,效率极低。
2.其次,不要只盯着数据结构和算法,事实上这两点在学习开源项目的时候并没有那么重要。阅读项目的文档,重点关注类似Getting started、Example之类的文档,从中学习如何下载、安装、甚至基本使用该项目所需要的知识。
3.采取“自顶向下”的学习方法,源码不是第一步,而是最后一步。不要一上来就去看源码,而是要基本掌握了功能、原理、关键设计之后再去看源码:看源码的主要目的是为了学习其代码的写作方式,以及关键技术的实现。
4.重点切入,有了你对项目的熟练使用,有了对项目设计思想的了解,有了对项目整体的认知,那么我们就可以开始带着问题细啃源码,去了解这个项目的重点的实现原理。
5.模仿实现:当掌握了项目的宏观结构 + 重点特性的实现原理后。就可以开始自己动手,尝试实现一个类似的简单小项目。这个项目不需要完整的重复造轮子,不需要完美的关注细节,只需要把我们所学到的结构应用其中,把关键特性模仿实现即可。这个过程有助于我们查漏补缺,在自己动手踩坑的过程当中,把学到知识融会贯通。


(3)相比C++和Go语言,阅读基于Python的开源项目源码有何优势?
1.简单:Python 是一种代表简单主义思想的语言。阅读一个良好的 Python 程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python 的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
2.易学:就如同你即将看到的一样,Python 极其容易上手。前面已经提到了,Python 有极其简单的语法。
3.可移植性:由于它的开源本质,Python 已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有 Python 程序无需修改就可以在下述任何平台上面运行。
4.解释性:这一点需要一些解释。一个用编译性语言比如 C 或 C++ 写的程序可以从源文件(即 C 或 C++ 语言)转换到一个你的计算机使用的语言(二进制代码,即 0 和 1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候,连接 / 转载器软件把你的程序从硬盘复制到内存中并且运行。而 Python 语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,Python 解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。事实上,由于你不再需要担心如何编译程序,如何确保连接转载正确的库等等,所有这一切使得使用 Python 更加简单。由于你只需要把你的 Python 程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的 Python 程序更加易于移植。


(4)你有哪些给相关项目的开源社区提交Bug记录甚至贡献过代码的经历?
暂时没有

(5)如果你想成为社区的代码贡献者,你觉得需要从哪些方面着手?
为开源项目做贡献并不一定意味着你必须为代码库做贡献。 你可以通过多种不同方式为开源做贡献,例如:
·你可以在项目文档中添加描述以详细说明某一点
·你可以针对特定的项目提供指南
·你可以添加示例来展示代码的工作原理
·你可以为项目编写教程
·你可以为项目添加翻译
·你可以回答有关项目的问题
·你可以对其他贡献者提供建议
·你可以修复错误并正确地安排项目的工作文件夹
所有包括但不限于这些方式都可以为开源项目做贡献。

论坛徽章:
93
2015年辞旧岁徽章
日期:2019-10-10 10:51:15CU大牛徽章
日期:2014-02-21 14:21:56CU十二周年纪念徽章
日期:2020-10-15 16:55:55CU大牛徽章
日期:2014-02-21 14:22:07羊年新春福章
日期:2019-10-10 10:51:39CU大牛徽章
日期:2019-10-10 10:55:38季节之章:春
日期:2020-10-15 16:57:40ChinaUnix元老
日期:2019-10-10 10:54:42季节之章:冬
日期:2019-10-10 10:57:17CU大牛徽章
日期:2014-02-21 14:22:52CU大牛徽章
日期:2014-03-13 10:40:30CU大牛徽章
日期:2014-02-21 14:23:15
发表于 2021-11-22 16:38 |显示全部楼层
ansible 很强大,运维利器,不过从来没想过研究它的源码,如果真要研究的话,我觉得根据自己使用的功能的熟悉程度来安排先后顺序可能比较有助于理解,毕竟功能熟悉的再去了解它的实现应该可以省一些理解上的门槛,你已经知道了这些代码里有哪些功能,那么只需要看作者怎么实现就可以了。
相比于C++,python 更集成,不用追究于一个功能的底层实现,看代码理解功能即可,而不用管实现,类比于吃个馒头,就是吃馒头就可以了,而不需要经过洗手、和面、揉面、发酵、蒸、吃这些步骤,这是阅读 python 代码的优势。

论坛徽章:
0
发表于 2021-11-25 17:21 |显示全部楼层
ansible 用的是多进程?,or多线程?,还是多进程,多线程都用? python协程用了么?
官网有手册说明吗?
我是没找到。除非看源码。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】
2022年1月13-15日,由IT168旗下ITPUB企业社区平台主办的第十四届中国系统架构师大会(SACC2021)将在云端进行网络直播。
为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。

大会官网
  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP