はじめに
AWS CloudFormationを作成していくなかでCloudFormationのテストやCICDパイプラインを組むためのツールはあるのかという点が気になりました。その際に知ったのが「TaskCat」です。
そこで、TaskCatのラボを基にハンズオンを実施してみました。今回は環境構築~Cloud Formationのテストまでを実施しています。
注意事項
TaskCatは指定された各リージョンに実際にデプロイと削除を実施します。そのため、AWS Configの利用費が発生する可能性がございますのでご注意ください。
また、本記事ではCloud 9で実施しているためCloud 9の使用料が発生する可能性がございます。併せてご注意ください。
ハンズオン実施環境
- Python:3.7.16
- TaskCat:0.9.36
- Cloud 9
ハンズオン環境の準備
Cloud 9の構築
下記の設定でCloud 9を構築しました。
Cloud 9の構築方法はこちらからご確認ください。
TaskCatのインストール
TaskCatのインストールを行います。
python3 -m pip install taskcat
下記のコマンドでバージョンを確認できます。
taskcat --version
作業用のディレクトリを準備
今回はTaskCatで使用する作業ディレクトリを準備しました。
1.TaskCat用のディレクトリを作成します。
mkdir taskCatTest
2.作業用ディレクトリに移動
cd taskCatTest
EC2の鍵ペアを生成
今回のハンズオンではEC2の鍵ペアを生成しておく必要があります。
今回は東京リージョン(ap-northeast-1)で発行しました。
1.AWSコンソール上でAmazon EC2の画面を開きます。
[ネットワーク&セキュリティ]>[キーペア]をクリックします。
TaskCatでテストを実行
テスト対象ファイルの作成
実際にテストしたいCloudFormationを作成します。
今回はAWS CloudFormationサービステンプレートの
「Amazon VPC における単一の Amazon EC2」を使わせていただきました。
下記のコマンドでCloudFormaionに記載されている内容を「basic-VPC-sample.yaml」ファイルに
出力します。
curl https://s3.ap-northeast-1.amazonaws.com/cloudformation-templates-ap-northeast-1/VPC_Single_Instance_In_Subnet.template > basic-VPC-sample.yaml
プロジェクトレベルのテスト定義ファイルの追加
.taskcat.ymlを作成します。
project:
name: my-project
regions:
- ap-northeast-1
- ap-northeast-3
tests:
test-vpc-sample:
parameters:
InstanceType: t2.micro
KeyName: taskCatTestKey
template: ./basic-VPC-sample.yaml
- regions : テストしたいリージョンを指定します。
- parameters : CloudFormationテンプレートのParametersセクション項目の値を指定することができます。
- template : テストしたいCloudFormationファイルのパスを指定します。
テストの実行と結果の確認
下記のコマンドでテストを実行します。
taskcat test run
実行後、作業用ディレクトリの配下に「taskcat_ouputs」ディレクトリが作成されます。
ディレクトリ配下に生成されているindex.htmlファイルを右クリックし、[Preview]をクリックします。
東京リージョン(ap-northeast-1)では成功、大阪リージョン(ap-northeast-3)では失敗していることが分かります。
[View Logs]をクリックすることで失敗した理由を知ることができます。
「taskCatTestKey」という名前の鍵が無いと言われています。
EC2の鍵ペアはインポートをしないと別のリージョンで使用することはできません。
そのため失敗しています。
まとめ
今回はTaskCatでCloudFomationのテストを実施しました。
各リージョンで使えるかどうかを確認できるためとても便利だと思いました。
次はCICDパイプラインに組み込むことを試したいと思います。