添加 Nezha Agent 管理功能和完整文档系统
- 新增 Nezha Agent client_secret 更新 playbook(两种实现方案) - 建立三层文档架构:docs/(用户文档)、examples/(配置示例)、llmdoc/(技术文档) - 添加项目主 README.md 和配置示例文件 - 初始化 .gitignore 保护敏感信息
This commit is contained in:
200
docs/QUICKSTART_nezha.md
Normal file
200
docs/QUICKSTART_nezha.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# Nezha Agent Secret 更新 - 快速开始
|
||||
|
||||
## 🚀 5分钟快速上手
|
||||
|
||||
### 步骤 1: 准备 Inventory 文件
|
||||
|
||||
```bash
|
||||
# 复制示例文件
|
||||
cp inventory.example.ini inventory.ini
|
||||
|
||||
# 编辑 inventory.ini,添加你的服务器信息
|
||||
vim inventory.ini
|
||||
```
|
||||
|
||||
最简单的 inventory.ini 示例:
|
||||
```ini
|
||||
[nezha_agents]
|
||||
your-server.com ansible_host=1.2.3.4 ansible_user=root
|
||||
```
|
||||
|
||||
### 步骤 2: 测试连接
|
||||
|
||||
```bash
|
||||
# 测试 Ansible 连接
|
||||
ansible nezha_agents -i inventory.ini -m ping
|
||||
```
|
||||
|
||||
如果成功,你会看到:
|
||||
```
|
||||
your-server.com | SUCCESS => {
|
||||
"changed": false,
|
||||
"ping": "pong"
|
||||
}
|
||||
```
|
||||
|
||||
### 步骤 3: 执行更新
|
||||
|
||||
#### 方式A:强制更新(推荐用于首次使用)
|
||||
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=你的新密钥"
|
||||
```
|
||||
|
||||
#### 方式B:安全更新(推荐用于生产环境)
|
||||
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=新密钥" \
|
||||
-e "old_client_secret=旧密钥"
|
||||
```
|
||||
|
||||
### 步骤 4: 验证结果
|
||||
|
||||
执行成功后,你会看到类似输出:
|
||||
```
|
||||
TASK [显示更新结果] ****************************************************
|
||||
ok: [your-server.com] => {
|
||||
"msg": "client_secret 已成功更新"
|
||||
}
|
||||
|
||||
TASK [显示服务状态] ****************************************************
|
||||
ok: [your-server.com] => {
|
||||
"msg": "Nezha Agent 服务状态: active"
|
||||
}
|
||||
```
|
||||
|
||||
## 🎯 常见使用场景
|
||||
|
||||
### 场景 1: 单台服务器更新
|
||||
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
--limit your-server.com \
|
||||
-e "client_secret=NewSecret123"
|
||||
```
|
||||
|
||||
### 场景 2: 先测试,后执行
|
||||
|
||||
```bash
|
||||
# 1. 测试模式(不实际执行,只显示会做什么)
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=NewSecret123" \
|
||||
--check --diff
|
||||
|
||||
# 2. 确认无误后,去掉 --check 实际执行
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=NewSecret123"
|
||||
```
|
||||
|
||||
### 场景 3: 批量更新多台服务器
|
||||
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=NewSecret123"
|
||||
```
|
||||
|
||||
### 场景 4: 使用变量文件(保护敏感信息)
|
||||
|
||||
创建 `secret_vars.yml`:
|
||||
```yaml
|
||||
client_secret: "你的新密钥"
|
||||
```
|
||||
|
||||
执行:
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e @secret_vars.yml
|
||||
```
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. **备份**: 每次执行都会自动备份配置文件
|
||||
2. **重启**: 更新后会自动重启 nezha-agent 服务(服务会短暂中断几秒)
|
||||
3. **权限**: 确保你有 root 或 sudo 权限
|
||||
4. **验证**: 使用 `-e "old_client_secret=旧值"` 可以避免误操作
|
||||
|
||||
## 🔧 故障排查
|
||||
|
||||
### 问题:连接失败
|
||||
|
||||
```bash
|
||||
# 检查 SSH 连接
|
||||
ssh root@your-server.com
|
||||
|
||||
# 测试 Ansible 连接
|
||||
ansible nezha_agents -i inventory.ini -m ping -vvv
|
||||
```
|
||||
|
||||
### 问题:权限不足
|
||||
|
||||
```bash
|
||||
# 如果不是 root 用户,确保在 inventory.ini 中添加
|
||||
ansible_become=yes
|
||||
|
||||
# 或在命令中添加
|
||||
ansible-playbook nezha_update_secret.yml -i inventory.ini -b -K
|
||||
# -b: 使用 become (sudo)
|
||||
# -K: 询问 sudo 密码
|
||||
```
|
||||
|
||||
### 问题:配置文件路径不同
|
||||
|
||||
```bash
|
||||
# 指定自定义路径
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=NewSecret" \
|
||||
-e "config_file=/custom/path/config.yml"
|
||||
```
|
||||
|
||||
## 📚 更多信息
|
||||
|
||||
- 详细文档: [nezha_update_secret_README.md](nezha_update_secret_README.md)
|
||||
- 查看其他 playbook 示例: `ls *.yml *.yaml`
|
||||
|
||||
## 💡 专业提示
|
||||
|
||||
1. **使用 Ansible Vault 保护密钥**:
|
||||
```bash
|
||||
ansible-vault encrypt_string 'YourSecret' --name 'client_secret'
|
||||
```
|
||||
|
||||
2. **保存执行日志**:
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=NewSecret" | tee update.log
|
||||
```
|
||||
|
||||
3. **并行执行(多台服务器)**:
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=NewSecret" \
|
||||
-f 10 # 同时处理10台服务器
|
||||
```
|
||||
|
||||
## ✅ 检查清单
|
||||
|
||||
- [ ] 已准备 inventory.ini 文件
|
||||
- [ ] 已测试 SSH/Ansible 连接 (`ansible -m ping`)
|
||||
- [ ] 已准备新的 client_secret 值
|
||||
- [ ] 在生产环境前已在测试环境验证
|
||||
- [ ] 已使用 `--check --diff` 预览变更
|
||||
- [ ] 已准备回滚方案(保留旧密钥值)
|
||||
|
||||
准备就绪?执行以下命令开始:
|
||||
```bash
|
||||
ansible-playbook nezha_update_secret.yml \
|
||||
-i inventory.ini \
|
||||
-e "client_secret=你的新密钥"
|
||||
```
|
||||
Reference in New Issue
Block a user