この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、コンサル部の望月です。
Image Builder おじさん化し、2本ブログを更新しました。
[re:Invent 2019] EC2 Image Builder でコンポーネントを作成してみた #reinvent
[re:Invent 2019] EC2 Image Builder で S3 からコンテンツをデプロイしてみた #reinvent
今回は、複数コンポーネントをイメージパイプラインで実行してみたいと思います。前回のコンポーネントで、OS アップデート、Apache インストール、コンテンツデプロイと行っていたので、これらの処理を 3 つのコンポーネントで分ける形で実行してみたいと思います。
上記、2 本のブログでやった内容は本ブログでは詳しく触れないため、不明な点がある場合は上記ブログを参照いただくのがよいかと思います。
やってみた
コンポーネントの作成
コンポーネントの作成方法については、最初に紹介した 2 本のブログを参考にしてください。
ここでは Definition document に記入する内容について、説明します。
- OSアップデートコンポーネント
- build
- OSの最新化
- build
name: OS Update
description: This is OS Update testing document.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: InstallLinuxUpdate
action: UpdateOS
- Apache インストールコンポーネント
- build
- Apache のインストール、有効化
- validate
- パッケージがインストールされたかの確認
- test
- 80 番ポートへ接続できることの確認
- build
name: Install Apache
description: This is Install Apache testing document.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: InstallApache
action: ExecuteBash
inputs:
commands:
- sudo yum install httpd -y
- sudo systemctl enable httpd
- sudo systemctl start httpd
- name: validate
steps:
- name: CheckApache
action: ExecuteBash
inputs:
commands:
- rpm -qi httpd
- name: test
steps:
- name: TestApache
action: ExecuteBash
inputs:
commands:
- curl localhost
- コンテンツデプロイコンポーネント
- build
- コンテンツの配置
- <バケット名> は自分の環境に合わせてください。
- コンテンツの配置
- validate
- コンテンツが配置されたかの確認
- test
- 80 番ポートへ接続し、HTTPステータスコードが 200 を返すことを確認
- build
name: Contents Deploy
description: This is Contents Deploy testing document.
schemaVersion: 1.0
phases:
- name: build
steps:
- name: ContentsDeploy
action: S3Download
maxAttempts: 3
inputs:
- source: s3://<バケット名>/contents/*
destination: /var/www/html/
- name: validate
steps:
- name: CheckContents
action: ExecuteBash
inputs:
commands:
- ls /var/www/html/*html
- name: test
steps:
- name: TestContents
action: ExecuteBash
inputs:
commands:
- HTTP_STATUS=`curl -I localhost -o /dev/null -w '%{http_code}\n' -s`; if [ $HTTP_STATUS -eq 200 ]; then echo $?; else echo $?; fi
- コンポーネントが 3 つ作成されたことを確認
イメージパイプラインの作成
イメージパイプラインの作成時に先程バージョンアップしたコンポーネントを指定します
- イメージパイプライン内の Build components から 『Browse Build components』をクリック
- Select build components から検索条件を『Created by me』に変更し、作成した 3 つのコンポーネントを選択する
- イメージパイプラインを作成したら『Run pipeline』を選択し、パイプラインを実行します
AMI の確認
EC2 サービスページから AMI が作成されていることを確認します。
- AMI を確認し、起動する
- 起動したインスタンスへアクセスし、デプロイしたコンテンツのページが表示されることを確認します
まとめ
EC2 Image Builder を使って複数コンポーネントを実行を行うことができました。
このようにコンポーネントを分けることで、サービスごとの AMI 管理が必要な環境で、共通化できる部分を分けてコンポーネント化することでコンポーネントの管理がしやすくなるかと思います。
まだまだ、やれることが多そうな Image Builder を引き続き触っていきたいと思います。