Skip to content

27. 云与混合环境集成

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

27.1 前提条件

  • RHEL 8.10 已安装(参考第 1 章),主机名设置为 ZSLinux.
  • 使用 SecureCRT 登录(SSH2 协议,端口 2222,参考第 6 章).
  • 使用 SecureFX 传输文件(SFTP 协议).
  • 具有 root 或 sudo 权限.
  • 系统已订阅并启用 RHEL 和 EPEL 仓库(参考第 4 和 7 章).
  • 防火墙和 SELinux 启用(参考第 13 章).
  • 网络连接正常,时间同步配置完成(参考第 3 章).
  • 云平台账户(AWS, Azure, GCP)已创建,API 凭证已准备.

27.2 云平台集成

27.2.1 配置 AWS

  • 安装 AWS CLI:
    bash
    dnf install -y awscli  # 安装 AWS 命令行工具
  • 配置 AWS 凭证:
    bash
    aws configure  # 配置 AWS 访问密钥、密钥 ID、区域(如 us-east-1)
    # 示例输入:
    # AWS Access Key ID: AKIAXXXXXXXXXXXX
    # AWS Secret Access Key: XXXXXXXXXXXXXXXXXXXX
    # Default region name: us-east-1
    # Default output format: json
  • 验证 AWS 凭证:
    bash
    aws sts get-caller-identity  # 验证 AWS 凭证有效性
  • 启动 RHEL 实例:
    bash
    aws ec2 run-instances --image-id ami-0c55b159cbfafe1f0 --instance-type t3.micro --key-name my-key --security-group-ids sg-1234567890abcdef0  # 启动 RHEL 8 EC2 实例

27.2.2 配置 Azure

  • 安装 Azure CLI:
    bash
    dnf install -y azure-cli  # 安装 Azure 命令行工具
  • 登录 Azure:
    bash
    az login  # 使用浏览器登录 Azure 账户
  • 创建 RHEL 虚拟机:
    bash
    az vm create --resource-group myResourceGroup --name rhel-vm --image RedHat:RHEL:8-lvm-gen2:latest --admin-username azureuser --generate-ssh-keys  # 创建 RHEL 8 虚拟机

27.2.3 配置 GCP

  • 安装 Google Cloud SDK:
    bash
    dnf install -y google-cloud-sdk  # 安装 GCP 命令行工具
  • 配置 GCP 凭证:
    bash
    gcloud init  # 初始化并登录 GCP 账户
  • 创建 RHEL 实例:
    bash
    gcloud compute instances create rhel-vm --machine-type=e2-micro --image-family=rhel-8 --image-project=rhel-cloud --zone=us-central1-a  # 创建 RHEL 8 实例

27.2.4 混合云存储集成

  • 配置 AWS S3 存储(示例:同步本地备份到 S3):
    bash
    aws s3 mb s3://my-backup-bucket  # 创建 S3 存储桶
    aws s3 sync /backup s3://my-backup-bucket  # 同步本地备份到 S3
  • 配置防火墙:
    bash
    firewall-cmd --permanent --add-port=443/tcp  # 允许 HTTPS 访问云服务
    firewall-cmd --reload  # 应用防火墙规则

27.3 CI/CD 配置

27.3.1 集成 GitLab CI 与 Ansible

  • 安装 GitLab Runner:
    bash
    dnf install -y gitlab-runner  # 安装 GitLab Runner
    systemctl enable --now gitlab-runner  # 启用并启动 GitLab Runner 服务
  • 注册 GitLab Runner:
    bash
    gitlab-runner register  # 注册 Runner(需提供 GitLab URL 和注册令牌)
    # 示例输入:
    # GitLab instance URL: http://gitlab.example.com
    # Registration token: XXXXXXXXXXXXXXXXXXXX
    # Executor: shell
  • 配置 Ansible:
    bash
    dnf install -y ansible  # 安装 Ansible
    vim /etc/ansible/hosts  # 编辑 Ansible 主机清单
    # 添加:
    [webservers]
    192.168.1.101
  • 创建 GitLab CI 管道(示例:部署 Apache):
    bash
    vim /path/to/repo/.gitlab-ci.yml  # 创建 GitLab CI 配置文件
    # 添加:
    stages:
      - deploy
    deploy_job:
      stage: deploy
      script:
        - ansible-playbook -i /etc/ansible/hosts playbook.yml
    vim /path/to/repo/playbook.yml  # 创建 Ansible Playbook
    # 添加:
    ---
    - hosts: webservers
      tasks:
        - name: Install httpd
          yum:
            name: httpd
            state: present
        - name: Start httpd
          service:
            name: httpd
            state: started
            enabled: yes

27.3.2 容器化部署流程

  • 使用 Podman 部署容器化应用(参考第 18 章):
    bash
    podman pull registry.access.redhat.com/ubi8/httpd-24  # 拉取 RHEL 8 UBI 镜像
    podman run -d -p 8080:8080 --name ci-web registry.access.redhat.com/ubi8/httpd-24  # 运行容器

27.4 验证

  • 验证 AWS:
    bash
    aws ec2 describe-instances  # 检查 EC2 实例状态
    ssh -i my-key.pem ec2-user@<instance-ip>  # 测试实例 SSH 连接
  • 验证 Azure:
    bash
    az vm list --resource-group myResourceGroup  # 检查 Azure VM 状态
    ssh azureuser@<vm-public-ip>  # 测试 VM SSH 连接
  • 验证 GCP:
    bash
    gcloud compute instances list  # 检查 GCP 实例状态
    gcloud compute ssh rhel-vm --zone=us-central1-a  # 测试实例 SSH 连接
  • 验证 S3 存储:
    bash
    aws s3 ls s3://my-backup-bucket  # 检查 S3 存储桶内容
  • 验证 CI/CD:
    bash
    gitlab-runner status  # 检查 GitLab Runner 状态
    podman ps -a  # 检查容器状态
    curl http://localhost:8080  # 测试容器化应用
  • 测试 SSH 连接:
    bash
    ssh -p 2222 testuser@ZSLinux  # 测试 SSH 连接(参考第 6 章)
  • 常见问题:
    • 云凭证无效:检查 aws configure, az login, 或 gcloud init 配置。
    • CI/CD 管道失败:查看 GitLab Runner 日志(journalctl -u gitlab-runner)或 Ansible playbook 语法(ansible-playbook --syntax-check)。
    • 容器无法访问:确认防火墙(firewall-cmd --list-ports)或 SELinux(ausearch -m avc)。

27.5 实践任务

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

27.6 自测问题

  • 问题:如何配置 AWS CLI?
    • 答案aws configure 并输入访问密钥、密钥 ID、区域。
  • 问题:如何注册 GitLab Runner?
    • 答案gitlab-runner register 并提供 GitLab URL 和注册令牌。
  • 问题:如何检查 Azure VM 状态?
    • 答案az vm list --resource-group myResourceGroup

Released under the MIT License.