前回の投稿からだいぶ日が空いてしまったサボり癖のある窓際社員のガミさんです
コロナが収まる気配がないですが気持ちだけは元気です
さて、本題です。
今回は社内でIaCを推進せい!ということでAzure環境をTerraFormで構築したおはなし
ハマりポイントを重点に記載をしているのでIaCってなに?TerraFormってなに?
という人はググってみよう!
必要があればIaCとTerraFormの記事もかきまする
天の声
えらいひと
おーい
ヒマやろ?
Azure環境簡単に作れるようにしてくれや!
開発環境、検証環境、商用環境も簡単につくれるようにな!
ヒマやろ?
Azure環境簡単に作れるようにしてくれや!
開発環境、検証環境、商用環境も簡単につくれるようにな!
ほえー
ヒマじゃないのに・・・
今話題のIaCってやつやな
(承知しました!)
既読ヒマじゃないのに・・・
今話題のIaCってやつやな
(承知しました!)
2:30
えらいひと
また心の声と逆やで
ちゃちゃっと頼むわ
ほな
ちゃちゃっと頼むわ
ほな
2:30
※LINE風CSSとスタンプはナコさんのサイトの素材を利用させていただいております。
続きを読む!
まずはGoogle先生に相談から
Googleせんせい
ぐぐるせんせい
なにが知りたいねん?
Azure環境をIaCでつくりたいん!
なんか知ってたらおしえてーな
2:35
ぐぐるせんせい
それならTerraForm使うと幸せになれるで!
2:35
それからつくられたAzure環境からIaCへのコード化はできるんか?
既読2:36
ぐぐるせんせい
AWSさんとちゃうねん
TerraFormerみたいな便利なツールはAzure用にはないんやで!
セコセココード書いて頑張りな!
TerraFormerみたいな便利なツールはAzure用にはないんやで!
セコセココード書いて頑張りな!
2:37
さてここからがAzure TerraForm沼のはじまりでした・・・
ハマりポイントその1
恐ろしく時間だけが奪われていく
TerraFormのリファレンスから構築に必要なリソース名を検索して実際にコードをAzureに流してみる
↓
手動で構築したリソースとTerraFormで構築したリソースの差異を調べる
↓
リソース内の未設定の項目のコードを書いてまた差分確認・・・
これをリソース分繰り返し実行していく
そのあとは商用、検証、開発環境用にプランをわけたりだなんだりだと・・・
本当に時間だけが搾取されていく
まさに沼
ハマりポイントその2
TerraFormの実行でエラーがよく発生する・・・
しかもエラーが発生するまでに1回あたり20分くらいかかることもある
他の人のPCだと動くお前の環境だけおかしい!(通称:おま環)問題が発生しまたも時間搾取が。。。
これを解決するのにGoogle先生とずっと会話を続け
・TerraFormのバージョンが違う
・ARMテンプレートのバージョンが違う
・BashじゃなくてPowerShellでやってみろ
・MacじゃなくてWindowsでやってみろ
といろいろアドバイスをいただいても解決しませんでした
そしてたどりつたいところはAzure CloudShellを使うということでした
おま環の駆逐を目指して今度はAzure CloudShellの調査を開始
調査、検証事項を全て書いてしまうと全3回くらいのブログ記事が書けてしまうのでちょっと割愛!
・CloudShellには元々TerraFormがインストールされているが安定版(0.13.3あたり)をインストールしよう!
binフォルダは保持されるけどセッションが切れるごとにTerraFormバージョンが元に戻るので・・・ 初回実行時 mkdir bin cd bin wget https://releases.hashicorp.com/terraform/0.13.3/terraform_0.13.3_linux_amd64.zip unzip terraform_0.13.3_linux_amd64.zip $env:PATH="$HOME/bin/:"+$env:PATH terraform -version 2回目以降 cd bin unzip terraform_0.13.3_linux_amd64.zip $env:PATH="$HOME/bin/:"+$env:PATH terraform -version・CloudShellのストレージは各アカウント容量が決まっている(5GBと説明があるが体感1GBくらい)のでTerraForm安定版のダウンロードとtfファイルくらいしか置くのをやめよう!
・毎回az loginが必要かつ20分(とは書いてあるけど5分で落ちてた時もあった)操作しないとCloudShellが落ちるので操作は一気に!
・ローカルPowerShellのTerraFormで使えていた[Invoke-SqlCmd]が使えなくなるので[sqlcmd]を使おう!
・パスワード自動生成などで[$'` ]を使用するとTerraFormがうまく動かないのでパスワード生成から外しておこう!
それ以外の注意事項は普通にTerraFormを使うのと変わらないので割愛します
※100スター⭐️到達したら真面目にTerraForm記事かきます
これでおま環もバス係数が1の状態も回避できる!
Tipsをいくつか書こうと思っていたのですがダラダラと沼のおはなしを続けてしまったので一旦おしまいにしておきます。
ちなみに書こうと思っていたTipsは↓です
・マルチテナント環境にテナントごとのリソース(ストレージとかKeyVaultとか)をループで簡単に追加したい!
・TerraFormでSQL Serverに対してSQLを自動実行する方法
などなどネタはあるのでマイペースにやっていきたいと考えています
~ecbeingでは、新しいことに楽しんでチャレンジできるエンジニアを大募集中です!~
careers.ecbeing.tech