可遇不可求的自动化运维工具 | 2 | 实施阶段一:基础准备

发布于:2025-09-11 ⋅ 阅读:(20) ⋅ 点赞:(0)

免费个人运维知识库,欢迎您的订阅:literator_ray.flowus.cn

宗旨:构建一个本地化、个人使用的运维自动化工具,旨在提高个人运维效率,而非企业级大规模部署

一、安装所需环境和工具

需要安装以下四个核心工具,请按顺序操作。

1.1 安装 Visual Studio Code (VSCode)

这是你的核心开发编辑器。

  • 下载地址​: https://code.visualstudio.com/

  • 安装步骤

    1. 访问官网,下载对应你操作系统(Windows/macOS)的安装包。

    2. 运行安装程序,所有选项保持默认设置即可(一直点击“下一步”)。

在这里插入图片描述

  • 验证安装​: 安装完成后,在开始菜单或应用程序中找到并打开 VSCode。

1.2 安装 Git

Git 用于版本控制,管理你的代码变更,同时也是后续安装某些依赖所必需的。

  • 下载地址​: https://git-scm.com/

  • 安装步骤​:

    1. 下载对应系统的安装包。

    2. 运行安装程序。​对于Windows用户,在“Select Components”页面,请务必勾选“Add to PATH”选项,其他选项保持默认。

  • 验证安装​:

    • 打开系统命令行(Windows: 按 Win + R,输入 cmd并回车;macOS: 打开“终端”)。

    • 输入命令:git --version

    • 如果显示版本号(如 git version 2.51.0),说明安装成功。

    在这里插入图片描述

1.3 安装 Python

这是后端的主要语言环境。

  • 下载地址​: https://www.python.org/downloads/

  • 安装步骤​:

    1. 下载 ​Python 3.10​ 或更高版本的安装包(推荐3.10或3.11,稳定性好)。

    2. 极其重要​:运行安装程序时,在第一个安装界面最下方,​一定要勾选 “Add python.exe to PATH”​​ 这个选项,然后点击“Install Now”进行安装。

  • 验证安装​:

    • 重新打开命令行窗口(关闭再打开一次,以确保环境变量生效)。

    • 输入命令:python --versionpython3 --version

    • 如果显示对应的Python版本号(如 Python 3.13.2),说明安装成功。

    在这里插入图片描述

1.4 安装 Node.js

Node.js 主要用来构建(打包)你的前端界面,之后的前端开发命令需要它。

  • 下载地址​: https://nodejs.org/

  • 安装步骤​:

    1. 下载 ​LTS(长期支持版)​​ 的安装包。

    2. 运行安装程序,所有选项保持默认设置即可。

  • 验证安装​:

    • 打开命令行。

    • 输入命令:node --versionnpm --version

    • 如果两者都显示出版本号(如 v22.18.010.9.3),说明安装成功。

    在这里插入图片描述

二、获取云平台的API密钥并授权

安全地创建和管理云平台的API密钥(Access Key)是项目成功的基础。我将以阿里云腾讯云为例,详细说明如何获取API密钥并为其授予所需的最小权限。

2.1 核心原则

  1. 最小权限原则​:只授予执行特定操作所必需的权限,不要直接使用主账户的密钥。

  2. 使用子用户(RAM用户)​​:创建一个专门的子用户来运行你的程序,即使密钥泄露,影响范围也仅限于该子用户被授予的权限。

  3. 妥善保管​:API SecretKey 只会在创建时显示一次,务必立即妥善保存(例如使用密码管理器)。

2.2 阿里云 (Alibaba Cloud) 操作指南

步骤一:创建RAM用户

  1. 登录阿里云控制台。

  2. 在顶部菜单栏,将鼠标悬停在你的账号名上,点击 ​​【访问控制RAM】​,进入RAM管理控制台。

  3. 在左侧导航栏,选择 ​​【身份管理】->【用户】​

  4. 点击 ​​【创建用户】​

    • 登录名称​ 和 ​显示名称​:填写一个易于识别的名字,例如 script-bot

    • 访问方式​:​务必勾选【使用永久 AccessKey 访问】​。这将自动生成API访问密钥。

    • 点击 ​​【确定】​

步骤二:为RAM用户授权

创建用户后,系统会弹出对话框,显示 ​AccessKey ID​ 和 ​AccessKey Secret。​立即复制并保存到安全的地方(如本地的 .env文件或密码管理器)​

  1. 在用户列表中,找到你刚创建的用户 script-bot,点击其名称进入详情页。

  2. 点击 ​​【权限管理】->【新增授权】​

  3. 在 ​​“资源范围”​​ 选择 ​​【账号级别】​

  4. 在 ​​“权限策略”​​ 区域,根据你的脚本需求,搜索并添加对应的系统策略。例如:

    • 封禁IP​:搜索并添加 AliyunCloudFWFullAccess(云防火墙管理权限) 或更细粒度的策略(如果找到)。

    • 操作DNS​:搜索并添加 AliyunDNSFullAccess(DNS管理权限)。

    • 操作安全组/ECS​:搜索并添加 AliyunECSFullAccess(弹性计算管理权限)。

  5. ​(重要)​​ 尽量遵循最小权限原则。如果你的脚本只封禁IP,就不要授予它DNS管理的权限。

  6. 点击 ​​【确定新增授权】​,完成授权。

2.3 密钥的使用与安全

如何在项目中使用?

在你的Python后端项目中,​绝对不要将密钥直接硬编码在代码里。而是使用环境变量。

  1. 在你的项目根目录或 backend目录下创建一个 .env文件。

  2. 将密钥填入该文件:

# 阿里云
ALIYUN_ACCESS_KEY_ID = YOUR_ALIYUN_ACCESS_KEY_ID_HERE
ALIYUN_ACCESS_KEY_SECRET = YOUR_ALIYUN_ACCESS_KEY_SECRET_HERE

# 腾讯云
TENCENT_CLOUD_SECRET_ID = YOUR_TENCENT_CLOUD_SECRET_ID_HERE
TENCENT_CLOUD_SECRET_KEY = YOUR_TENCENT_CLOUD_SECRET_KEY_HERE

3.在你的Python代码(app.py)中,通过 os.getenv()来读取:

import os
from dotenv import load_dotenv

load_dotenv()  # 加载 .env 文件中的环境变量

aliyun_access_key_id = os.getenv('ALIYUN_ACCESS_KEY_ID')
aliyun_access_key_secret = os.getenv('ALIYUN_ACCESS_KEY_SECRET')

安全建议

1. ​**将 `.env`文件加入 `.gitignore`**​:确保这个包含密钥的文件不会被意外提交到Git等版本控制系统上。

2. ​**定期轮换密钥**​:云平台都支持禁用旧密钥并生成新密钥。建议每隔一段时间(如3-6个月)进行一次轮换。

3. ​**离线备份**​:将密钥保存在可靠的密码管理器或离线存储中。

完成以上步骤后,你的程序就获得了安全、受控的权限来调用云平台的API,从而执行你想要的自动化操作了。

三、创建项目基础结构

3.1 创建项目根文件夹

  1. 在你喜欢的位置(例如桌面或文档文件夹),新建一个文件夹,命名为 cloud-script-manager(或其他你喜欢的名字)。

  2. 右键点击这个文件夹,选择 ​​“通过 Code 打开”​​ (如果你安装了VSCode,会出现这个选项)。这会在VSCode中打开整个项目文件夹。

(也可以在VSCode中点击 File-> Open Folder来打开它)

3.2 创建项目结构

在VSCode左侧的资源管理器中,按照下图所示的结构创建文件夹和文件。你可以在资源管理器右键点击来创建。

项目结构如下:

cloud-script-manager/    # 项目根目录
├── backend/             # Python后端目录
│   ├── app.py          # Flask应用主文件
│   ├── requirements.txt # Python依赖库列表
│   └── scripts/        # 存放各种脚本模块
│       └── aliyun_firewall.py (等以后添加)
├── frontend/           # React前端目录 (等下用命令自动生成)
└── .gitignore         # Git忽略文件 (可选,建议有)

手动创建方法:​

  1. 在VSCode中,右键点击项目根目录 cloud-script-manager-> New Folder,输入 backend

  2. 右键点击 backend文件夹 -> New Folder,输入 scripts

  3. 右键点击 backend文件夹 -> New File,输入 app.py

  4. 右键点击 backend文件夹 -> New File,输入 requirements.txt

  5. 在根目录下创建文件 .gitignore

不要手动创建frontend

3.3 初始化前端项目(使用命令)

我们将使用 create-react-app这个工具来自动生成前端项目所需的所有基础文件。

  1. 在VSCode中,点击顶部菜单 Terminal-> New Terminal。这会打开一个终端窗口,其当前路径应该是你的项目根目录。

  2. 在终端中输入以下命令并回车:

npx create-react-app frontend

这个命令会自动创建一个名为 frontend的文件夹,并在里面生成所有React需要的启动文件。​这个过程需要几分钟,请耐心等待。​

  1. 完成后,你的项目结构就会变成上面所示的样子。

在这里插入图片描述

3.4 写入最基础的初始文件

为了让项目有一个起点,我们需要在几个核心文件中写入最基础的代码。

  • 后端依赖文件 (backend/requirements.txt)​

    双击打开这个文件,将以下内容复制进去并保存。这列出了项目最初需要的Python库。

Flask==2.3.3
Flask-CORS==4.0.0
python-dotenv==1.0.0
  • 后端主程序 (backend/app.py)​

    双击打开 app.py,复制以下最基础的代码并保存。这是一个最简单的Flask服务器。

from flask import Flask
from flask_cors import CORS

app = Flask(__name__)
CORS(app)  # 允许前端连接

@app.route('/api/health')
def health_check():
    return {"status": "OK", "message": "后端服务已启动!"}

if __name__ == '__main__':
    app.run(debug=True, port=3001) # 在3001端口运行
  • Git忽略文件 (.gitignore)​

    这个文件告诉Git哪些文件不需要纳入版本管理(比如临时文件、依赖库等)。

    打开 .gitignore文件,输入以下内容:

# Python
__pycache__/
*.pyc
.env
venv/

# Node.js
frontend/node_modules/
frontend/.env

# Database
*.db
*.sqlite3

3.5 安装后端Python依赖

  1. 在VSCode的终端里,​确保当前路径是项目的 backend文件夹。你可以通过 cd backend命令进入。

  2. 输入以下命令来安装 requirements.txt里列出的库:

pip install -r requirements.txt

如果安装成功,终端会显示所有库安装完毕的信息。

在这里插入图片描述

3.6 验证 setup 是否成功

现在,让我们测试一下环境是否全部搭建成功。

  1. 启动后端服务器​:

    • 在终端中(确保路径在 backend下),输入命令:python app.py

    • 如果成功,你会看到类似 * Running on http://127.0.0.1:3001/的输出。

    在这里插入图片描述

  2. 测试API​:

    • 打开你的浏览器,访问地址:http://localhost:3001/api/health

    • 如果页面显示 {"status":"OK","message":"后端服务已启动!"},恭喜!​你的Python后端环境已就绪。​

    在这里插入图片描述
    在这里插入图片描述

  3. 停止服务器​:回到终端,按快捷键 Ctrl + C停止后端服务器。

  4. 测试前端构建环境​:

    • 在终端中输入 cd ../frontend切换到前端目录。

    • 输入命令 npm start

    • 如果成功,它会自动打开浏览器并显示一个React的欢迎页面(之后同样用 Ctrl + C停止它)。

    运行的可能比较慢,耐心等待

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

如果以上步骤全部成功,说明你的开发环境和项目基础结构已经100%搭建完成。你已经完成了从0到1最关键的一步!

接下来,我们就可以开始编写具体的功能了,比如连接阿里云SDK、制作第一个IP封禁界面等。

请不要以此视为定论,这只是我的个人经验


网站公告

今日签到

点亮在社区的每一天
去签到