unfurl:部署服务和应用的命令行工具
项目介绍
unfurl 是一个开源的命令行工具,用于部署服务和应用。它通过使用 OASIS TOSCA 标准在高级别描述应用程序架构,然后根据部署环境(如云服务提供商、Kubernetes 或自托管机器)创建相应的部署计划。这些计划可以包括如 shell 脚本、Terraform 模块或 Ansible 清单等构件。
部署后,unfurl 会将所有需要的信息记录在 git 中,以便实现可重现的部署,包括配置、部署中使用的构件和源代码库,以及已部署资源的当前状态。这使其能够智能地更新配置、依赖项或环境。
使用 Unfurl Cloud,一个用于协作开发云应用的开源平台,可以更好地管理 unfurl 项目。
项目技术分析
unfurl 的核心是一个基于 TOSCA 标准的模型驱动架构。它使用 Python 或 YAML 来定义应用的拓扑结构和编排规范,然后根据这些规范生成适用于特定环境的部署计划。这种模型驱动的部署方式简化了多云和混合云环境中的应用部署流程。
项目利用了多个现有的 DevOps 工具,如 Terraform、Ansible、Helm 等,通过插件接口和动态配置 API,提供了对部署流程的全面控制。此外,unfurl 通过将所有资源状态存储在 git 中,支持版本控制,使得状态的跟踪和修复变得简单。
项目及技术应用场景
unfurl 面向的是需要部署和管理复杂应用架构的开发者和运维人员。以下是一些典型的应用场景:
- 多服务应用的部署:对于由多个相互连接的服务组成的复杂应用,如微服务架构,unfurl 可以帮助管理和简化部署流程。
- 多云环境支持:如果用户需要在不同的云服务提供商或自托管环境中部署应用,unfurl 提供了一个统一的接口来定义和部署应用。
- 基础设施即代码:对于希望将配置和实时资源作为代码进行管理,并利用代码审查和 CI/CD 流程的团队,unfurl 提供了一个简便的方法。
项目特点
无服务器、无需代理
unfurl 是一个简单、独立的 CLI 工具,可以在本地开发环境或自动化 CI/CD 流程中使用。
从简单的应用中心描述部署基础设施
- 使用 YAML 或 Python 中的 OASIS TOSCA 标准来建模云基础设施。
- 导入可重用和可适应的组件或构建(并发布)自己的组件。
- 容易声明依赖项,实现增量部署。
- 使用路径查询 DSL 表达资源和配置之间的动态关系。
- 提供与 Ansible 兼容的 Jinja2 模板,用于成熟的模板库。
- 动态匹配和替换,使模型能够适应不同的环境、服务和云提供商。
与现有的 DevOps 工具集成
- 开箱即用支持 Terraform、Ansible、shell、Helm、Octodns、Kubernetes、Docker 和进程管理等。
- 提供插件接口,用于添加自定义配置器。
- 动态配置 API,实现计划生成的完全控制。
开发友好的状态管理
- 所有资源状态以人类可读和可编辑的形式存储在 git 中。
- 可以轻松覆盖或修复资源表示,支持交互式开发。
- 编辑器友好的配置文件,保留注释、顺序和空白。
零安装
- 通过本地部署来管理本地机器和引导设置。
- 在部署过程中下载和安装指定的软件版本和代码。
- 创建和管理隔离的部署环境。
- 环境可以是 Docker 容器或带有 asdf 的 Python 虚拟环境。
- 明确分离本地和共享配置,避免不必要的本地配置步骤。
灵活的密钥管理
- 声明密钥,保护您的代码库。
- 支持内联加密或使用外部密钥管理器,如 HashiCorp Vault。
- 自动加密
secrets
文件夹中的文件。 - 输出和日志中隐藏敏感内容。
"Day Two" 操作
- 提供检查、发现和修复命令。
- 定义自定义工作流,用于维护任务,如备份和恢复。
unfurl 通过其独特的特性和功能,为开发者和运维人员提供了一种高效、可靠的方式来部署和管理复杂的应用程序和基础设施。无论是微服务架构、多云部署还是基础设施即代码的实践,unfurl 都是一个值得关注的工具。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考