ec2インスタンス上でformer2を起動する

クラウド

AWSの既存環境をIaC化したく、いろいろ手法を探していると、former2にたどり着きました。

former2 自体はコンテナイメージとして提供されており、ローカル環境でデプロイすることができるということで、EC2インスタンス上のdockerで起動させることにしました。

以下、いろいろ躓いたので備忘録です。

はじめに

以下のサイト様を参考にさせて頂きました。
実際にやってみると2023年5月現在では躓いたところもあったので、それらを踏まえて備忘録します。

【AWSの呼吸 漆ノ型】Former2を使って既存環境をCFnのテンプレートに変換する~成功編~ - ailes blog
目次 目次 はじめに 環境概要 構成 シークレットアクセスキー払い出し Former2インストール gitインストール dockerインストール docker-composeインストール former2のソースをgit clone former2のディレクトリに移動 Former2設定 待ち受けIPアドレスの変更 Fo...
EC2を活用したFormer2の利用手順 - Qiita
Former2とは最初からCloudFormationを使って環境構築を行っていればいいのですが、手組みで行ったPoC環境や既存の環境が存在していた場合、CloudFormationのテンプレート…

環境/構成

  • AMI: Amazon Linux 2
    • 注意:最新の Amazon Linux は Amazon Linux 2023 ですが、こちらはdocker立ち上げようとすると以下のエラーになったので断念しました。
      どうやら、バージョン2023にアップデートしたタイミング?で、python 環境回りに変更があったみたいです。調査するのも今回のやりたいこととは違うので、いったん former2 を動かすことを目標として
Error loading Python lib '/tmp/_MEIg3aUk9/libpython3.7m.so.1.0': dlopen: libcrypt.so.1: cannot open shared object file: No such file or directory
  • サブネット:とりあえず策っと動かしたかったので、パブリックに配置しました
  • セキュリティグループ: 自環境からのIPアドレスのアクセスのみを許可して、sshとhttpを許可しました

事前条件

  • アクセスキーIDとシークレットアクセスキーの払い出しをしておく必要があります

手順

パブリックサブネットにEC2インスタンスの起動

以下の設定でEC2インスタンスを起動します。

  • AMI: Amazon Linux 2
    • これが重要。Amazon Linux 2023 は前述の通りうまく動かなかった
  • サブネット:パブリック
  • パブリックIPの自動割り当て:有効化
    • EIPを設定してもいいですが、当方環境ではEIPが枯渇気味なので自動割り当てにしました
  • インスタンスタイプ: t3.small
  • EBSボリューム: 30GB

EC2インスタンス内で各種設定

EC2インスタンス起動後、SSHで接続し、下記を実施します。

  • git インストール
$ sudo yum install git
  • docker インストール
$ sudo yum install docker
  • docker のサービス有効化/自動起動化など
# 起動
$ sudo systemctl start docker
# サービス登録
$ sudo systemctl enable docker
# ec2-userにdockerグループを追加
$ sudo usermod -a -G docker ec2-user
  • SSH のログアウト→ログイン

    • 上記で ec2-user が docker コマンドを使用できるようにしました。これを有効化するために明示的なログアウト→ログインが必要みたいです
    • EC2インスタンスの再起動でもいいですが、Teratermとかなら再接続でいけました
    • VSCode は、内部でセッション保持しているのか?再接続してもだめでした
  • docker-compose のインストール

 $ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
 $ sudo chmod +x /usr/local/bin/docker-compose
 $ docker-compose --version
  • former2 をダウンロード
# ホームディレクトリでgitフォルダを作って、そこにダウンロードする
$ cd ~
$ mkdir git
$ cd git
$ git clone https://github.com/iann0036/former2.git
  • docker-compose.yml を書き換える
    • デフォルトだとローカルからしかアクセスできないので、外部からアクセスできるようにします
# docker-compose.yml
version: '3'
services:
  former2:
    image: nginx:stable-alpine
    ports:
+      - "80:80"
-      - "127.0.0.1:80:80"
    volumes:
    - .:/usr/share/nginx/html
  • docker-compose を起動させる
$ cd former2
$ docker-compose up -d

動作確認

PCのブラウザで、 http://<EC2インスタンスのパブリックIPアドレス> にアクセスします。
(例:EC2インスタンスのパブリックIPが 52.199.116.210 の場合、 http://52.199.116.210

上手くいっている場合、以下のような画面が表示されます。

コメント

タイトルとURLをコピーしました