stackql/stackql

GitHub: stackql/stackql

一个用 SQL 语义统一查询、配置和操作多云及 SaaS 资源的开源框架。

Stars: 838 | Forks: 79

[![logo]][homepage] ![badge1] ![badge2] ![badge3] ![badge4]
![homebrew downloads](https://img.shields.io/homebrew/installs/dy/stackql?label=homebrew%20downloads) ![homebrew version](https://img.shields.io/homebrew/v/stackql?label=homebrew%20version) ![GitHub Downloads (all assets, all releases)](https://img.shields.io/github/downloads/stackql/stackql/total?label=github%20release%20downloads) ![GitHub Release](https://img.shields.io/github/v/release/stackql/stackql?label=github%20release) ![Docker Pulls](https://img.shields.io/docker/pulls/stackql/stackql) ![Docker Image Version](https://img.shields.io/docker/v/stackql/stackql?label=docker%20version) ![Chocolatey Downloads](https://img.shields.io/chocolatey/dt/stackql?label=chocolatey%20downloads) ![Chocolatey Version](https://img.shields.io/chocolatey/v/stackql) ![PyPI - Downloads](https://img.shields.io/pypi/dm/stackql-deploy?label=pypi%20downloads)
### 使用 SQL 部署、管理和查询云资源,并与 API 交互

[__阅读文档 »__][docs] [提交 Issue][issues] · [功能请求][features] · [开发者指南][developers] · [自带 Provider][registrycont]

目录
  1. 关于本项目
  2. 安装说明
  3. 使用方法
  4. 贡献指南
  5. 许可证
  6. 联系方式
  7. 致谢
## 关于本项目 [__StackQL__][homepage] 是一个使用 Golang 构建的开源项目,允许您使用 SQL 语义创建、修改和查询不同本地及远程接口中的服务和资源状态。此类接口通常包括(但不限于)云和 SaaS 提供商(Google、AWS、Azure、Okta、GitHub 等)。

![stackql-shell](/docs/images/stackql-light-term.gif#gh-dark-mode-only) ![stackql-shell](/docs/images/stackql-dark-term.gif#gh-light-mode-only) ### 工作原理 StackQL 是一个独立应用程序,可在客户端模式下使用(通过 __`exec`__ 或 __`shell`__),也可在服务器模式(__`srv`__)下通过 Postgres wire protocol 客户端(如 `psycopg2` 等)进行访问。 StackQL 解析 SQL 语句并将其转换为对(云)资源提供商的 API 请求。然后执行 API 调用并将结果返回给用户。 StackQL 的 Provider 接口通常在 Provider 规范的 OpenAPI 扩展中定义。这些定义随后用于生成 SQL schema 和 API 客户端。Provider 定义的源代码存储在 [__StackQL Registry__][registry] 中。Provider 交互的语义定义在 [我们的 `any-sdk` 库](https://github.com/stackql/any-sdk) 中。有关具体实现的更多细节,请参阅 [本地的 `AGENTS.md` 文件](/AGENTS.md) 以及 [`any-sdk` 的相关文件](https://github.com/stackql/any-sdk/blob/main/AGENTS.md)。
StackQL 上下文图
以下上下文图从高层次描述了 StackQL 的架构: ``` flowchart LR subgraph StackQL direction BT subgraph ProviderDefs Registry[Provider Registry Docs] end subgraph App Proc[$ stackql exec\n$ stackql shell\n$ stackql srv] style Proc fill:#000,stroke:#000,color:#fff,text-align:left; %% ,font-family:'Courier New', Courier, monospace end end User((User)) <--> StackQL <--> Provider[Cloud Provider API] ProviderDefs --> App ``` 更详细的设计文档可以在 [这里][designdocs] 找到。
## 安装说明 StackQL 适用于 Windows、MacOS、Linux、Docker、GitHub Actions 等平台。请参阅下方针对您平台的安装说明。
在 MacOS 上安装 - Homebrew (`amd64` 和 `arm64`) - `brew install stackql` *或者* `brew tap stackql/tap && brew install stackql/tap/stackql` - MacOS PKG 安装程序 (`amd64` 和 `arm64`) - 下载最新的 [StackQL MacOS PKG 安装程序][macpkg] - 运行安装程序并按照提示操作
在 Windows 上安装 - MSI 安装程序 - 下载最新的 [StackQL MSI 安装程序][winmsi] - 运行安装程序并按照提示操作 - Chocolatey - 安装 [Chocolatey](https://chocolatey.org/install) - 运行 `choco install stackql` - ZIP 压缩包 - 下载最新的 [StackQL Windows ZIP 压缩包][winzip] - 将压缩包(经过代码签名的 `stackql.exe` 文件)解压到您选择的目录 - 将该目录添加到您的 `PATH` 环境变量中(可选)
在 Linux 上安装 - ZIP 压缩包 - 下载最新的 [StackQL Linux ZIP 压缩包][tuxzip] - 或者通过 `curl -L https://bit.ly/stackql-zip -O && unzip stackql-zip` - 将压缩包(`stackql` 文件)解压到您选择的目录 - 将该目录添加到您的 `PATH` 环境变量中(可选)
从 DockerHub 获取 StackQL ``` docker pull stackql/stackql ```
在 GitHub Actions 中使用 StackQL
## 使用方法 StackQL 可以通过交互式 REPL shell 使用,也可以通过 `exec` 命令使用,或者使用 [Postgres wire protocol](https://www.postgresql.org/docs/current/protocol.html) 作为服务器运行。 * 交互式 Shell # 运行交互式 stackql 查询 stackql shell --auth="${AUTH}" * 执行语句或文件 stackql exec --auth="${AUTH}" -i myscript.iql --iqldata vars.jsonnet --output json # 或者 stackql exec --auth="${AUTH}" "SELECT id, status FROM aws.ec2.instances WHERE region = 'us-east-1'" * 服务器 # 通过 Postgres wire protocol(psycopg2 等)服务客户端请求 stackql srv --auth="${AUTH}" _更多示例,请查看我们的 [博客][blog]_