分类目录源码阅读

Ansible源码分析之corn模块

corntab是linux上被大家熟知的定时任务,而Ansible中使用corn模块来管理crontab和环境变量条目。

  • 该模块允许创建环境变量和命名的crontab条目,更新或删除它们。
  • ‘当管理crontab作业时:模块包括一行,其中crontab条目C(“#Ansible:”)的描述与传递给模块的“名称”相对应,供将来的ansible /模块使用调用以查找/检查状态。
  • “名称”参数应该是唯一的,并且更改“名称”值将导致创建新的cron任务(或删除其他任务)。
  • 在管理环境变量时,不添加任何注释行,但是,当模块需要查找/检查状态时,它将使用“名称”参数来查找环境变量定义行。
阅读更多

Ansible源码分析之get_url模块

在之前的command模块中提到过get_url其实是curl和wget命令的替代模块。再看该模块的文档描述:

  • 将文件从HTTP,HTTPS或FTP下载到远程服务器。远程服务器I(必须)可以直接访问远程资源。
  • 默认情况下,如果在目标主机上设置了环境变量C( _proxy),则请求将通过该代理发送。可以通过为此任务设置变量或使用use_proxy选项来覆盖此行为。
  • HTTP重定向可以从HTTP重定向到HTTPS,因此您应确保两种协议的代理环境均正确。
  • 从Ansible 2.4开始,使用C(-check)运行时,它将发出HEAD请求以验证URL,但不会下载整个文件或针对哈希进行验证。
  • 对于Windows目标,请改用 win_get_url 模块。
阅读更多

Ansible源码分析之find模块

ansible的find模块和linux上find命令非常相似,感觉是find命令的Python代码实现。文档的描述也很简单:根据特定条件返回文件列表。多个条件一起进行“与”运算。对于Windows目标,请改用 ansible.windows.win_find 模块,不过实现上是差不多的。直接分析源码,先看用到的一些模块。

阅读更多

Ansible源码分析之kown_hosts模块

kown_hosts大家应该都比较熟悉,其作用如下:
ssh会把你每个访问过计算机的公钥(public key)都记录在~/.ssh/known_hosts。当下次访问相同计算机时,OpenSSH会核对公钥。如果公钥不同,OpenSSH会发出警告, 避免你受到DNS Hijack之类的攻击。

known_hosts 模块可让您从known_hosts文件中添加或删除主机密钥。

Ansible中kown_hosts.py模块的描述
阅读更多

Ansible源码分析之command模块

command模块是ansible中执行命令的模块,但不限于command,还有raw,shell,win_command等模块,只是使用场景不同。根据command的文档描述:

  • C(command)模块采用命令名称,后跟由空格分隔的参数列表。
  • 不会通过外壳程序处理命令,因此像C($ HOSTNAME)这样的变量和像C(“ *”),C(“ <”),C(“>”),C(“ | “),C(”;“)和C(”&“)无效。如果需要这些功能,请使用shell模块。
  • 对于Windows目标,请改用win_command模块。
阅读更多

Python标准库源码阅读系列(一)–OS模块(上)

阅读Python标准库源码是我一直都有的一个计划,趁着暑假的时间。看了半个月OS模块的源码,反复分析做笔记,把文档中的一些注释也做了翻译。这也是一个提升。我这里用的是python 3.6的标准库源码。因为os模块的源码都很长且注释较多,所以我的想法是将其中每一段代码或者函数按顺序单独拿出来分析学习。由于篇幅太长,我将代码分析分为上下两部分。

阅读更多