はじめに
2018年3月にTerraform入りのUbuntuイメージがAzure Marketplaceで公開されたので、さっそく使ってみました。
Announcing Terraform availability in the Azure Marketplace
Terraformって
Terraform on Azureの説明は以下のサイト参照。
Azureのインフラ構築を行う手段として、ベーシックなものとしては
- Azureポータルから
- Azure Powershellから
- Azure CLIから
- Azureテンプレート(json)から
などがありますが、最近はHashiCorpが提供しているTerraformのAzure Provider(モジュール?)が色々できるみたいです。
HashiCorp Terraform Azure Provider
Terraformの詳しいお話はほかのサイトにお任せするとして、本記事ではAzure MarketplaceからTerraform入りのUbuntuイメージをデプロイして、とりあえずTerraformを使い始めるところにフォーカスを当ててお伝えします。
Terraform入り仮想マシンのデプロイ
以下サイトに英語ですが手順や使い方は詳しく書かれていますが、こちらの記事ではサクっと要点だけお知らせします。
Azureポータルにログインして、「+リソースの作成」から新規ブレードを開き、検索文字列に「terraform」を入力します。
Marketplaceの概要説明がでるので、「作成」をクリックします。
「1.基本」ブレードでは作成するVM名、ログインユーザ名、ログイン方法、リソースグループ名、作成リージョン等お好みで設定します。
「2.Additional Settings」ではVMのサイズ、ディスク種別をお好みによって選択します。
デフォルトのStandard DS2で32GBのSSDの場合、ざっくり月額2万円くらいでしょうか。こちらの仮想マシンサイズを下げてもTerraformのデプロイ時間が遅くなる他は特に影響はないと思いますので、個々の事情に合わせたサイズを選択しましょう。
「3.概要」では先に設定した内容が正しいか確認後に「OK」をクリックします。
「4.購入」では念のため使用条件を確認後、「作成」をクリックします。
今回のTerraformではAzure仮想マシン関連の料金の他はかかりません。
暫く待つと、指定したリソースグループ内に仮想マシンが作成完了します。
DNS名をクリップボードなどにコピーしておきます。
TeraTermなどで先ほどの仮想マシンにsshでログインできることを確認します。
Terraformの初期設定
仮想マシンにログイン後、以下のコマンドを実行します。
$ . ./tfEnv.sh
https://microsoft.com/devicelogin を開き、指定されたコードを入力後、先ほどと同じAzureポータルにサインインした時と同じアカウントでサインインします。
サイインイン完了後、特にエラーメッセージが出力されなければ初期設定は完了です。
サンプルスクリプトの準備
Terraform によって Azure に完全な Linux 仮想マシンのインフラストラクチャを作成するの最後の方にある「完全な Terraform スクリプト」をベースに若干修正してテスト実行してみましょう。
まずは適当な作業ディレクトリを作成して(今回はsample1)、その中にtfTemplateディレクトリ配下にあるremoteState.tfをコピーします。
$ mkdir sample1
$ cp tfTemplate/remoteState.tf sample1/.
$ cd sample1
続いてサンプルスクリプトを適当な名前でsample1ディレクトリ内に保存します(今回はazurevm.tf)。
サンプルスクリプト内の修正前に、ssh鍵の生成を行っておきます。
以下のコマンドを実行後、確認待ちの部分は全てEnterを押下します。
$ ssh-keygen
.ssh/id_rsa.pub の内容をクリップボード等にコピーしておきます。
サンプルスクリプトの6行目から11行目(providerの一節)を全てコメントアウトします。
151行目のkey_data内容を先ほどコピーした.ssh/id_rsa.pubの内容と入れ替えます。
これで準備完了です。
サンプルスクリプトの実行
作成したディレクトリに移動していることを確認後、「terraform init」でTerraform環境の初期化を行います。
必要なモジュールのアップデートが行われて実行環境が準備されます。
$ pwd
/home/azureuser/sample1
$ terraform init
続いて、「terraform plan」コマンドでスクリプト内の検証が行われます。
下記の出力例ではAzureリソースとして8つ新規作成されると表示されています。
$ terraform plan
最後に「terraform apply」で実際にAzure側に仮想マシンを作成します。
最終確認が行われるので「yes」と入力します。
$ terraform apply
暫く待つと完了メッセージと共に実行したコマンドも終了します。
作成された仮想マシン「myVM」のパブリックIPアドレスをコピーして、Terraform環境の仮想マシンからsshで接続します。
$ ssh azureuser@(パブリックIPアドレス)
おわりに
今回は自身もTerraformを使い始めたばかりなので、先ずは第一歩の記事となりました。
インフラ野郎真壁パイセンのブログ「RE-IMAGINE」にはもっと充実したTerraformをAzureで利用する際の記事が豊富に乗っているので、続きはそちらで!
私ももっとTerraformいじり倒したら追加記事を書きたいと思います。