源码
git clone https://github.com/ansible/ansible.git
git checkout release1.8.0
切换到1.8.0版本
目录结构
bin目录下面会放一些ansible脚本,也就是我们日常中实现的ansible 命令ansible-playbook
lib目录下就是ansible的核心库。
docs目录下就是一些帮助文档 对应ansible-doc命令的输出
setup.py就是安装工具了。
setup.py
ansible的安装过程都在此目录中定义。一起来看看此源码中的内容把
1 #!/usr/bin/env python 2 import os 3 import sys 4 from glob import glob 5 #直接把上面目录结构 lib添加到环境变量中,方便后续直接import 6 sys.path.insert(0, os.path.abspath('lib')) 7 from ansible import __version__, __author__ 8 try:
###如果没有安装 下面这些库就直接退出,提示安装 9 from setuptools import setup, find_packages 10 except ImportError: 11 print "Ansible now needs setuptools in order to build. " \ 12 "Install it using your package manager (usually python-setuptools) or via pip (pip install setuptools)." 13 sys.exit(1) 14#定义一下包相关的东西,名字、描述信息、作者、邮箱、官网url、即依赖库、 15 setup(name='ansible', 16 version=__version__, 17 description='Radically simple IT automation', 18 author=__author__, 19 author_email='michael@ansible.com', 20 url='http://ansible.com/', 21 license='GPLv3',
#ansible核心库 paramiko 可以参考https://www.cnblogs.com/Nolover/p/8745446.html中的demo 22 install_requires=['paramiko', 'jinja2', "PyYAML", 'setuptools', 'pycrypto >= 2.6'],
#库和源码映射位置,比如ansible库 对应 lib/ansible 下的源代码。
23 package_dir={ 'ansible': 'lib/ansible' }, 24 packages=find_packages('lib'), 25 package_data={ 26 '': ['module_utils/*.ps1'], 27 },
###把bin下面的几个文件映射车成脚本,这样在linux上就是可执行命令了 28 scripts=[ 29 'bin/ansible', 30 'bin/ansible-playbook', 31 'bin/ansible-pull', 32 'bin/ansible-doc', 33 'bin/ansible-galaxy', 34 'bin/ansible-vault', 35 ], 36 data_files=[], 37 )