在过去,自动化运维(DevOps)是一门硬核的手艺:你得熟记 Terraform 的各类 Provider 参数,闭着眼睛能写出几百行复杂的 Ansible 剧本(Playbook),还要在 Jenkins 或 GitLab Actions 的 YAML 语法里反复调试。一个标点符号写错,可能就是长达数小时的排错折腾。

随着 AI 编程神器 Cursor 的爆火,以及 GitOps(声明式自动化) 理念的普及,一种全新的运维姿势诞生了:用自然语言(中文)驱动 Cursor 智能编写基础设施代码,通过 Git 提交直接触发 CI/CD 链路自动部署。

本文将带你用国内大厂最常用的云原生技术栈(阿里云 + 极狐GitLab + 腾讯云/自建 K8s),手把手落地一个“Cursor + GitOps”的最新实战案例。


一、 核心架构:从“人肉运维”到“AI 驱动”

传统的运维链条是:需求 → 人工查文档 → 写脚本 → 手工执行(或配置复杂流水线) → 线上生效。在这个过程中,运维人员充当的是“代码翻译官”和“手工执行者”。

而 Cursor + GitOps 的新姿势则是:

  1. Cursor(AI 驱动源):通过自然语言交互,利用全仓上下文感知(Agent 模式),秒级生成或重构规范的 Ansible/Terraform 脚本。
  2. Git 仓库(唯一事实源):代码(IaC)合并进仓库,触发自动化代码审查(Code Review)与安全扫描。
  3. GitOps/CD 引擎(自动化执行端):流水线自动跑测试、跑部署,确保线上状态与 Git 仓库严格一致,实现“所见即所得,所改即所部署”。

[ 运维人员 (自然语言) ] 
       │
       ▼
[ Cursor (AI 智能生成) ] ──(生成 IaC/Ansible 代码)──► [ Git 仓库 (极狐GitLab) ]
                                                              │
                                                      (Webhook 触发流水线)
                                                              │
                                                              ▼
                                                    [ 极狐GitLab CI/CD ]
                                                              │
                                                      (执行部署与配置)
                                                              │
                                       ┌──────────────────────┴──────────────────────┐
                                       ▼                                             ▼
                             [ Terraform 自动拉起 ]                         [ Ansible 自动初始化 ]
                                       │                                             │
                                       ▼                                             ▼
                             【 阿里云 ECS 实例 】                         【 高可用 Nginx 服务 】

二、 实战演练:一键拉起阿里云 ECS 并用 Ansible 初始化环境

国外原版场景:使用 Terraform 购买 AWS EC2,通过 GitHub Actions 部署,再用 Ansible 配置。
国内本地化改造:使用 Terraform 购买 阿里云 ECS,通过 极狐GitLab CI/CD 执行,配合 Ansible 部署国内高可用的 Nginx 服务。

步骤 1:用 Cursor 盲写 Terraform 脚本(基础设施即代码)

打开 Cursor,在你的空白项目根目录下,按下 Cmd + I 开启 Composer(全仓 Agent 模式)。向 Cursor 输入以下中文 Prompt:

运维指令:
我想在阿里云的华东 2(上海)地域,使用 Terraform 创建一个专有网络(VPC)、一个交换机(VSwitch),并购买一台按量付费的 ECS 实例。
要求:

  1. 实例规格使用 ecs.g6.large(2核8G),镜像用 Ubuntu 22.04 64位。
  2. 安全组开放 22 和 80 端口。
  3. 所有认证凭证(AccessKey/SecretKey)使用变量引入,不要硬编码。
  4. 输出(Output)ECS 的公网 IP,方便后续 Ansible 调用。
  5. 自动生成 provider.tf, vpc.tf, ecs.tf, variables.tf, outputs.tf 五个文件。

Cursor 的全仓 Agent 模式会自动在你的工作区生成完整的代码目录。我们来看关键文件的细节:

# provider.tf
terraform {
  required_providers {
    alicloud = {
      source  = "aliyun/alicloud"
      version = "~> 1.210.0" # 自动选择国内适配的成熟版本
    }
  }
}

provider "alicloud" {
  access_key = var.alicloud_access_key
  secret_key = var.alicloud_secret_key
  region     = "cn-shanghai"
}

# outputs.tf
# 这一步至关重要,它是打通 Terraform 与 Ansible 的数据桥梁
output "ecs_public_ip" {
  value       = alicloud_instance.web_server.public_ip
  description = "The public IP of the newly created ECS instance"
}

  • 💡 提效小动作:如果在生成过程中,你发现阿里云的 zone_id(可用区)填错了,无需手动改。直接在代码行上按下 Cmd + K,输入:“改成华东 2 的 g 可用区”,Cursor 会自动秒级替换并修正依赖关系。

步骤 2:用 Cursor 编写 Ansible 剧本(应用配置管理)

ECS 资源创建好后,我们需要对其进行环境初始化(安装并配置 Nginx)。

继续在 Cursor 中对话:

运维指令:
帮我写一个 Ansible Playbook 用于环境初始化。

  1. 在目标主机上安装最新版的 Nginx。
  2. 考虑到国内网络,在安装前将 Ubuntu 的软件源替换为阿里云镜像源。
  3. 修改默认的 index.html,内容包含“Welcome to Cursor + GitOps Auto Deploy!”。
  4. 启动并开机自启 Nginx 服务。
  5. 生成 deploy.yaml 剧本。

Cursor 生成的 Ansible 剧本充分考虑了“国内网络优化”的潜台词:

# deploy.yaml
- name: Initialize Web Server via Ansible
  hosts: webservers
  become: yes
  gather_facts: no
  tasks:
    - name: 替换 Ubuntu 软件源为阿里云镜像 (国内加速)
      shell: |
        sed -i 's/://ubuntu.com' /etc/apt/sources.list
        sed -i 's/://ubuntu.com' /etc/apt/sources.list
      tags: setup_repo

    - name: 更新 APT 缓存并安装 Nginx
      apt:
        name: nginx
        state: present
        update_cache: yes

    - name: 定制国内高可用 Web 欢迎页
      copy:
        content: "<h1>Welcome to Cursor + GitOps Auto Deploy!</h1>"
        dest: /var/www/html/index.html
        mode: '0644'

    - name: 确保 Nginx 启动并开机自启
      systemd:
        name: nginx
        state: started
        enabled: yes

步骤 3:打通极狐GitLab CI/CD 链路(自动化闭环)

有了脚本,怎么让它自动跑起来?我们需要配置极狐GitLab 的流水线文件 .gitlab-ci.yml

在 Cursor 中按下 Cmd + K 选中一个新文件,输入:

运维指令:
帮我写一个极狐GitLab CI/CD 流水线文件 .gitlab-ci.yml
包含两个阶段:

  1. infra_validate:对 Terraform 代码进行格式化和合规性验证。
  2. infra_deploy:仅在 main 分支被合并时触发,自动执行 terraform apply 部署阿里云资源。
  3. 部署成功后,提取 Terraform 的 outputs 中的公网 IP,动态写入 Ansible 的 hosts 清单,并执行 deploy.yaml 动态初始化。
  4. 所有的敏感凭证均从极狐GitLab 的环境变量中读取。

Cursor 生成的流水线逻辑极其丝滑:

stages:
  - infra_validate
  - infra_deploy

variables:
  # 凭证直接映射,不落盘,保障安全
  TF_VAR_alicloud_access_key: $ALIYUN_AK
  TF_VAR_alicloud_secret_key: $ALIYUN_SK

infra_validate:
  stage: infra_validate
  image: hashicorp/terraform:latest
  script:
    - terraform init
    - terraform validate

infra_deploy:
  stage: infra_deploy
  image: alpine:latest
  before_script:
    # 动态安装运维所需核心工具链
    - apk add --no-cache terraform ansible openssh-client
    # 配置 SSH 密钥,允许 GitLab Runner 登录新拉起的 ECS
    - eval $(ssh-agent -s)
    - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add -
    - mkdir -p ~/.ssh
    - chmod 700 ~/.ssh
    - echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config
  script:
    - terraform init
    - terraform apply -auto-approve
    # 【核心打通链路】: 动态提取 IP 并生成 Ansible 动态 Inventory
    - export ECS_IP=$(terraform output -raw ecs_public_ip)
    - echo "[webservers]" > hosts.ini
    - echo "$ECS_IP ansible_user=root" >> hosts.ini
    - # 执行 Ansible 剧本
    - ansible-playbook -i hosts.ini deploy.yaml
  only:
    - main

三、 实战避坑:国内研发环境的“三大隐藏副本”

在国外使用这套流程可能一路畅通,但在国内落地时,AI 往往因为“缺乏本土互联网常识”而导致脚本报错。请记住以下三大优化绝招:

1. Provider 的中国区加速

Terraform 在执行 terraform init 时,默认需要前往 HashiCorp 官方的 Registry 下载阿里云的 Provider 插件。国内环境如果不配置 Mirror,流水线经常因网络超时而卡死报错。

  • Cursor 修正指令:“请帮我编写一个 ~/.terraformrc 配置文件架构,在其中配置国内的 Terraform 镜像加速源(例如中国科学技术大学开源镜像站),并告诉我怎么在 GitLab CI 流水线中动态注入它。”

2. 严格的 .cursorignore(杜绝敏感密钥上云)

GitOps 最忌讳的就是不小心把测试环境的本地凭证(如 terraform.tfstate.env 或腾讯云/阿里云的本地凭证文件)直接误操作推送到公开 Git 仓库,造成严重的资损事故。

  • 安全规范:在项目根目录创建 .cursorignore 文件,将所有敏感和本地缓存文件彻底排除在 AI 的扫描范围之外:
    .terraform/
    *.tfstate
    *.tfstate.backup
    .env
    *.pem
    

3. “状态自愈”与回滚机制

GitOps 的核心精髓是声明式(Declarative)。一旦线上运行的 ECS 或服务被人在阿里云控制台上恶意修改或手动误删,GitOps 引擎在下一次流水线运行时,会自动检测到这种“状态漂移(Drift)”。Terraform 会自动计算差值,在线上“补齐”被删掉的资源;如果是代码写错了导致部署失败,只需在极狐GitLab 中一键 Revert 上一次的 Git 提交,流水线就会自动恢复到上一个稳定版本的架构状态。

四、 总结:运维人员的思维升级

“Cursor + GitOps” 的本质,是把编写代码的体力活交给了 AI,把执行部署的体力活交给了 GitOps 流水线。

对于国内的运维工程师(SRE)而言,你的核心价值从“熟练背诵命令、手工编写 YAML/HCL 脚本”升级为了“全局架构设计、Prompt 调优、安全审计(Code Review)与全链路闭环编排”。你不再是那个半夜爬起来战战兢兢敲命令的苦力,而是坐在副驾驶上,用自然语言指挥 AI 战队的“自动化架构师”。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐