【AWSの呼吸 漆ノ型】Former2を使って既存環境をCFnのテンプレートに変換する~成功編~
目次
- 目次
- はじめに
- 環境概要
- 構成
- シークレットアクセスキー払い出し
- Former2インストール
- Former2設定
- Former2起動
- Former2でCloudFormationのテンプレートを作成
- 終わりに
はじめに
前回の記事ではWindows環境にFormer2を導入しようとして失敗に終わりました。
今回の記事ではAWS上にLinux環境を構築し、その上にFormer2を導入して使ってみたいと思います。
環境概要
構成
- とにかく動かしたいだけなので、EC2インスタンスはシングルの最小構成
- EC2インスタンスにEIPを振って、パブリックサブネットに配置
- SGはブラウザからのアクセス用に80ポートだけあけておく
- Former2の管理画面はデフォルトで80ポートで待ち受けします
- 自身の接続元のIPアドレスだけ許可するようにしておきましょう
- Former2にシークレットアクセスキーを登録して構成情報を取得します
シークレットアクセスキー払い出し
事前にAWSマネジメントコンソールにてFormer2に利用させるIAMユーザを作成し、アクセスキーIDとシークレットアクセスキーを払い出しておきましょう。
あとでFormer2のWeb管理画面にて登録します。
Former2インストール
構築したLinuxサーバにログインして、インストール作業を行います。
gitインストール
以下のコマンドでインストールします。
# yum install git
dockerインストール
以下のコマンドでインストールします。
(今回は19.03.13-ceを利用)
# yum install docker
docker-composeインストール
こちらのLinux版の手順を参考にdocker-composeをインストールします。
Docker Compose 最新版をダウンロード
(今回は1.29.0を利用)
# sudo curl -L https://github.com/docker/compose/releases/download/1.29.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
バイナリに対して実行権限を付与
# sudo chmod +x /usr/local/bin/docker-compose
実行権限がついているか確認
# ls -l total 12452 -rwxr-xr-x 1 root root 12750072 Apr 14 01:10 docker-compose
former2のソースをgit clone
Linuxサーバのローカルの適当なフォルダにFormer2のソースを持ってきます。
# git clone https://github.com/iann0036/former2.git
former2のディレクトリに移動
# cd former2/
Former2設定
待ち受けIPアドレスの変更
デフォルトではローカルループバックで待ち受ける設定になっているため、パブリックIPで待ち受けるように変更します。
(今回の環境の場合は"10.17.112.85"に変更)
git cloneしたフォルダの配下にあるdocker-compose.ymlを以下のように変更します。
変更前:
ports: - "127.0.0.1:80:80"
変更後:
ports: - "10.17.112.85:80:80"
Former2起動
docker起動
dockerの起動状態を確認
# systemctl status docker ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: inactive (dead) Docs: https://docs.docker.com
dockerが起動していない場合、サービスを起動
# systemctl start docker
Fomer2のコンテナ起動
以下のコマンドを実行して、エラーが出なければ起動成功!
# docker-compose up -d
80でリッスンしているか確認
# lsof -i -n -P docker-pr 4807 root 4u IPv4 27824 0t0 TCP 10.17.112.85:80 (LISTEN)
Former2でCloudFormationのテンプレートを作成
Web管理画面にアクセスする
ブラウザを開いて、http://[Your EIP]/にアクセスし、以下のような画面が表示されたら上手く動いています。
ブラウザの拡張機能追加
利用しているブラウザに合わせて拡張機能のメニューを選択します。
今回はChromeウェブストア->Chromeから追加しました。
追加できたら[Continue to Credentials]を押します。
認証情報の登録
事前に払い出しておいたアクセスキーIDとシークレットアクセスキーを入力し、[Continue to Parameters]を押します。
パラメータの指定
CloudFormationのStackから参照する変数をパラメータとして定義できますが、今回は入力なしで[Continue to Settings]を押します。
各種設定
スペースの数や出力の形式など色々な設定ができますが、今回はデフォルト設定で[Continue to Dashboard]を押します。
ダッシュボード
一通り設定して上手くいったら、ダッシュボードが表示されます。
構成情報のスキャン
ダッシュボードの右上の[Scan Account]を押して、構成情報をスキャンします。
テンプレート化対象の選択
スキャンが無事に完了したら、各AWSサービスのメニューを開いて、読み込めているか確認してみます。
下図はEC2インスタンスの例です。
テンプレート化したいリソースにチェックを入れて、[Add Selected]を押します。
テンプレート作成
リソースを選択し終わったら、[Generate]ボタンを押すことでテンプレートを作成できます。
このように先ほど選択したEC2インスタンスがCloudFormationのテンプレートとして出力されています!
終わりに
前回は環境構築で遠回りしましたが、今回はFormer2をローカルで稼働させ、実際にテンプレート化するところまでできました。
既存環境をベースに別環境として複製したい場合は環境依存なパラメータの取り回しを考えるなど、利用者側でやらないといけない部分はもちろんありますが、それでも1から書くよりはだいぶ楽ができるのではないでしょうか。
みなさんもぜひ試してみてみてください。
以上。