实验室环境系统 (ADLES) 的自动部署
项目描述
概述
实验室环境系统 (ADLES) 的自动部署
ADLES 自动确定性地创建用于网络安全和信息技术 (IT) 教育的虚拟化环境。
该系统使教育工作者能够轻松地为其课程构建确定性和可移植的环境,从而节省大量时间和精力,并减轻拥有高级 IT 知识的要求。
完整的文档可以在ReadTheDocs找到。
入门
# Install
pip3 install adles
# Usage
adles -h
# Specification syntax
adles --print-spec exercise
adles --print-spec infra
# Examples
adles --list-examples
adles --print-example competition
用法
使用 ADLES 创建环境:
- 阅读练习和基础设施规范以及它们的示例。
- 为您的平台编写基础架构规范。(目前,VMware vSphere 是唯一支持的平台)
- 使用您想要创建的环境编写练习规范。
- 检查其语法,运行掌握阶段,进行更改,然后运行部署阶段。
# Validate spec
adles validate my-competition.yaml
# Create Master images
adles masters my-competition.yaml
# Deploy the exercise
adles deploy my-competition.yaml
# Cleanup the environment
adles cleanup my-competition.yaml
详细用法
usage: adles [-h] [--version] [-v] [--syslog SERVER] [--no-color]
[--list-examples] [--print-spec NAME] [--print-example NAME]
[-i INFRA]
{validate,deploy,masters,package,cleanup} ...
Examples:
adles --list-examples
adles --print-example competition | adles validate -
adles validate examples/pentest-tutorial.yaml
adles masters examples/experiment.yaml
adles -v deploy examples/experiment.yaml
adles cleanup -t masters --cleanup-nets examples/competition.yaml
adles validate -t infra examples/infra.yaml
optional arguments:
-h, --help show this help message and exit
--version show program's version number and exit
-v, --verbose Emit debugging logs to terminal
--syslog SERVER Send logs to a Syslog server on port 514
--no-color Do not color terminal output
-i INFRA, --infra INFRA
Override the infrastructure specification to be used
Print examples and specs:
--list-examples Prints the list of available example scenarios
--print-spec NAME Prints the named specification
--print-example NAME Prints the named example
ADLES Subcommands:
{validate,deploy,masters,package,cleanup}
validate Validate the syntax of your specification
deploy Environment deployment phase of specification
masters Master creation phase of specification
package Create a package
cleanup Cleanup and remove existing environments
vSphere 实用程序脚本
有许多实用程序脚本可以使某些 vSphere 任务变得可以承受。
# Basic usage
vsphere --help
vsphere <script> --help
vsphere <script --version
# Running as a Python module
python -m adles.vsphere --help
详细用法
usage: vsphere [-h] {cleanup,clone,power,info,snapshot} ...
Single-purpose CLI scripts for interacting with vSphere
optional arguments:
-h, --help show this help message and exit
vSphere scripts:
{cleanup,clone,power,info,snapshot}
cleanup Cleanup and Destroy Virtual Machines (VMs) and VM
Folders in a vSphere environment.
clone Clone multiple Virtual Machines in vSphere.
power Power operations for Virtual Machines in vSphere.
info Query information about a vSphere environment and
objects within it.
snapshot Perform Snapshot operations on Virtual Machines in a
vSphere environment.
系统要求
蟒蛇:3.6+
ADLES 将在 Python 支持的任何平台上运行。它已经过测试:
- Windows 10(周年纪念和创作者)
- Ubuntu 14.04 和 16.04(包括 Windows 上的 Ubuntu 上的 Bash)
- CentOS 7
Python 包
setup.py具体版本见
- pyyaml
- 颜色日志
- 人性化
- tqdm
- pyvmomi(如果您使用的是 VMware vSphere)
- setuptools(如果您是手动安装或开发)
平台
VMware vSphere
- vCenter 服务器:6.0+
- ESXi:6.0+
报告问题并获得帮助
如果 ADLES 中存在错误或者您在使其正常工作时遇到问题,请在 GitHub 上打开一个问题。我很乐意提供帮助,但我可能需要几天到一周的时间才能回复。如果它对时间敏感(我很了解这种感觉),请随时直接与我联系(见下文)。
如果您有一般性问题,需要帮助您的项目或学生使用 ADLES,或者只是想讨论该项目,请通过电子邮件 ( adles/__about__.py)、Twitter (@GhostOfGoes) 或 Discord (@KnownError) 给我留言。Python Discord 服务器是提问或讨论项目的好地方。
贡献
贡献者非常受欢迎!请参阅贡献指南以开始使用,并查看TODO 列表和GitHub 问题以获取任务和错误的完整列表。
贡献者
- 克里斯托弗去(@GhostOfGoes)
- 丹尼尔孔戴德莱昂 (dcontedeleon)
目标和 TODO
ADLES 的总体目标是创建一个易于使用且坚如磐石的系统,允许教师和学生使用虚拟环境进行教学以自动化他们的工作负载。
从长远来看,我希望看到一个开源存储库的创建,类似于 Hashicorp 的 Atlas 和 Docker 的 Hub,教育工作者可以在其中共享软件包并为改善全球网络教育做出贡献。
完整的 TODO 列表documentation/TODO.md和 GitHub 问题。
执照
该项目根据 Apache 许可证 2.0 版获得许可。有关完整的许可文本,请参阅 LICENSE,有关此项目使用代码的外部项目的归属信息,请参阅 NOTICES。
项目历史
该系统最初是我 2016 年秋季在爱达荷大学的硕士论文研究的概念验证实施。它最初设计用于在 RADICL 实验室上运行。
变更日志
此项目的所有显着更改都将记录在此文件中。
格式基于Keep a Changelog 并且该项目遵循Semantic Versioning。
[1.4.0] - 2019-09-04
显着变化
- 新的 CLI 命令语法,运行
adles --help以获取详细信息或查看自述文件中的用法部分 - 将 vSphere 帮助程序脚本(例如
vm-power)合并到一个命令中,vsphere. 要使用,请运行vsphere --help. - ADLES 现在需要 Python 3.6+。它包含或可轻松安装在任何现代 Linux 发行版、Windows 和 OSX 上。
添加
- 现在可以调用 CLI 一个 Python 模块(例如
python -m adles,python -m adles.vsphere) - 为所有规范类型添加了两个新规范字段:
spec-type和spec-version - 新论点:
--syslog. 配置将日志输出保存到指定的 Syslog 服务器。 - 为克隆、电源和快照 vSphere 帮助程序命令添加了进度条
- 支持
NO_COLOR环境变量(根据no-color.org) - 新依赖:tqdm和humanfriendly
- Debian 软件包(参见GitHub 发布页面)
改变了
- 未能导入可选依赖项现在将记录错误,而不是引发异常并终止执行。
- 默认情况下,日志将不再发送到 syslog 服务器。系统日志服务器现在将仅在设置参数时使用。
- 在后台对命令行参数解析进行了更改,这将使添加未来的功能更容易,并允许使用其他使用
argparse. - 大量的代码清理和格式化
- 碰撞的依赖版本
- 其他各种细微更改,请参阅 Git pull request diff 了解所有更改
已移除
- 放弃对 Python < 3.6 的支持
- 删除
Libvirt和HyperV接口 - 移除依赖:
netaddr
开发
- 为测试运行和 linting 添加了 Tox
- 添加
.editorconfig - 添加
.gitattributes - 重新组织了一些文档
- 删除了 CodeClimate
- 将项目根目录中的剩余示例移至
examples/ - 向 Travis CI 添加了单元测试
[1.3.6] - 2017-12-19
固定的
- 修复了任何命令行脚本的问题,即仅在命令行上输入脚本名称(例如“adles”)会出错,而不是像用户期望的那样打印帮助。
- 修复了 vm_snapshots 脚本输出到错误日志文件的问题。
改变了
- 对解析参数和处理键盘中断的方式进行了底层改进。
[1.3.5] - 2017-12-13
改变了
- 将包依赖项从 requirements.txt 移至 setup.py。
[1.3.4] - 2017-12-13
添加
- Linux 系统上的手册页!
[1.3.3] - 2017-11-25
添加
- 将 VM 重新定位到新主机和/或数据存储到 VM 类的能力。
- 将 VM HDD 的模式更改为 VM 类的能力。
改变了
- 清理了 vm.py 中的文档字符串。
[1.3.2] - 2017-11-25
添加
- 将 HDD 大小调整为 VM 类的能力。
[1.3.1] - 2017-11-24
固定的
- 修复了接口(及其依赖项)将被导入的错误,即使它们没有被使用。这导致了“pip install docker”错误。
改变了
- 日志记录的小改进。
[1.3.0] - 2017-07-02
添加
- libvirt 的接口 (LibvirtInterface)。
- 由 LibvirtInterface 和 CloudInterface 继承的 LibcloudInterface。
- Libvirt 到基础设施规范。
- libvirt 到可选要求。
改变了
- 阶级层次结构的重大变化。现在所有接口都继承自 Interface 并将其 init 方法归类。有一个单独的 PlatformInterface 具有 Interface 所做的大部分功能,这就是现在从 main() 调用的内容。
- 调整了接口中的一些样板代码。
- 更新了解析器。
- 格式调整。
- 将 apache-libcloud 移至要求。
[1.2.0] - 2017-07-02
使用 Apache libcloud(很快被 1.3.0 取代,所以忽略这个版本)在云接口上的初始测试。