Appearance
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 实践任务
- 使用 SecureCRT 登录
ZSLinux,安装 AWS CLI 并配置凭证。 - 创建 Azure RHEL VM 并验证 SSH 连接。
- 配置 GitLab Runner 和 Ansible Playbook 部署 Apache。
- 同步本地备份到 AWS S3 存储桶。
27.6 自测问题
- 问题:如何配置 AWS CLI?
- 答案:
aws configure并输入访问密钥、密钥 ID、区域。
- 答案:
- 问题:如何注册 GitLab Runner?
- 答案:
gitlab-runner register并提供 GitLab URL 和注册令牌。
- 答案:
- 问题:如何检查 Azure VM 状态?
- 答案:
az vm list --resource-group myResourceGroup
- 答案:
