TerraformによるLinodeインスタンス新規作成サンプル

  • このエントリーをはてなブックマークに追加
  • Pocket

こんにちは。タクマ™ [@suwaru_blog] です。

Linode は AWS EC2 に比べて料金が相当安いです。大体半額くらいのイメージです。
ちょっとしたアプリとか、社内用のアプリであれば Linode で簡単に動かすと安く済みます。

また最近では Web の管理画面から手動でポチポチ環境構築するのではなく、定義ファイルを管理しておいてコマンド一発でいつでも何回でも環境構築できるようにするのが流行りです。
これを IaC (Infrastructure as Code) といいます。

今回は Terraform で Linode インスタンスを構築する IaC ノウハウを共有します!

【テンプレート】GitHub でサンプルコード公開中

README.md 通りやってもらえれば多分大丈夫とおもいます!
main.tf はカスタマイズできるので、僕はテンプレート代わりにしています。

Linode で API Token を発行する

管理画面以外から Linode を操作するには API Token を発行して、その値を利用する必要があります。

API Tokens を選択
失効期限なしで、全権限を与えています

variables.tf の token に値を設定してください。

クライアントの公開鍵を設定する

Linode インスタンスに SSH できるクライアント PC を設定します。

その PC の ~/.ssh ディレクトリ内に id_rsa.pub があるかどうか確認してください。
なければ ssh-keygen -m pem で生成してください。

variables.tf の authorized_keys に値を設定してください。

イメージ、リージョン、インスタンスタイプの指定方法

main.tf ファイル内でどんなインスタンスを生成するのか指定しているのですが、これは公式リファレンスでもちょっとわかりにくかったので補足しておきます。

terraform {
  required_providers {
    linode = {
      source  = "linode/linode"
    }
  }
}

provider "linode" {
  # linode の API トークン
  token = "${var.linode.token}"
}

# hoge の箇所はアプリ名など適切な値に変更するといいでしょう
resource "linode_instance" "hoge" {
  image = "linode/ubuntu21.10"
  label = "hoge-web"
  group = "hoge"
  # 東京リージョン
  region = "ap-northeast"
  # 一番しょぼいインスタンスタイプ
  type = "g6-nanode-1"
  authorized_keys = [ "${var.linode_instance.authorized_keys}" ]
  root_pass = "${var.linode_instance.root_pass}"
}

たとえば東京リージョンの値は region = "ap-northeast" という指定の仕方をしていますが、この値は Linode が提供している API を叩いて値を確認しています。

https://api.linode.com/v4/regions という URL にアクセスすると「country”: “jp”」という値を確認できるので ap-northeast が日本のリージョンだとわかります。

ブラウザの URL から GET アクセスすると JSON が一行になってて見にくいので jq ライブラリなど使うと見やすくなりますよ。Mac だったら brew install jq でインストール可能。

# JSON レスポンスの整形
curl -s https://api.linode.com/v4/images | jq

# 結果をファイル保存したい場合
curl -s https://api.linode.com/v4/images | jq '.' > result.json

現状 API を叩いて調べないといけないのが煩わしいですが、これが確認方法となります。
イメージやインスタンスタイプも同じなので API の URL を紹介しておきます。

image の調べ方

region の調べ方

type の調べ方

関連記事

お仕事ください!

僕が代表を務める 株式会社 EeeeG では Web 制作・システム開発・マーケティング相談を行っています。
なにかお困りごとがあれば、Twitter DM や Web サイトからお気軽にご相談ください。

カテゴリ「Develop」の最新記事

最新記事

コメントを残す

*