跳转至

26- 云与混合环境集成(AWS CLI、Azure CLI、gcloud) ☁️

前提条件 ✅

  • 已完成容器与虚拟化基础(Docker/Podman/LXC/KVM 至少有一项熟练)
  • 以 ops 用户登录(具有 sudo 权限)
  • 系统运行在 Debian 12 Bookworm
  • 需要真实云账号(AWS、Azure、GCP)用于测试(学习环境可创建免费层账号)
  • 建议:使用 /data 目录存放凭证配置文件(加密存储)
  • 防火墙无需额外放行(CLI 工具均为出站 HTTPS)

详细步骤 🛠️

  1. AWS CLI(Amazon Web Services 命令行工具)

安装最新版(Debian 仓库版本可能较旧):

sudo apt update
sudo apt install -y unzip curl
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
unzip awscliv2.zip
sudo ./aws/install --update
aws --version   # 应显示 aws-cli/2.x.x

配置访问凭证(强烈推荐使用 IAM 用户而非 root):

aws configure
# 输入 AWS Access Key ID、Secret Access Key、Default region name (如 ap-northeast-2)、Default output format (json)

常用命令测试:

aws sts get-caller-identity                  # 验证身份
aws ec2 describe-regions --output table      # 列出所有区域
aws s3 ls                                    # 列出 S3 桶(需有权限)

  1. Azure CLI(Microsoft Azure)

安装:

curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az --version

登录:

az login
# 浏览器会打开登录页面,完成 Azure 账号认证

常用命令测试:

az account show                          # 当前订阅信息
az account list-locations -o table       # 列出所有区域
az group list -o table                   # 列出资源组

无交互登录(CI/CD 场景):

az login --service-principal -u <appId> -p <password> --tenant <tenantId>

  1. gcloud CLI(Google Cloud Platform)

安装:

echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key --keyring /usr/share/keyrings/cloud.google.gpg add -
sudo apt update && sudo apt install -y google-cloud-cli
gcloud version

初始化:

gcloud init
# 浏览器登录 → 选择项目 → 配置默认区域/区域组

常用命令测试:

gcloud auth list                         # 当前认证账号
gcloud config list                       # 当前配置
gcloud projects list                     # 列出项目
gcloud compute zones list                # 列出可用区

  1. 凭证安全管理(生产必须)

不要明文存储 Access Key / Secret Key。

推荐方式: - 使用环境变量(临时)

export AWS_ACCESS_KEY_ID=AKIA...
export AWS_SECRET_ACCESS_KEY=...
- 推荐:IAM 角色(EC2/ECS/EKS 实例角色、AWS SSO) - 推荐:gcloud ADC(Application Default Credentials) - 推荐:Azure Managed Identity 或 Service Principal + Key Vault - 加密存储:使用 pass、bitwarden-cli 或 gpg 加密 ~/.aws/credentials

  1. 多云统一管理小技巧

安装 aws-vault(可选,加密管理凭证):

sudo apt install -y aws-vault
aws-vault add default

常用多云脚本示例:

#!/bin/bash
echo "AWS:"
aws sts get-caller-identity
echo "Azure:"
az account show --query name
echo "GCP:"
gcloud config get-value account

实践任务 🎯

  1. 安装 AWS CLI,完成 aws configure,运行 aws sts get-caller-identity 验证
  2. 安装 Azure CLI,用 az login 登录,列出你的订阅和资源组
  3. 安装 gcloud CLI,用 gcloud init 配置项目,列出当前项目下的计算实例
  4. 创建一个简单 shell 脚本,同时输出三个云平台的当前身份信息

自测问题 ❓

  1. AWS CLI v2 相比 v1 的主要改进是什么?
  2. az login 和 gcloud init 的认证流程有何异同?
  3. 生产环境中为什么强烈不建议把 Access Key 直接写在脚本里?
  4. 如何在 AWS CLI 中切换不同的 profile(--profile 参数作用)?

总结 📌

AWS CLI、Azure CLI、gcloud 是多云/混合云运维的必备工具,能实现基础设施即代码(IaC)、自动化部署、资源巡检。
本章建立了三大公有云 CLI 的安装、配置、基本使用能力,为后续自动化(Ansible)、镜像管理(Packer)、云原生迁移奠定基础。
生产环境中优先使用角色/身份联邦,避免长期凭证泄露风险。