LoginSignup
2
1

More than 3 years have passed since last update.

Azure MarketplaceでTerraform環境を手軽にゲット

Last updated at Posted at 2018-04-03

はじめに

2018年3月にTerraform入りのUbuntuイメージがAzure Marketplaceで公開されたので、さっそく使ってみました。

Announcing Terraform availability in the Azure Marketplace

Terraformって

Terraform on Azureの説明は以下のサイト参照。

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入り仮想マシンのデプロイ

以下サイトに英語ですが手順や使い方は詳しく書かれていますが、こちらの記事ではサクっと要点だけお知らせします。

Use an Azure Marketplace image to create a Terraform Linux Virtual Machine with Managed Service Identity

Azureポータルにログインして、「+リソースの作成」から新規ブレードを開き、検索文字列に「terraform」を入力します。
image.png

検索結果の一覧から「Terraform」をクリックします。
image.png

Marketplaceの概要説明がでるので、「作成」をクリックします。
image.png

「1.基本」ブレードでは作成するVM名、ログインユーザ名、ログイン方法、リソースグループ名、作成リージョン等お好みで設定します。
image.png

「2.Additional Settings」ではVMのサイズ、ディスク種別をお好みによって選択します。
デフォルトのStandard DS2で32GBのSSDの場合、ざっくり月額2万円くらいでしょうか。こちらの仮想マシンサイズを下げてもTerraformのデプロイ時間が遅くなる他は特に影響はないと思いますので、個々の事情に合わせたサイズを選択しましょう。
image.png

「3.概要」では先に設定した内容が正しいか確認後に「OK」をクリックします。
image.png

「4.購入」では念のため使用条件を確認後、「作成」をクリックします。
今回のTerraformではAzure仮想マシン関連の料金の他はかかりません。
image.png

暫く待つと、指定したリソースグループ内に仮想マシンが作成完了します。
DNS名をクリップボードなどにコピーしておきます。
image.png

TeraTermなどで先ほどの仮想マシンにsshでログインできることを確認します。
image.png

Terraformの初期設定

仮想マシンにログイン後、以下のコマンドを実行します。

$ . ./tfEnv.sh

https://microsoft.com/devicelogin を開き、指定されたコードを入力後、先ほどと同じAzureポータルにサインインした時と同じアカウントでサインインします。
image.png

サイインイン完了後、特にエラーメッセージが出力されなければ初期設定は完了です。
image.png

サンプルスクリプトの準備

Terraform によって Azure に完全な Linux 仮想マシンのインフラストラクチャを作成するの最後の方にある「完全な Terraform スクリプト」をベースに若干修正してテスト実行してみましょう。

まずは適当な作業ディレクトリを作成して(今回はsample1)、その中にtfTemplateディレクトリ配下にあるremoteState.tfをコピーします。

$ mkdir sample1
$ cp tfTemplate/remoteState.tf sample1/.
$ cd sample1

続いてサンプルスクリプトを適当な名前でsample1ディレクトリ内に保存します(今回はazurevm.tf)。

サンプルスクリプト内の修正前に、ssh鍵の生成を行っておきます。
以下のコマンドを実行後、確認待ちの部分は全てEnterを押下します。

$ ssh-keygen

image.png

.ssh/id_rsa.pub の内容をクリップボード等にコピーしておきます。

サンプルスクリプトの6行目から11行目(providerの一節)を全てコメントアウトします。
image.png

151行目のkey_data内容を先ほどコピーした.ssh/id_rsa.pubの内容と入れ替えます。
image.png

これで準備完了です。

サンプルスクリプトの実行

作成したディレクトリに移動していることを確認後、「terraform init」でTerraform環境の初期化を行います。
必要なモジュールのアップデートが行われて実行環境が準備されます。

$ pwd
/home/azureuser/sample1
$ terraform init

image.png

続いて、「terraform plan」コマンドでスクリプト内の検証が行われます。
下記の出力例ではAzureリソースとして8つ新規作成されると表示されています。

$ terraform plan

image.png

最後に「terraform apply」で実際にAzure側に仮想マシンを作成します。
最終確認が行われるので「yes」と入力します。

$ terraform apply

image.png

暫く待つと完了メッセージと共に実行したコマンドも終了します。
image.png

ちゃんとAzure上にもリソースが出来上がっています。
image.png

作成された仮想マシン「myVM」のパブリックIPアドレスをコピーして、Terraform環境の仮想マシンからsshで接続します。
image.png

$ ssh azureuser@(パブリックIPアドレス)

無事ログインできました。
image.png

おわりに

今回は自身もTerraformを使い始めたばかりなので、先ずは第一歩の記事となりました。
インフラ野郎真壁パイセンのブログ「RE-IMAGINE」にはもっと充実したTerraformをAzureで利用する際の記事が豊富に乗っているので、続きはそちらで!
私ももっとTerraformいじり倒したら追加記事を書きたいと思います。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1