Azure Terrafy (aztfy) 環境準備から既存Azureリソースのインポートまでやってみた
Terraformで既存のAzureリソース情報を読み込む場合はTerraform Importを利用します。
この場合.tfstateファイルは更新されますがリソースの構成ファイル(.tfファイル)はImport後に自分で作成する必要がありました。
Azure Terrafyを利用すると.tfstateファイル生成と同時に構成ファイル(.tfファイル)も自動的に生成されます。
今回はAzure Terrafy(aztfy)の実行環境準備から既存Azure リソース情報をTerraformにインポートする所までやってみました。
Azure Terrafy実行環境準備
Azure Terrafy(aztfy)必要要件
Azure Terrafy実行にはGoやAzure CLIが必要になります。
-
- Go
- Azure CLI
- Managed ID
- 対象リソースグループに対する読み取り権限
※Terraform環境の準備は必要ありません。
※Managed IDによる認証が無いとaztfy実行時の認証がうまく行きませんでした。
※今回はWindows環境を利用しています。
Go インストール
Goインストール手順はこちらを参照願います。
Azure CLIインストール
Azure CLIのインストール方法はこちらを参照願います。
Azure Terrafy(aztfy)インストール
Go installでAzure Terrafyをインストールしています。
インストール後の確認はaztfy -vで行っています。
Azure Terrafyインストール | ||
go installを使ってAzure Terrafyをインストールします。 |
|
|
インストールの確認はaztfy -vで行います。 aztfy versionと表示されればOKです。 |
|
Azure Terrafy(aztfy)の実行
Azure VM(仮想マシン)環境をAzure Terrafy(aztfy)を使ってTerraformの構成情報を取り込んでみます。
Azure既存リソース環境準備
こちらの仮想マシン環境を使います。
今回の既存Azureリソースインポート対象を環境をAzure Portalで確認してみます。
Terraformインポート対象の既存Azureリソース | |
test-rgにAzure VM(仮想マシン)1台デプロイされた環境になります。 |
Azure Terrafy実行環境
Azure Terrafy(aztfy)の実行はManaged IDで権限付与を行ったAzure VM上で実行しています。
権限は取り込み対象のリソースグループに対して閲覧者権限以上を割り当てて実施しています。
Azure Terrafy(aztfy)の認証エラー
Azureテナントへのログインが出来てない場合や権限付与がされていない場合などにはaztfy実行時にエラーが表示されます。
認証エラー例 | ||
Azure Terrafy(aztfy)実行環境でManaged ID設定が出来てなかった場合に表示されたエラーです。 Identity not foundと表示されています。 |
|
Azure Terrafy(aztfy)を使って既存Azure リソースをインポート
Azure TerrafyによるTerraformへのインポートは、”aztfy リソースグループ名”で行います。
事前にAzure CLI(az login)でインポート対象のサブスクリプションにログインしておく必要があります。
※Azure CLIログイン時のデフォルトサブスクリプションを取り込み対象のサブスクリプションにしておく必要があります。
aztfy実行 | ||
インポート対象の既存Azure リソース環境です。 test-rgをTerraformにインポートしてみます。 |
||
Terraformの構成ファイルを保管したいディレクトリでaztfyコマンドを実行します。 |
|
|
Azure Terrafyの画面が表示されます。
”w”で対象リソースグループの取り込みが開始されます。 |
||
取り込み中は実行結果と進捗率が表示されます。 | ||
取り込みが完了するとTerraform state and the config are generated at: ”構成ファイル保管ディレクトリ”とメッセージが表示されます。 |
既存Azure リソースのTerraformインポート結果を確認
既存AzureリソースのTerraformインポート結果を確認してみます。
既存AzureリソースのTerraform取り込みが出来ている事が分かりましたが、一方で仮想マシンの構成情報が保管されていない事が分かりました。
Terraform Importについてはこちらに纏めています。併せて見て頂けると大変有難いです。
Azure Terrafy(aztfy)実行ディレクトリは空でないといけない
Azure Terrafy(aztfy)実行時はすべてのファイルが新規生成される為、実行ディレクトリが空である必要があります。
上書き確認 | ||
Azure Terrafy(aztfy)実行ディレクトリが空でない場合は確認メッセージが表示されます。”Y”を選択するとディレクトリ内のファイルがクリアされます。 |
|
※既存の構成情報等のファイルがすべてクリアされます。必要な情報は必ずバックアップしておきましょう。
Azure Terrafy(aztfy)でSkipされたリソースをTerraformにインポート
Azure TerrafyでTerraformにリソース構成情報取り込み時にSkipと表示されている場合があります。
Skipと記載されたリソース明示的に指定しないと取り込みされません。
再度Azure Terrafy(aztfy)を使って取り込みを行います。
最後に
今回はAzure Terrafy(aztfy)を使って、既存Azureリソース情報をTerraformにインポートしてみました。
リソースグループを指定するだけで、Terraformに取り込む事ができて、かつ構成情報も自動生成されて非常に便利かと思いました。
今後もTerraform関連について色々試して行きたいと思います。
Terraform関連の記事はこちらに記載しております。併せて見て頂けると大変有難いです。