概要
共同で同じサービスやシステムを開発している際、作っている機能によっては環境に必要なパッケージや設定値などを細かく設定する必要がある。
都度、1から設定していると設定漏れ等により同じ環境を作れなくなったりする。
また、行っている作業によっては作業ミスにより環境を壊してしまって・・・
なんて、事はよくある話だと思われる。
そのような問題を解決する方法はいろいろあるけど、(vagrantとかだとこれ : https://qiita.com/rakuraku0615/items/5fcd59b1c6f263142ec5:title 等) 今回はAWS環境にて行う。
今回行う事
- AWS環境のAMIというサービスを利用する事により、使用している環境のバックアップを作成し、複製する。
- EC2の起動テンプレートを利用することによりインスタンス起動後の作業を短縮&作業ミスを減らす
今回の要素
-
Amazon EC2 (https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/concepts.html)
-
Amazon マシンイメージ (https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/AMIs.html)
手順
すでに環境はAWS EC2インスタンスで作成済みのものとします。
Amazon マシンイメージ(AMI)の作成
バックアップの元となるイメージを作成する。
-
EC2 => インスタンスと選択
-
以下のような作成画面が出てくるので、AMI名、AMIについての説明、作成するAMIに紐づくEBSのスナップショットの設定を入力し、イメージの作成を行う。
-
左側サイドメニューのAMIを選択すると、作成したAMIが表示される。(ステータス = pendingは、現在作成中のAMI)
これで、AMIの作成完了。
AMIからインスタンスを複製する
作成したAMIをベースにインスタンスを複製する。
(単純にAMIからインスタンスを立ち上げる"だけ"の場合)
-
左側サイドメニューのAMI => インスタンス作成時のベースとなるAMIを選ぶ。その後AMIのメニューから起動を選択する。
-
認証鍵は以前使用していた鍵と同じ鍵でも、新しい鍵をつくるのでもよい。(使用者が自分で、今までの鍵の使用に問題なければ既存の物を使用すれば早い)
起動テンプレートの作成
予め起動テンプレートを作成する
キーペア、ネットワーク、セキュリティグループは必要な値を設定する
高度な詳細からユーザーデータ項目にて構築後実行して欲しいコマンド等を記入する
起動テンプレートからインスタンスを立ち上げる
$ ls -l tmp_dir/
合計 4
drwxrwxr-x 4 ec2-user ec2-user 4096 4月 22 01:45 dotfiles
これでインスタンスの複製を行うことができた
注意する点
-
インスタンス内のディレクトリ、ファイル等はコピーされるため、インスタンスごとで異なる設定を行う必要がある時にはそれぞれの対応が必要
-
AMIにクレデンシャルファイル等を載せる場合(推奨しません)公開範囲はプライベートにすることを忘れずに行う
-
Route53等DNSの設定等は複製されない
-
AMIは作成された時点から更新が行われるわけではないので、環境の更新が頻繁に行われるようであれば、どこかでAMIを更新する作業が必要となる
-
今のところAMI作成については料金がかからないが、AMI作成の過程にあるEBSのスナップショットの作成については料金が発生する
これで、いつでも環境を壊す準備ができた。
-
新しいメンバーが入ってきて環境構築のサポートをしてあげたり
-
環境を壊してしまって細かい設定を検証しながら復旧させたり
と、細かい問題から
- サービスの負荷が耐えられないのでインスタンス数を増やして対応する
というところまで、幅広く問題を解決できるため、AWSのEC2インスタンスを使用しているなら是非とも使って置くことをお勧めします。
参考書籍
Amazon Web Servicesクラウドデザインパターン設計ガイド