跳转至

26. 云与混合环境集成

本章节指导在 RHEL 9(主机名 LinuxDC)上使用 SecureCRT 配置云平台和 CI/CD 环境,配合 SecureFX 传输配置文件。内容涵盖 RHEL 在 AWS/Azure/GCP 的配置、混合云存储集成以及 GitLab CI 与 Ansible 的 CI/CD 配置,以启动云实例和运行 CI/CD 管道为例,全面实用,适合初学者快速掌握和运维人员日常维护。所有操作在 LinuxDC 环境中测试,确保实验一致性。


26.1 前提条件

  • RHEL 9 已安装(参考第 1 章),主机名设置为 LinuxDC
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 9 章)。
  • 使用 SecureFX 传输文件(SFTP 协议)。
  • 具有 root 或 sudo 权限。
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 2 和第 5 章)。
  • 防火墙和 SELinux 启用(参考第 12 章)。
  • 网络连接正常,时间同步配置完成(参考第 4 章)。
  • 云账户凭证准备(AWS Access Key、Azure Subscription ID、GCP Service Account Key)。
  • GitLab 实例可用(自建或 SaaS),Ansible 已安装(参考第 27 章)。

💡 提示:云集成需 API 凭证和权限设置。在 RHEL 10 中,云 CLI 工具支持更多自动化身份验证和集成 Lightspeed AI 辅助配置,提升混合环境管理效率。


26.2 云平台配置

26.2.1 AWS 配置

  • 安装 AWS CLI:

    dnf install -y awscli  # 安装 AWS CLI
    

  • 配置凭证:

    aws configure  # 输入 Access Key ID、Secret Access Key、默认区域(如 us-east-1)和输出格式(如 json)
    

  • 启动 RHEL 实例:

    aws ec2 run-instances --image-id ami-0abcdef1234567890 --count 1 --instance-type t2.micro --key-name MyKeyPair --subnet-id subnet-abcdef123  # 启动实例(替换 AMI ID 等)
    aws ec2 describe-instances --instance-ids i-0123456789abcdef0  # 检查实例状态
    

  • SSH 连接实例:

    ssh -i MyKeyPair.pem ec2-user@ec2-public-ip  # 连接 AWS 实例
    

🧠 知识点:使用 Red Hat 提供的 AMI 确保兼容。验证:aws ec2 describe-instances 显示 Running。

26.2.2 Azure 配置

  • 安装 Azure CLI:

    dnf install -y azure-cli  # 安装 Azure CLI
    az login  # 登录 Azure 账户
    

  • 创建资源组和 RHEL VM:

    az group create --name myResourceGroup --location eastus  # 创建资源组
    az vm create --resource-group myResourceGroup --name myVM --image RHEL --admin-username azureuser --admin-password securepass --size Standard_B1s  # 创建 RHEL VM
    az vm list --resource-group myResourceGroup  # 检查 VM 状态
    

  • SSH 连接 VM:

    ssh azureuser@<public-ip>  # 连接 Azure VM
    

💡 提示:使用 Red Hat 的 Azure 镜像。清理:az group delete --name myResourceGroup

26.2.3 GCP 配置

  • 安装 Google Cloud SDK:

    dnf install -y google-cloud-sdk  # 安装 GCP CLI
    gcloud auth login  # 登录 GCP 账户
    gcloud config set project my-project-id  # 设置项目
    

  • 创建 RHEL 实例:

    gcloud compute instances create my-instance --image-family rhel-9 --image-project rhel-cloud --machine-type e2-micro --zone us-central1-a  # 创建实例
    gcloud compute instances list  # 检查实例状态
    

  • SSH 连接实例:

    gcloud compute ssh my-instance --zone us-central1-a  # 连接 GCP 实例
    

🧠 知识点:使用 Red Hat 的 GCP 镜像确保订阅兼容。


26.3 混合云存储集成

  • 配置 AWS S3 同步(示例:备份到 S3):

    aws s3 mb s3://my-backup-bucket  # 创建桶
    aws s3 sync /backup s3://my-backup-bucket  # 同步本地备份到 S3
    

  • 配置 Azure Blob 存储:

    az storage account create --resource-group myResourceGroup --name mystorageacct --location eastus --sku Standard_LRS  # 创建存储账户
    az storage container create --name mycontainer --account-name mystorageacct  # 创建容器
    az storage blob upload --account-name mystorageacct --container-name mycontainer --name backup.tar.gz --file /backup/backup.tar.gz  # 上传文件
    

  • 配置 GCP Cloud Storage:

    gsutil mb gs://my-backup-bucket/  # 创建桶
    gsutil cp /backup/backup.tar.gz gs://my-backup-bucket/  # 上传文件
    

检查点aws s3 ls s3://my-backup-bucket 或类似命令显示文件。

💡 提示:混合云存储支持加密(如 --sse AES256)。在 RHEL 10 中,存储 CLI 支持更多多云统一接口。


26.4 CI/CD 配置(GitLab CI 与 Ansible)

26.4.1 配置 GitLab Runner

  • 安装 GitLab Runner:
    dnf install -y gitlab-runner  # 安装 Runner
    gitlab-runner register --url https://gitlab.example.com --registration-token <token> --executor shell --description "LinuxDC Runner"  # 注册 Runner
    systemctl enable --now gitlab-runner  # 启用服务
    

26.4.2 配置 Ansible Playbook(示例:部署 Apache)

  • 安装 Ansible:

    dnf install -y ansible  # 安装 Ansible
    

  • 创建 Playbook:

    vim deploy-apache.yml
    # 示例内容:
    ---
    - hosts: all
      tasks:
        - name: Install Apache
          dnf:
            name: httpd
            state: latest
        - name: Start Apache
          service:
            name: httpd
            state: started
            enabled: yes
    ansible-playbook deploy-apache.yml  # 测试运行
    

  • 配置 .gitlab-ci.yml(GitLab 项目中):

    stages:
      - deploy
    deploy-apache:
      stage: deploy
      script:
        - ansible-playbook -i inventory deploy-apache.yml
    

🧠 知识点:GitLab CI 使用 Runner 执行管道,Ansible 自动化部署。库存文件(inventory):列出目标主机。

检查点:Runner 注册成功,管道运行部署 Apache。


26.5 常见问题与排查

🔍 故障排查

  • 问题 1:云 CLI 认证失败
    解决:检查凭证(aws configure listaz account showgcloud auth list),权限。

  • 问题 2:存储同步错误
    解决:验证桶存在(aws s3 ls)、访问密钥、日志(journalctl -u <service>)。

  • 问题 3:GitLab Runner 未注册
    解决gitlab-runner status,检查 token、URL。

  • 问题 4:Ansible Playbook 失败
    解决ansible-playbook --syntax-check,检查库存、SSH 连接。

  • 问题 5:端口/SELinux 问题
    解决:检查防火墙(firewall-cmd --list-ports)或 SELinux(ausearch -m avc)。


26.6 实践任务

  1. 使用 SecureCRT 通过 SSH(端口 2222)登录 LinuxDC,安装 AWS CLI 并配置凭证。
  2. 创建 Azure RHEL VM 并验证 SSH 连接。
  3. 配置 GitLab Runner 和 Ansible Playbook 部署 Apache。
  4. 同步本地备份到 AWS S3 存储桶。

检查点:云实例运行,Runner 注册,Playbook 部署成功,备份同步。


26.7 自测问题

  • 问题 1:如何配置 AWS CLI?
    答案aws configure 并输入访问密钥、密钥 ID、区域。

  • 问题 2:如何注册 GitLab Runner?
    答案gitlab-runner register 并提供 GitLab URL 和注册令牌。

  • 问题 3:如何检查 Azure VM 状态?
    答案az vm list --resource-group myResourceGroup


🧾 总结
本章完整介绍了 RHEL 9 云与混合环境集成的配置,包括主要云平台、存储同步和 CI/CD 管道。这些技能实现自动化运维与系统演进,形成教程闭环。