こんにちは。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」の最新記事