Storageに格納する方法(つまづきメモ付き)」を再編集したものです。はじめに最近ずっとTerraformと格闘している佐藤です。システム構成も、Terraformもまだまだ勉強不足で躓く毎日ですが、ポケモン好きなボスに教えてもらったことを忘れないようにメモしていこうと思います。Storageに格納する設定の方法までこの記事では紹介していきます。Terraformの状態、tfstateってなんだ...?この公式ページによると、tfstateはその名の通り「Terraformで記述したリソースの状態が記述されているファイル」です。具体的には以下のものが記述されています。・Terraformで記述したリソースと実行してできたインスタンスのマッピング・リソースの依存関係などのメタデータ・リソースのattributeなどのキャッシュデータチームで作業する場合、このtfstateファイルを共有することで同じリモートオブジェクトの操作が可能になります。デフォルトでは作業ディレクトリに保存されますが、これをGitで管理するのは面倒&忘れる可能性があります。今回参照したこのAzure公式チュートリアルでは以下のようにローカルにtfstateを保存するデメリットを挙げていました。ローカルの状態は、チーム環境または共同作業環境ではあまり実用的でない。状態に機密情報が含まれる可能性がある。状態をローカルに格納すると、不注意で削除される可能性が高くなる。Storageに保存して共有する方法を紹介していきます。今回の実行環境は以下です。Modulesを利用した以下のようなフォルダ構成にしました。ちなみに後でも触れますが、リソースグループ名はdemoにしてあります。Storageに格納する方法このAzure公式チュートリアルに従って操作したのですが、ここでは私のつまづきや気づきとともに手順を紹介していきます(最近ポケモンにハマっているのでポケモン風で)。ちなみにですが、公式チュートリアルの手順がやりづらかったので、作業の追加+作業順序の変更をしています。Storageのtfstateも同じtfstateに保存するためにコマンドベースの手順になっているんだと思います(本当の理由知っている方いらっしゃったら教えてください)。login実行すると、ブラウザが立ち上がってログインを促されます。ログインすると、色々出力されてから再びコマンド入力できるようになるのですが、そのいろいろ出力される中に以下のようなサブスクリプションの情報もあるので、そのnameをメモしておきます。以下を一行ずつ実行します。ちなみにbashとかの環境が整っていたら、このAzure公式チュートリアルにあるようにbashファイルにして実行したら楽です。・satosatoは納得したということで、tfファイルで作ったものの状態がtfstateに保存される以上、そのtfstateを保持するストレージのリソースグループは別の方が望ましいのではないかなーと理解しました。実際にチュートリアルでも別のリソースグループになっています。以下のコードを./environments/demo/main.tfに追加します。ちなみにstorage_account_nameは$STORAGE_ACCOUNT_NAMEで既に設定済みなので、同じ名前を入力します。いうことで実際にやってみた結果以下のようなエラーがでました。here.ということで、このstorage_account_nameはVariables許可されていないので、Variablesにできないようです。tfstateが保存されているか確認ポータルから先ほど作ったdemoetcリソースグループを開くと、ストレージアカウントが作成されていることが確認できます。クリックすると以下の画面になるので、コンテナーを選択します。作成したtfstateコンテナを選択します。.tfstateが保存されていることが確認できました。Storageに格納する手順をまとめました。ポケモン好きなボスにそもそもなんでこうなっているのかということも聞きつつできたので理解が深まった気がします。このブログを読んで、こうしたほうがいいよなどアドバイスありましたらよろしくお願いします。紗都/FIXER2019年に新卒でFIXERに入社しました。PlatformとAzure勉強中です。趣味はアニメなので、こっそりブログネタに絡めています。最近の推しはプロメアです。スマホお気に入り一覧マイページ。