Initial commit: Tencent DNSPod DNS deployment skill
- Support for single record deployment - Batch deployment from JSON config - Service quick deployment (Web/API/CDN) - .env file support for secure credentials - Complete documentation
This commit is contained in:
258
README.md
Normal file
258
README.md
Normal file
@@ -0,0 +1,258 @@
|
||||
# 腾讯云DNSPod域名快速部署 Skill
|
||||
|
||||
这是一个用于快速部署和自动化管理腾讯云DNSPod域名解析的OpenClaw Skill。
|
||||
|
||||
## 功能特性
|
||||
|
||||
✅ **单条记录快速部署** - 添加/更新A、CNAME、MX等记录
|
||||
✅ **批量部署** - 从JSON配置文件批量创建记录
|
||||
✅ **服务快速部署** - 一键部署Web、API、CDN等服务
|
||||
✅ **记录查询** - 查看域名下的所有解析记录
|
||||
✅ **记录删除** - 删除不需要的DNS记录
|
||||
✅ **自动域名创建** - 部署时自动创建不存在的域名
|
||||
|
||||
## 安装
|
||||
|
||||
### 1. 安装依赖
|
||||
```bash
|
||||
cd tencent-dnspod
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
### 2. 配置认证密钥
|
||||
|
||||
访问腾讯云控制台获取API密钥:
|
||||
https://console.cloud.tencent.com/cam/capi
|
||||
|
||||
有两种配置方式:
|
||||
|
||||
**方式1: 使用 .env 文件(推荐)**
|
||||
```bash
|
||||
cp .env.example .env
|
||||
# 编辑 .env 文件,填入你的密钥
|
||||
```
|
||||
|
||||
**方式2: 设置环境变量**
|
||||
```bash
|
||||
export TENCENT_SECRET_ID="你的SecretId"
|
||||
export TENCENT_SECRET_KEY="你的SecretKey"
|
||||
```
|
||||
|
||||
### 3. 验证安装
|
||||
```bash
|
||||
python scripts/list_records.py --domain example.com
|
||||
```
|
||||
|
||||
## 快速使用
|
||||
|
||||
### 场景1: 部署Web服务
|
||||
|
||||
一键部署主域名和www子域名:
|
||||
```bash
|
||||
python scripts/deploy_service.py \
|
||||
--domain example.com \
|
||||
--service web \
|
||||
--ip 1.2.3.4
|
||||
```
|
||||
|
||||
带泛域名解析:
|
||||
```bash
|
||||
python scripts/deploy_service.py \
|
||||
--domain example.com \
|
||||
--service web \
|
||||
--ip 1.2.3.4 \
|
||||
--wildcard
|
||||
```
|
||||
|
||||
### 场景2: 部署API服务
|
||||
```bash
|
||||
python scripts/deploy_service.py \
|
||||
--domain example.com \
|
||||
--service api \
|
||||
--ip 1.2.3.5 \
|
||||
--subdomain api
|
||||
```
|
||||
|
||||
### 场景3: 批量部署
|
||||
|
||||
从配置文件批量部署:
|
||||
```bash
|
||||
python scripts/batch_deploy.py \
|
||||
--domain example.com \
|
||||
--config examples/dns-config.json
|
||||
```
|
||||
|
||||
### 场景4: 单条记录管理
|
||||
|
||||
添加A记录:
|
||||
```bash
|
||||
python scripts/deploy_record.py \
|
||||
--domain example.com \
|
||||
--subdomain www \
|
||||
--type A \
|
||||
--value 1.2.3.4
|
||||
```
|
||||
|
||||
添加CNAME记录(CDN):
|
||||
```bash
|
||||
python scripts/deploy_record.py \
|
||||
--domain example.com \
|
||||
--subdomain cdn \
|
||||
--type CNAME \
|
||||
--value cdn.example.com.cdn.dnsv1.com
|
||||
```
|
||||
|
||||
强制更新现有记录:
|
||||
```bash
|
||||
python scripts/deploy_record.py \
|
||||
--domain example.com \
|
||||
--subdomain www \
|
||||
--type A \
|
||||
--value 1.2.3.5 \
|
||||
--force
|
||||
```
|
||||
|
||||
### 场景5: 查询和删除
|
||||
|
||||
查询所有记录:
|
||||
```bash
|
||||
python scripts/list_records.py --domain example.com
|
||||
```
|
||||
|
||||
删除记录:
|
||||
```bash
|
||||
python scripts/delete_record.py \
|
||||
--domain example.com \
|
||||
--subdomain www \
|
||||
--type A
|
||||
```
|
||||
|
||||
## 目录结构
|
||||
|
||||
```
|
||||
tencent-dnspod/
|
||||
├── SKILL.md # Skill说明文档
|
||||
├── README.md # 本文件
|
||||
├── requirements.txt # Python依赖
|
||||
├── scripts/ # 脚本目录
|
||||
│ ├── deploy_record.py # 单条记录部署
|
||||
│ ├── batch_deploy.py # 批量部署
|
||||
│ ├── deploy_service.py # 服务快速部署
|
||||
│ ├── list_records.py # 记录查询
|
||||
│ └── delete_record.py # 记录删除
|
||||
├── references/ # 参考文档
|
||||
│ ├── api-auth.md # API认证说明
|
||||
│ └── common-errors.md # 常见错误处理
|
||||
└── examples/ # 示例配置
|
||||
└── dns-config.json # 批量部署配置示例
|
||||
```
|
||||
|
||||
## 配置文件格式
|
||||
|
||||
批量部署配置文件(JSON格式):
|
||||
```json
|
||||
{
|
||||
"records": [
|
||||
{
|
||||
"subdomain": "@",
|
||||
"type": "A",
|
||||
"value": "1.2.3.4",
|
||||
"line": "默认",
|
||||
"ttl": 600,
|
||||
"remark": "主域名"
|
||||
},
|
||||
{
|
||||
"subdomain": "www",
|
||||
"type": "A",
|
||||
"value": "1.2.3.4",
|
||||
"line": "默认",
|
||||
"remark": "Web服务"
|
||||
},
|
||||
{
|
||||
"subdomain": "api",
|
||||
"type": "A",
|
||||
"value": "1.2.3.5",
|
||||
"line": "电信",
|
||||
"remark": "API服务"
|
||||
},
|
||||
{
|
||||
"subdomain": "cdn",
|
||||
"type": "CNAME",
|
||||
"value": "cdn.example.com.cdn.dnsv1.com",
|
||||
"line": "默认",
|
||||
"remark": "CDN加速"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## 支持的记录类型
|
||||
|
||||
| 类型 | 说明 | 示例值 |
|
||||
|------|------|--------|
|
||||
| A | IPv4地址 | 1.2.3.4 |
|
||||
| AAAA | IPv6地址 | 2001:db8::1 |
|
||||
| CNAME | 别名 | cdn.example.com |
|
||||
| MX | 邮件服务器 | mx.example.com |
|
||||
| TXT | 文本记录 | "v=spf1 include:_spf.example.com ~all" |
|
||||
| NS | 域名服务器 | ns1.example.com |
|
||||
|
||||
## 常用线路
|
||||
|
||||
- `默认` - 默认线路
|
||||
- `电信` - 电信用户
|
||||
- `联通` - 联通用户
|
||||
- `移动` - 移动用户
|
||||
- `境外` - 海外用户
|
||||
- `搜索引擎` - 爬虫线路
|
||||
|
||||
## 最佳实践
|
||||
|
||||
1. **部署前测试** - 先在测试域名验证配置
|
||||
2. **设置合理TTL** - 生产环境600s,测试环境60s
|
||||
3. **使用批量部署** - 多条记录用配置文件管理
|
||||
4. **添加记录备注** - 方便后续维护
|
||||
5. **分环境管理** - 使用不同子域名(dev/stage/prod)
|
||||
6. **注意API限频** - 批量操作时控制请求频率
|
||||
|
||||
## 常见问题
|
||||
|
||||
### 1. 认证失败
|
||||
```
|
||||
错误: AuthFailure
|
||||
解决: 检查环境变量 TENCENT_SECRET_ID 和 TENCENT_SECRET_KEY
|
||||
```
|
||||
|
||||
### 2. 域名不存在
|
||||
```
|
||||
错误: ResourceNotFound.Domain
|
||||
解决: 使用 --create-domain 参数自动创建域名
|
||||
```
|
||||
|
||||
### 3. 记录已存在
|
||||
```
|
||||
错误: RecordAlreadyExists
|
||||
解决: 使用 --force 参数强制更新
|
||||
```
|
||||
|
||||
### 4. API频率限制
|
||||
```
|
||||
错误: RequestLimitExceeded
|
||||
解决: 批量操作时增加 --delay 参数(默认0.5秒)
|
||||
```
|
||||
|
||||
详细错误处理见: [references/common-errors.md](references/common-errors.md)
|
||||
|
||||
## 技术支持
|
||||
|
||||
- **DNSPod API文档:** https://cloud.tencent.com/document/product/1427/56152
|
||||
- **腾讯云SDK:** https://cloud.tencent.com/document/sdk
|
||||
- **DNSPod控制台:** https://console.dnspod.cn
|
||||
|
||||
## 许可证
|
||||
|
||||
MIT License
|
||||
|
||||
## 贡献
|
||||
|
||||
欢迎提交Issue和Pull Request!
|
||||
Reference in New Issue
Block a user