目次
- 目次
- はじめに
- Former2とは?
- ローカル環境にたてる
- 環境
- Former2のインストール (失敗)
- 気をとりなおして、英語版のDocker Desktopの手順を試す
- それならばとpipで直接入れる方法にシフト
- おわりに
はじめに
AWSでIaCをやる上で、CloudFormation(CFn)はとても便利ですよね。
一方で、ある程度のボリュームがある既存環境を持っており、CFnに移行したい場合、1からコード化するのは中々骨が折れるのではないでしょうか。
そこで、今回は既存環境のコード化をサポートしてくれるFormer2というツールを活用し、コード化してみたいと思います。
今回は失敗編ということで環境づくりでつまづいた話がメインです。
手こずってしまったので、実際に動くところは次回に持ち越しです。。泣
Former2とは?
- AWSの既存環境からCFnのテンプレートを抽出できる無償ツールです
- CFnの他にもCDKやTerraformのテンプレートを生成できます
- draw.ioにも対応しているようなので既存環境からシステム構成図を簡単に起こせるかもです
- ひと昔前まではCloudFomerという類似のツールがデファクトでしたが、アップデートが止まってしまい、2021年5月現在はこちらのツールが実質デファクトのようです
- AWSはre:Invent 2019でFormer2を推奨するような回答をしているようですね
- 参考:「[レポート]What’s New in AWS CloudFormation #reinvent #DOP408 | DevelopersIO」
- Former2の本家はこちら
ローカル環境にたてる
実はこのFormer2はWeb版があるため、そちらですぐに試すことが可能です。
しかしながら、商用利用などで大事な既存環境の情報を渡すのは抵抗があるという方も多いはずです。
そこで、今回はローカル環境にFormer2を稼働させてリソース情報を管理し、コード化する方法を試してみたいと思います。
環境
- Windows10ローカル (仮想化環境上)
- docker-composeで上記の本家のコンテナを起動
Former2のインストール (失敗)
former2をローカルにclone
git clone https://github.com/iann0036/former2.git
dockerをインストール
dockerが必要になるのでインストールします。
私の環境は下記のコマンドで確認したところ、既に入っていたので割愛。
$ docker version Client: Docker Engine - Community Version: master-dockerproject-2019-12-11 API version: 1.41 Go version: go1.12.12 Git commit: 08eaead2 Built: Wed Dec 11 23:59:34 2019 OS/Arch: windows/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: master-dockerproject-2019-12-11 API version: 1.41 (minimum version 1.24) Go version: go1.13.4 Git commit: 1347481 Built: Thu Dec 12 00:07:10 2019 OS/Arch: windows/amd64 Experimental: false
docker-composeをインストール
こちらを参考にインストールします。
Powershellでの実行となります。
が・・上手くダウンロードできません。
Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile$Env:ProgramFiles\docker\docker-compose.exe Invoke-WebRequest : リモート サーバーに接続できません。 発生場所 行:1 文字:1 + Invoke-WebRequest "https://github.com/docker/compose/releases/downloa ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest]、WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
TLSバージョンをかえてみる
こちらの記事を参考にTLSバージョンを1.2に指定してみます。
変更前
[Net.ServicePointManager]::SecurityProtocol Ssl3, Tls
設定
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
変更後
[Net.ServicePointManager]::SecurityProtocol Tls12
再びdocker-composeのダウンロードを実行
同じコマンドを実行するも上手くいかず。。
Invoke-WebRequest "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-Windows-x86_64.exe" -UseBasicParsing -OutFile$Env:ProgramFiles\docker\docker-compose.exe Invoke-WebRequest : リモート サーバーに接続できません。 発生場所 行:1 文字:1 + Invoke-WebRequest "https://github.com/docker/compose/releases/downloa ... +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (System.Net.HttpWebRequest:HttpWebRequest) [Invoke-WebRequest]、WebException + FullyQualifiedErrorId : WebCmdletWebResponseException,Microsoft.PowerShell.Commands.InvokeWebRequestCommand
冷静になってエラーをみてみる
「リモートサーバに接続できない」と言っているので、そもそも繋げてなさそう。
ということでURLをブラウザで直たたきしたら、404 Not Foundというオチでした。
(エラー文言はちゃんと読みましょう)
この日本語のWindows版の手順は古いのかもしれませんね。
気をとりなおして、英語版のDocker Desktopの手順を試す
ということで、英語版の方の手順で仕切り直しです。
以下にアクセスして[Windows]タブを押すと見れます。
公式手順:Install Docker Compose | Docker Documentation
Docker Desktop on Windowsダウンロード
こちらからexeをダウンロードします。
Hyper-Vの機能の有効化
Hyper-Vを使うので、「Windows の機能の有効化または無効化」を開いてHyper-Vを有効化しておきます。
Docker Desktop Installer.exe実行
先ほどダウンロードしたexeを実行します。
が・・・インストールに失敗。
どうやらWindows10のバージョンが要件を満たしてない模様。
それならばとpipで直接入れる方法にシフト
こちらにあるpipの手順を試します。
Using pip
If your platform is not supported, you can download Docker Compose using pip:
pip install docker-compose
Note: Docker Compose requires Python 3.6 or later.
pipインストール
こちらからバージョン3.6以上のexeを落としてインストールします。
exeを実行したら、「Install Now」を選択して進み、完了したらclose。
pipにパスを通す
最初はパスが通ってないはずなのでWindowsの環境変数を変更します。
[コントロール]->[システム]->[システムの詳細設定]->[環境変数]を開き、[システム環境変数]のPathに以下を足します。
(自分の環境に合わせて変更してください)
C:\Users\[Your User Name]\AppData\Local\Programs\Python\Python39\Scripts
変更したら、環境変数を読み直すためにGit Bashを上げなおしておきましょう。
pipでdocker-composeインストール
以下のコマンドでインストールします。
これでようやくdocker-composeを使える準備が整いました!
$ pip install docker-compose
docker-composeでformer2起動
以下のコマンドでFormer2のコンテナを起動します。
※実行前にあらかじめgit cloneしたフォルダ配下に移動しておいてください。
$ docker-compose up -d
起動失敗・・・
結局、苦労してdocker-composeをインストールしたものの以下のエラーが出て上手く起動しませんでした。
同じエラーが出ているこちらの記事などを参考にさせてもらったのですが、解決にはいたらずでした。
仮想化のネストが影響しているのかもしれません。
Creating network "former2_default" with the default driver Pulling former2 (nginx:1.17.8-alpine)... Docker Compose is now in the Docker CLI, try `docker compose up` 1.17.8-alpine: Pulling from library/nginx no matching manifest for windows/amd64 10.0.14393 in the manifest list entries
おわりに
まさかのFormer2の実行環境を作るだけでかなり手こずってしまい、最終的に起動に失敗したというお話しでした。。
ということでWindows環境はあきらめて、真面目にLinux環境をつくって、そこで稼働させてみることにします。
ここまでかなり遠回りをして3時間近くかかってしまったので、いったん記事はここで一区切りとしたいと思います。
次回こそはFormer2をローカル環境で稼働させ、CFnのテンプレートを生成するお話を書きます。
以上。