open-vm-tools 会在customization的最后做一次reboot,影响cloud-init的执行。
这个目录下存放着解析各类数据源的类,基类是:sources.DataSource
OVF格式数据的解析类。分化出来的子类:DataSourceOVFNet
这里存放着一些,各个虚拟厂商特定的工具。
比如cloudinit/sources/helpers/vmware/imc,这个就是vmware特定的一些脚本文件。
config_custom_script.py, 这里是执行用户定制操作之前的脚本执行,及之后执行的调用。
DataSourceOVF类里的函数def _get_data(self):,会调用到这个pre、post脚本执行。
这个是systemd 发出来的,如果cloud-init在运行的时候,遇到了正常、非正常的reboot时,就会收到SIGTERM信号。
/usr/bin/cloud-init init --local
#####/usr/bin/cloud-init
#!/usr/libexec/platform-python
# EASY-INSTALL-ENTRY-SCRIPT: 'cloud-init==20.3','console_scripts','cloud-init'
__requires__ = 'cloud-init==20.3'
import re
import sys
from pkg_resources import load_entry_point
if __name__ == '__main__':
sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
sys.exit(
load_entry_point('cloud-init==20.3', 'console_scripts', 'cloud-init')()
)
setup.py
setuptools.setup( 使用到了setuptools 模块
name='cloud-init',
version=get_version(),
description='Cloud instance initialisation magic',
author='Scott Moser',
author_email='scott.moser@canonical.com',
url='http://launchpad.net/cloud-init/',
packages=setuptools.find_packages(exclude=['tests.*', '*.tests', 'tests']),
scripts=['tools/cloud-init-per'],
license='Dual-licensed under GPLv3 or Apache 2.0',
data_files=data_files,
install_requires=requirements,
cmdclass=cmdclass,
entry_points={
'console_scripts': [ 、、、、 入口点是 这里,console脚本又两个 实际调用时,看是使用哪一个 脚本
'cloud-init = cloudinit.cmd.main:main',
'cloud-id = cloudinit.cmd.cloud_id:main'
],
}
)
cloudinit/cmd/main.py
有分成了10个阶段做 cloud init。
/etc/cloud/cloud.cfg,datasource的配置信息/etc/cloud/cloud.cfg.d/
disable or enable the vmware customization based on vmware customization files. (default: True)
allow_vmware_cust = not util.get_cfg_option_bool(self.sys_cfg, “disable_vmware_customization”, True)
关键字not都排上用场的地方。
LOG.debug(
“Customization for VMware platform is disabled.”)
如果不启动vmware的customization过程,这个变量vmwareImcConfigFilePath,会被置为none,就开这个变量怎么用?
enable or disable the vmware customization based on raw cloud-init data including metadata and userdata. (default: True)
the maximum amount of clock time in seconds that should be spent waiting for vmware customization files. (default: 15)