
本講座でどのようなことを学習していくのか、その概要について学びます。
添付リソースを一括ダウンロードできる「Googleドライブ」のリンクがあります。
クラウドサービスの特徴を踏まえ、これまでの運用を継続しているとどのような問題が起こるのか、について学習します。
HashiCorp社が提供するインフラコード化ツールの概要。
Packerとはどのようなツールで、利用する際のイメージがどのようなものか、について学習します。
Packerを使って実際に開発を行う場合、どのような手順になるのか、について学習します。
AWS CLI をインストールしていくハンズオン。
本講座で利用するIAMユーザーを作成するハンズオン。
Windows向け、GitBashのインストールを行うハンズオン。
Packerをローカルマシンで動作できるようにインストールを行うハンズオン。
クラウド破産を防ぐためのツールとして git-secrets をインストールします。
Visual Studio Code のプラグイン「Packer」をインストールします。
Windows向け、Visual Studio Code のデフォルトターミナルを GitBash に切り替えます。
初めてPakcerを利用したマシンイメージ(AMI)を作るハンズオン。
これから学習していくものとしてどのようなものがあるのか、について全体像を俯瞰します。
Packerソースコードでリソース間の参照を行う場合の表現方法を学習します。
組み込み関数としてどのようなものがあるのか、詳しい情報はどこから手に入れればよいのか、試しに使ってみるにはどのようにすればよいのか、について学習します。
本講座で扱うWebアプリケーションは別講座「AWSで作るWebアプリケーション実践講座」と同じものを想定します。具体的にはどのようなWebアプリケーションなのか、について本レクチャーで確認します。
これからのレクチャーで必要となるVPCを事前に作成します。
これからのレクチャーで必要となるサブネットを事前に作成します。
これからのレクチャーで必要となるルートテーブルを事前に作成します。
これからのレクチャーで必要となるインターネットゲートウェイを事前に作成します。
これからのレクチャーで必要となるセキュリティグループを4つ、事前に作成します。
これからのレクチャーで必要となるキーペアを事前に作成します。
これからのレクチャーで必要となるIAMロール2つを事前に作成します。
Packer自体がどのような手順でマシンイメージ(AMI)を作っているのか、その手順を順に確認します。
これからPackerソースコードを学習するにあたり、最初のひな型を作成します。
sourceブロックの記述内容について学習します。
実際にsourceブロックをコーディングし、AMIを作成してみます。
ソースAMIの指定を AMI ID からフィルター条件に変更するにあたり、どのようなフィルター名が利用可能かについて学習します。
ソースイメージの探し方をAMI ID固定からフィルター条件を用いた検索へ変更を行います。
Packerで利用可能な変数はどのようなものがあるのか、について学習します。
「プロジェクト名」と「バージョン情報」を変数化します。
変数を上書きする手段について具体的にどのような方法があるのか、どのような優先順で上書きされるのか、について学習します。
「バージョン情報」を複数の変数上書き方法を使って順に上書きを行い、その変化を確認します。
特殊な変数「テンプレート変数」についてどんな情報が利用可能なのか、について学習します。
「ソースイメージ」に関する情報をテンプレート変数を使ってタグへ追記していきます。
構築手順に相当する build ブロックについて概要を学習します。
ファイル転送を行う方法、指定の仕方によってどのように転送されるのかの違い、について学習します。
Webアプリケーションの本体となる tar.gz ファイルをEC2へ転送します。
シェルの実行方法について学習します。
ファイル転送したWebアプリケーションの解凍/展開を、inlineシェルを用いて実行してみます。
inlineシェルとscriptシェルの使い分けをどのように行うとよいかについて学習します。
inlineで記述したスクリプトを外だしファイルへ掃き出します。
Packerのイメージビルドのデバッグ方法について学びます。
ブレークポイント、コマンド引数を用いたデバッグ実行を行ってみます。
JSON形式とはどのようなものなのか、実際にアップグレードするにはどうしたらよいのか、について学習します。
古い形式JSONをHCL2へアップグレードを行い、違いについて確認します。
AMIのバージョン管理はしなければならないのか、するとすれば具体的にどのような方法が考えられるのか、について学習します。
イメージ作成日付をタグへ埋め込む方法を学習します。
イメージのテストとはどのようなものなのか、具体的なテスト観点、テスト対象をもとにテストケースとしてどんなものがあるのか学習します。
goss および packer-provisioner-goss のインストールを行います。
gossを使ってサーバーサイドテストを実際に行ってみます。
パッケージの存在確認を行うテストケースを作成します。
コマンドの存在確認を行うテストケースを作成します。
ファイル/フォルダの存在確認、権限確認、内容確認を行うテストケースを作成します。
文字列確認をするようなテストケースにおいて、パターンマッチ指定の方法を学習します。
サービスの状態を確認するテストケースを作成します。
プロセスの状態を確認するテストケースを作成します。
受け付け待ちしているポートの確認を行うテストケースを作成します。
http/httpsのリクエストを行い応答を確認するテストケースを作成します。
グループの確認をするテストケースを作成します。
ユーザーの確認をするテストケースを作成します。
ここまでに作成したテストケースをPackerへ組み込む方法を学習します。
ここまでに作成したテストケースをPackerへ組み込み、AMIの作成を行ってみます。
本講座を振り返り、今後の学習指針を示します。
ボーナスレクチャーです。
クラウド開発を行っているといまだに手作業でやっていて疑問に感じることはありませんか?
そんな疑問や不安を解決する手段として、本講座では「Packer」というツールを使って「AWSのマシンイメージ(AMI)構築」をコード化/自動化する方法を学びます。
まだまだ発展途上の領域ではありますが、「運用をコード化する」ということがどのようなものなのかを体験できるコースです。
ぜひ、一緒に学習をしていきましょう!
【概要】
Infrastractur as Code
クラウド開発における課題を考え、その解決策の1つであるPackerについてどのようなものなのか
特徴や仕組みについて学習していきます。
環境準備
これから学習を進めていくにあたり必要となる環境を準備していきます。
はじめてのPacker
Packerを使った簡単なAMI作成を行い、作業イメージを膨らませていきます。
AWS環境構築
今回想定するアプリケーションサーバーは別講座「AWSで作るWebアプリケーション実践講座」をベースとしています。
本講座で必要となる同等の環境作成を行っていきます。
イメージの作成
Packerのソースコードについて具体的な中身を学習していきます。
学習は座学だけでなく演習と交互に進めていきます。
バージョン管理
作成されたマシンイメージ(AMI)をどのように管理していくとよいのか、その管理方法について学びます。
イメージのテスト
作成したイメージが正しく構築できているかテストを行います。
本セクションではそういったサーバーサイドテストのテストケースを作成、Packerのソースへ組み込みを行います。
【謝辞】
今回も同僚の力を借りて作成することになりました。本コース作成にあたり実務上の知見や講座内容に対するフィードバックをしてくれた古澤魁さんには大変感謝しています。
【更新履歴】
v1.0.1 2021/06/06 「添付リソースの一括ダウンロード」レクチャーを追加
v1.0.0 2021/01/05 初版リリース