クラウドインフラストラクチャの自動化は、迅速な環境構築と運用の効率化、人的エラーの削減に貢献します。手作業での構成や設定を避けることで、システムの再現性を高め、開発のスピードも向上させられます。AWSやGoogle Cloud Platform (GCP) などの主要なクラウドサービスプロバイダーは、自動化に適したコマンドラインインターフェース (CLI) を提供しています。
この記事では、AWS CLIとGoogle Cloud CLIを使ったクラウドインフラストラクチャの自動化手法について解説し、具体的な活用例やベストプラクティスを紹介します。
AWS CLIとGoogle Cloud CLIの概要
AWS CLIとGoogle Cloud CLIは、それぞれAWSとGoogle Cloud Platformの管理操作をコマンドライン上で実行できるツールです。
AWS CLI
AWS CLIは、AWSサービスをコマンドラインで管理するためのツールです。主な特徴は以下の通りです。
- 多くのAWSサービスに対応
- スクリプトを利用した一括操作や自動化が可能
- SDKと組み合わせてプログラムからの操作が可能
Google Cloud CLI
Google Cloud CLI (またはgcloud CLI
) は、GCPリソースの管理を効率化するコマンドラインツールです。主な特徴は以下の通りです。
- GCPのほぼ全サービスに対応
- スクリプトによる効率的な操作が可能
- クロスプラットフォーム対応
AWS CLIとGoogle Cloud CLIのインストールと設定
AWS CLIとGoogle Cloud CLIを使用するには、それぞれのツールのインストールと設定が必要です。
AWS CLIのインストールと設定
AWS CLIをインストールします(Linux/Macの場合):
curl "https://awscli.amazonaws.com/AWSCLIV2.pkg" -o "AWSCLIV2.pkg"
sudo installer -pkg AWSCLIV2.pkg -target /
設定コマンドを実行します:
aws configure
アクセスキーやリージョンを入力することで、AWS CLIが利用できるようになります。
Google Cloud CLIのインストールと設定
Google Cloud CLIをインストールします(Linux/Macの場合):
curl -O https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-sdk-367.0.0-darwin-x86_64.tar.gz
tar zxvf google-cloud-sdk-367.0.0-darwin-x86_64.tar.gz
./google-cloud-sdk/install.sh
認証と設定を行います:
gcloud init
AWS CLIとGoogle Cloud CLIでインフラを自動構築する
AWS CLIやGoogle Cloud CLIを使って、一般的なインフラストラクチャ(仮想マシン、ネットワーク、ストレージ)を簡単に構築する方法を見ていきましょう。
AWS CLIでのEC2インスタンスの作成
AWS CLIを使用してEC2インスタンスを作成するには、以下のようなコマンドを実行します。
aws ec2 run-instances --image-id ami-12345abc --count 1 --instance-type t2.micro --key-name MyKeyPair --security-group-ids sg-12345 --subnet-id subnet-12345
このコマンドでは、指定したAMI ID、インスタンスタイプ、キーペア、セキュリティグループ、サブネットに基づきインスタンスが作成されます。
Google Cloud CLIでのCompute Engineインスタンスの作成
GCPで同様に仮想マシンを作成するには、以下のようなgcloud
コマンドを使用します。
gcloud compute instances create my-vm --zone=us-central1-a --machine-type=e2-medium --subnet=default --image-family=debian-10 --image-project=debian-cloud
このコマンドで、指定されたゾーン、マシンタイプ、サブネット、イメージに基づいてインスタンスが作成されます。
AWS CLIとGoogle Cloud CLIを組み合わせたワークフローの自動化
AWS CLIとGoogle Cloud CLIを組み合わせて複数のクラウドプロバイダーでインフラストラクチャを管理することも可能です。例えば、AWSにS3バケットを作成し、GCPにデータをバックアップする自動化システムを構築することができます。
例: AWSからGCPへのデータ転送
S3バケットにデータを保存する:
aws s3 cp myfile.txt s3://my-bucket
GCP Storageにデータを転送する:
gsutil cp s3://my-bucket/myfile.txt gs://my-gcp-bucket
このようにして、AWSとGCPを連携させることができます。
CLIスクリプトによる自動化の例
以下は、AWSとGCPの両方に対するリソースを管理する簡単なスクリプトです。
#!/bin/bash
# AWSにS3バケットを作成
aws s3 mb s3://my-backup-bucket
# Google CloudでCompute Engineインスタンスを起動
gcloud compute instances create my-backup-vm --zone=us-central1-a --machine-type=e2-medium
# S3バケットのデータをGCP Storageにコピー
aws s3 cp s3://my-backup-bucket/myfile.txt gs://my-gcp-backup
このスクリプトを実行することで、S3バケットとGCPのストレージを連携させたデータの自動転送が可能になります。
セキュリティとベストプラクティス
クラウドインフラストラクチャの自動化においては、セキュリティも非常に重要です。AWS CLIとGoogle Cloud CLIを使用する際のベストプラクティスとして、以下の点に留意しましょう。
- 最低限の権限でアクセスキーやアカウントを使用する。
- IAMロールを活用して一時的なアクセス権を付与する。
- APIキーやシークレットをコードにハードコーディングしない。
まとめと今後の展望
AWS CLIとGoogle Cloud CLIの使い方を習得することで、クラウドインフラストラクチャの自動化が容易になります。
これにより、リソース管理の効率を向上させ、より柔軟なシステム運用が可能です。
さらに、異なるクラウドプロバイダー間の連携も容易に行えるため、ハイブリッドクラウドやマルチクラウド戦略にも応用できます。
演習問題
問題1
AWS CLIを使用して、以下の条件でEC2インスタンスを作成するコマンドを書いてください。
- AMI ID:
ami-0abcdef1234567890
- インスタンスタイプ:
t2.micro
- キーペア名:
myKey
- セキュリティグループ:
sg-123abc
- サブネットID:
subnet-0abcd1234
問題2
Google Cloud CLIを使用して、以下の条件でCompute Engineインスタンスを作成するコマンドを書いてください。
- インスタンス名:
my-instance
- ゾーン:
us-west1-b
- マシンタイプ:
n1-standard-1
- イメージファミリー:
ubuntu-1804-lts
- イメージプロジェクト:
ubuntu-os-cloud
問題3
AWS S3に保存したファイルをGoogle Cloud Storageに転送するシェルスクリプトを作成してください。ファイル名は data.txt
とし、AWSのバケット名をmy-aws-bucket
、Google Cloudのバケット名をmy-gcp-bucket
としてください。
解答例
解答1
aws ec2 run-instances --image-id ami-0abcdef1234567890 --count 1 --instance-type t2.micro --key-name myKey --security-group-ids sg-123abc --subnet-id subnet-0abcd1234
解答2
gcloud compute instances create my-instance --zone=us-west1-b --machine-type=n1-standard-1 --image-family=ubuntu-1804-lts --image-project=ubuntu-os-cloud
解答3
#!/bin/bash
# S3バケットからファイルをコピー
aws s3 cp s3://my-aws-bucket/data.txt .
# GCPバケットにファイルをアップロード
gsutil cp data.txt gs://my-gcp-bucket