Slide 1

Slide 1 text

EC2 Image Builder (公開版) 2019.12.17 re:Growth 2019 Sapporo Takuya Shibata

Slide 2

Slide 2 text

2 自己紹介 Takuya Shibata - AWS事業本部 コンサルティング部 - ソリューションアーキテクト - CLR/H と きたあず の裏方 - PowerShell おじさん - 好きなAWSサービス

Slide 3

Slide 3 text

3 EC2 Image Builder

Slide 4

Slide 4 text

4 EC2 Image Builder

Slide 5

Slide 5 text

5 EC2 Image Builder ゴールデンイメージとなるAMI作成をよしなに自動化 してくれるサービス • 要は みたいなやつ • テストもできるので + 的な • AWS License Manager等 の AWSサービス統合

Slide 6

Slide 6 text

6 まずは触ってみよう! Demo

Slide 7

Slide 7 text

7 Recipes 名前の通り作成するイメージのレシピ • ベースとなるAMI を決める • インストールする コンポーネント を指定する • イメージに対する テスト を指定する

Slide 8

Slide 8 text

8 Recipes 対象OS • Amazon Linux 2 • Windows Server 2012 R2~2019 (英語) • SSM Agentをインストール済みのカスタムAMI

Slide 9

Slide 9 text

9 Recipes EC2 Image Builderは Build components (後述) の実行にSSM Agentを使用する • SSM Agentのバージョン要求はドキュメントに無い • SSM Ducumentが実行できれば良さそう (個々のcomponentはDocumentとして実行される) • ビルド時のトラブルシュートはSSMと同様

Slide 10

Slide 10 text

10 Recipes Initiate a new image build when there are updates to your selected image version.

Slide 11

Slide 11 text

11 Build Components イメージに追加する各種ソフトウェアのセットアップ スクリプトをまとめたもの

Slide 12

Slide 12 text

12 Build Components Componentsの実装は「Components」から検索

Slide 13

Slide 13 text

13 Build Components Componentsの実装は「Components」から検索

Slide 14

Slide 14 text

14 Build Components Componentsは自作可能

Slide 15

Slide 15 text

15 Tests 作成するイメージに対するインフラテストスクリプト をまとめたもの

Slide 16

Slide 16 text

16 Tests Testsの実装も「Components」から検索

Slide 17

Slide 17 text

Testsの実装も「Components」から検索 • テストによって前提条件が違うのでDescription をよく読んで使おう 17 Tests

Slide 18

Slide 18 text

Testsも自作可能 18 Tests

Slide 19

Slide 19 text

19 Pipelines RecipesをもとにAMIイメージを作成するための 環境設定 • AMIを作るためのIAMロール • ビルドスケジュール • ビルド時のインスタンスタイプ • ビルドログ・終了後の通知設定(SNS、S3) • ビルド環境のVPC

Slide 20

Slide 20 text

20 Pipelines 必要最低限のIAMポリシー • AmazonSSMManagedInstanceCore • EC2InstanceProfileForImageBuilder

Slide 21

Slide 21 text

21 Pipelines 複数リージョンに同時にイメージ展開が可能 • 今回は触れないがアカウント間共有も可能

Slide 22

Slide 22 text

22 Run Pipeline パイプラインはあくまでもイメージ作りの環境設定 実際のイメージは ビルド(Run Pipeline) して初めて 作成される

Slide 23

Slide 23 text

23 Run Pipeline ビルド実行順は以下 1. Build phase 1. Build用 EC2インスタンス作成 (Source AMIより) 2. Build componentsの適用 3. 独自の終了処理 • Windowsではsysprepを実行 (RunSysprepGeneralize) • Amazon Linux 2では専用のシェルスクリプトを実行 (SanitizeScript) 2. Test phase 1. Test用 EC2インスタンス作成 (Build後 AMIより) 2. Test componentsの適用

Slide 24

Slide 24 text

24 Images バグなのか不明だが、現時点では ImageおよびBuild versionはコマンドからでないと 削除できない(ボタンが押せない…) # イメージの削除は aws imagebuilder delete-image コマンドで aws imagebuilder delete-image --image-build-version-arn <イメージのARN>/<ビルド番号>

Slide 25

Slide 25 text

25 余談 コマンドラインはAWS CLIしか対応していないと 思っていたら、何気にAWS Tools for PowerShellも 対応していた • Ver.4.0.2.0 – 2019.12.13より # モジュール名は AWS.Tools.ImageBuilder Install-AWSToolsModule -Name ImageBuilder # 前ページのイメージ削除はこんな感じ Remove-EC2IBImage -ImageBuildVersionArn <イメージのARN>/<ビルド番号>

Slide 26

Slide 26 text

26 これから確認したいポイント 1. Build components/Tests同士の依存関係は? • いちcomponent/test内では順序制御可能だが、 component/test同士の依存関係は定義できないっぽい 2. Build components/Testsの実行順序制御は? • 実行順序を制御する方法が見つからない • ビルドログを見ると単純に選択順になってる様には見える… • 実行順序に依存するものを記述しない方がよさそう

Slide 27

Slide 27 text

27 これから試したいポイント 1. EC2 Image BuilderからVMDK、VHDXなどの オンプレ環境向けイメージを出力できる、らしい • GitHubのドキュメントに従いCLIから試そうとしたが、 CLIがまだ対応していない風のエラーを吐き手詰まりに なった • 今日確認したらドキュメントから手順が消え去ってた… 2. CI/CDと絡めて何か • 正直Codeシリーズとの統合イメージが掴めていない • Codeシリーズ抜きにすればSNSでいろいろ通知できる ので、なんとでもなりそうではある

Slide 28

Slide 28 text

28 Documentation https://docs.aws.amazon.com/imagebuilder/

Slide 29

Slide 29 text

29 Documentation サービスページの右下にあるよ! ↓

Slide 30

Slide 30 text

30