ansible源码分析

背景:

运维过程中常常有多机批量操作使用情况。ansible作为这个方面点开源工具被广泛使用。

ansible依赖远程登录和yaml配置的python库['paramiko','jinja2',"PyYAML",'setuptools','pycrypto >= 2.6']

一、总体class

class Cli(object):
    ''' code behind bin/ansible '''
    def parse(self):
    #给ansible执行创建参数
    def run(self, options, args):
    #开始执行命令,首先获取机器、用户密码、操作命令等,后调用runner.Runner()类执行

二、各模块分析

ansible/runner/__init__.py

runner()调用函数如下

runner()->_parallel_exec()->_executor_hook()->_executor()->_executor_internal()->_executor_internal_inner()

各函数功能介绍

class Runner(object):
    def __init__(self, vars_cache, inventory, vault_password=None):

    def _complex_args_hack(self, complex_args, module_args):
    def _transfer_str(self, conn, tmp, name, data):
    def _compute_environment_string(self, conn, inject=None):
    def _compute_delegate(self, password, remote_inject):
    def _compute_delegate_user(self, host, inject):
    def _count_module_args(self, args, allow_dupes=False):
    def _execute_module(self, conn, tmp, module_name, args,
    #上传并执行一个模块
    def _executor(self, host, new_stdin):
    #多线程执行库handler,调用函数<span><span>_executor_internal()</span></span>
    def get_combined_cache(self):
    def get_inject_vars(self, host):
    def _executor_internal(self, host, new_stdin):
    #函数调用_safe_template_complex_args(),_executor_internal_inner()

    def _executor_internal_inner(self, host, module_name, module_args, inject, port, is_chained=False, complex_args=None):
    #获取module处理参数,执行获取结果
    def _early_needs_tmp_path(self, module_name, handler):
    def _late_needs_tmp_path(self, conn, tmp, module_style):
    def _low_level_exec_command(self, conn, cmd, tmp, sudoable=False,
    def _remote_chmod(self, conn, mode, path, tmp, sudoable=False, su=False):
    def _remote_expand_user(self, conn, path, tmp):
    def _remote_checksum(self, conn, tmp, path, inject):
    def _make_tmp_path(self, conn):
    def _remove_tmp_path(self, conn, tmp_path):
    def _copy_module(self, conn, tmp, module_name, module_args, inject, complex_args=None):
    def _configure_module(self, conn, module_name, module_args, inject, complex_args=None):
    def _parallel_exec(self, hosts):
    #多线程执行
    def _partition_results(self, results):
    #获取多线程执行结果
    def run(self):
    #判断主机数并多线程执行命令(调用函数<span><span>_parallel_exec</span></span>())
    def run_async(self, time_limit):
    def noop_on_check(self, inject):

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值