
こんにちは。iQeda [@iQeeeda] です。
Linode は AWS EC2 に比べて料金が相当安いです。大体半額くらいのイメージです。
ちょっとしたアプリとか、社内用のアプリであれば Linode で簡単に動かすと安く済みます。
また最近では Web の管理画面から手動でポチポチ環境構築するのではなく、定義ファイルを管理しておいてコマンド一発でいつでも何回でも環境構築できるようにするのが流行りです。
これを IaC (Infrastructure as Code) といいます。
今回は Terraform で Linode インスタンスを構築する IaC ノウハウを共有します!
【テンプレート】GitHub でサンプルコード公開中
README.md 通りやってもらえれば多分大丈夫とおもいます!main.tf はカスタマイズできるので、僕はテンプレート代わりにしています。
Linode で API Token を発行する
管理画面以外から Linode を操作するには API Token を発行して、その値を利用する必要があります。
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」の最新記事



【Fingerprint】CircleCIがSSHできない問題解決
【Laravel】セッションタイムアウト後のログイン処理で前回URLに遷移するバグ修正
M1 Mac(2021)でanyenv/phpenvの初期設定!