mcpField
L
linode

linode

github.com/evolv3-aiその他140 回インストール14 週間前に更新
リポジトリ

linode について

linode-cli で Linode インフラを作成・検証するスキルです。運用担当者向けに、サーバーとファイアウォールの構築、SSH、クリーンアップ、LKE の自動スケーリングを案内します。

主な機能

  1. 01デプロイ前の情報収集
  2. 02CLI、API トークン、SSH の確認
  3. 03Linode とファイアウォールの作成
  4. 04SSH 接続の検証
  5. 05LKE 自動スケーリングの案内
  6. 06削除とクリーンアップの手順

活用シーン

  1. 01後続サービス向け Linode の構築
  2. 02リージョンとサーバープロファイルの選択
  3. 03LKE クラスターのノード自動スケーリング計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/evolv3-ai/vibe-skills --skill linode

インストール後、Claude Code で/linodeを入力して読み込まれたか確認します。

同梱ファイルassets/env-templatereferences/OPERATIONS.md

詳細

Linode インフラストラクチャ

重大:シークレットと .env

  • 実際に使用する .env ファイルや認証情報をスキルフォルダー内に絶対に保存しないでください。
  • .env.template ファイルは、スキル内の assets/ にのみ配置してください。
  • 実際に使用するシークレットは ~/.admin/.env に保存し、そこから参照してください。

ステータス:本番環境対応 | 依存関係:linode-cli、SSH キーペア


ナビゲーション

  • 運用、トラブルシューティング、設定、コストの概要:references/OPERATIONS.md

ステップ 0:必要な情報を収集する(必須)

停止してください。デプロイコマンドを実行する前に、すべてのパラメーターをユーザーから収集してください。

このチェックリストをコピーし、各項目を確認してください:

Required Parameters:
- [ ] SERVER_NAME      - Unique name for this server
- [ ] LINODE_REGION    - Region (us-east, us-central, us-west, eu-west, ap-south, etc.)
- [ ] LINODE_TYPE      - Linode type (see profiles below)
- [ ] SSH_KEY_LABEL    - Label of SSH key in Linode
- [ ] SSH_KEY_PATH     - Path to local SSH private key (default: ~/.ssh/id_rsa)

Deployment Purpose (determines recommended profile):
- [ ] Purpose: coolify / kasm / both / custom
      coolify → g6-standard-2 ($36/mo)
      kasm    → g6-standard-4 ($72/mo)
      both    → g6-standard-8 ($144/mo)
      custom  → Ask for specific type

用途別の推奨プロファイル:

用途タイプvCPURAM月額
coolifyg6-standard-224GB$36
kasmg6-standard-448GB$72
両方g6-standard-8816GB$144

すべてのパラメーターを確認するまで、前提条件に進まないでください。


前提条件

このスキルを使用する前に、以下を確認してください:

1. Linode CLI がインストールされている
linode-cli --version

インストールされていない場合は、次のコマンドでインストールしてください:

# Python (pip) - Recommended
pip3 install linode-cli

# macOS (Homebrew)
brew install linode-cli

# Linux (pipx)
pipx install linode-cli
2. Linode アカウントと API トークン

Linode アカウントをお持ちでない場合:

次の URL から登録してください:https://www.linode.com/?r=YOUR_REFERRAL_CODE

開示事項:これは紹介リンクです。60 日間有効な 100 ドル分のクレジットを受け取れます。また、スキルの作成者は、あなたが 25 ドルを利用すると 25 ドル分のアカウントクレジットを受け取ります。このリンクを利用すると、これらのスキルの開発を支援できます。

API トークンを取得:https://cloud.linode.com/profile/tokens

Linodes、Firewalls、NodeBalancers などに対する読み取り/書き込みアクセス権を持つ Personal Access Token を作成してください。

3. linode-cli の設定
linode-cli account view

エラーが表示された場合は、次のコマンドで設定してください:

# Interactive setup
linode-cli configure

# Or via environment variable
export LINODE_CLI_TOKEN="your_token_here"
linode-cli account view
4. SSH キーペア
ls ~/.ssh/id_rsa.pub

存在しない場合は、次のコマンドで生成してください:

ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa -N ""
5. Linode に SSH キーをアップロード
linode-cli sshkeys list

空の場合は、次のコマンドでアップロードしてください:

linode-cli sshkeys create --label "my-key" --ssh_key "$(cat ~/.ssh/id_rsa.pub)"
6. 認証をテスト
linode-cli regions list

失敗した場合:トークンが無効または期限切れの可能性があります。新しいトークンを作成してください。


サーバープロファイル

Coolify/Kasm のデプロイ
プロファイルLinode タイプvCPURAMディスク月額料金
coolifyg6-standard-224GB80GB$36
kasmg6-standard-448GB160GB$72
bothg6-standard-8816GB320GB$144
専用 CPU(最高のパフォーマンス)
プロファイルLinode タイプvCPURAMディスク月額料金
dedicated-smallg6-dedicated-224GB80GB$36
dedicated-mediumg6-dedicated-448GB160GB$72
dedicated-largeg6-dedicated-8816GB320GB$144
プレミアムプラン(より高いパフォーマンス)
Linode タイプvCPURAMディスク月額料金
g7-premium-224GB100GB$43
g7-premium-448GB200GB$86
g7-premium-8816GB400GB$172

デプロイ手順

ステップ 1:環境変数を設定
export LINODE_REGION="us-east"             # See regions below
export LINODE_TYPE="g6-standard-2"         # See profiles above
export LINODE_IMAGE="linode/ubuntu22.04"
export SERVER_NAME="my-server"
export SSH_KEY_LABEL="my-key"
リージョンの選択肢
コード場所リージョン
us-eastNewark, NJ米国東部
us-centralDallas, TX米国中部
us-westFremont, CA米国西部
us-southeastAtlanta, GA米国南東部
us-ordChicago, IL米国中部
us-laxLos Angeles, CA米国西部
us-miaMiami, FL米国南東部
us-seaSeattle, WA米国北西部
ca-centralToronto, Canadaカナダ
eu-westLondon, UK英国
eu-centralFrankfurt, Germanyドイツ
ap-southSingaporeアジア
ap-northeastTokyo, Japan日本
ap-westMumbai, Indiaインド
ap-southeastSydney, Australiaオーストラリア

全一覧を確認するには、linode-cli regions list を実行してください。

ステップ 2:SSH キー ID を取得
SSH_KEY_ID=$(linode-cli sshkeys list --label "$SSH_KEY_LABEL" --format id --text --no-headers)
echo "SSH Key ID: $SSH_KEY_ID"

# Verify
if [ -z "$SSH_KEY_ID" ]; then
  echo "ERROR: SSH key '$SSH_KEY_LABEL' not found. Upload it first."
  exit 1
fi
ステップ 3:ファイアウォールを作成
# Create firewall
FIREWALL_ID=$(linode-cli firewalls create \
  --label "my-firewall" \
  --rules.inbound_policy DROP \
  --rules.outbound_policy ACCEPT \
  --format id --text --no-headers)

echo "Firewall ID: $FIREWALL_ID"

# Allow SSH
linode-cli firewalls rules-update "$FIREWALL_ID" \
  --inbound '[
    {"protocol":"TCP","ports":"22","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"80","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"443","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"8000","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"6001-6002","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"8443","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"3389","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"},
    {"protocol":"TCP","ports":"3000-4000","addresses":{"ipv4":["0.0.0.0/0"],"ipv6":["::/0"]},"action":"ACCEPT"}
  ]' \
  --inbound_policy DROP \
  --outbound_policy ACCEPT
ステップ 4:Linode を作成
LINODE_ID=$(linode-cli linodes create \
  --region "$LINODE_REGION" \
  --type "$LINODE_TYPE" \
  --image "$LINODE_IMAGE" \
  --label "$SERVER_NAME" \
  --authorized_keys "$(cat ~/.ssh/id_rsa.pub)" \
  --root_pass "$(openssl rand -base64 32)" \
  --format id --text --no-headers)

echo "Linode ID: $LINODE_ID"
ステップ 5:Linode にファイアウォールを適用する
linode-cli firewalls device-create "$FIREWALL_ID" \
  --type linode \
  --id "$LINODE_ID"
ステップ 6:待機して Linode の IP アドレスを取得する
# Wait for Linode to be running
echo "Waiting for Linode to be running..."
while [ "$(linode-cli linodes view "$LINODE_ID" --format status --text --no-headers)" != "running" ]; do
  sleep 5
done

# Get IP address
SERVER_IP=$(linode-cli linodes view "$LINODE_ID" --format ipv4 --text --no-headers | head -1)
echo "SERVER_IP=$SERVER_IP"
ステップ 7:サーバーの準備完了を待つ
# Wait for SSH to be available (typically 60-90 seconds)
echo "Waiting for server to be ready..."
until ssh -o ConnectTimeout=5 -o StrictHostKeyChecking=no root@$SERVER_IP "echo connected" 2>/dev/null; do
  sleep 5
done
echo "Server is ready!"
ステップ 8:接続を確認する
ssh root@$SERVER_IP "uname -a && free -h && df -h /"
ステップ 9:後続のスキルに出力する
# Linode only offers x86 architecture
SERVER_ARCH="amd64"

# Save to .env.local for downstream skills
echo "SERVER_IP=$SERVER_IP" >> .env.local
echo "SSH_USER=root" >> .env.local
echo "SSH_KEY_PATH=~/.ssh/id_rsa" >> .env.local
echo "SERVER_ARCH=$SERVER_ARCH" >> .env.local
echo "COOLIFY_SERVER_IP=$SERVER_IP" >> .env.local
echo "KASM_SERVER_IP=$SERVER_IP" >> .env.local

echo ""
echo "Linode deployed successfully!"
echo "  IP: $SERVER_IP"
echo "  Arch: $SERVER_ARCH"
echo "  SSH: ssh root@$SERVER_IP"

デプロイを確認する

ssh root@$SERVER_IP "echo 'Linode connected successfully'"

Kubernetes の自動スケーリング

Linode Kubernetes Engine(LKE)は、ノードを自動的にスケーリングする Cluster Autoscaler をサポートしています。

LKE クラスターを作成する
# Create cluster (via API - CLI doesn't support all options)
linode-cli lke cluster-create \
  --label "my-lke" \
  --region "$LINODE_REGION" \
  --k8s_version "1.28"
Cluster Autoscaler を有効にする

Cluster Autoscaler は管理クラスターで実行され、ワークロードに基づいてスケーリングします。

  1. クラスターに Cluster Autoscaler アドオンをインストールします
  2. Linode API トークンを使用して設定します
  3. プールごとのノード数の最小値と最大値を設定します

参照:https://linode.github.io/cluster-api-provider-linode/topics/autoscaling.html


クリーンアップ

警告:この操作は破壊的で、元に戻すことはできません。

# Delete Linode
linode-cli linodes delete "$LINODE_ID"

# Delete firewall
linode-cli firewalls delete "$FIREWALL_ID"

# Optionally delete SSH key
# linode-cli sshkeys delete "$SSH_KEY_ID"

運用

トラブルシューティング、ベストプラクティス、設定変数、コストスナップショットについては、references/OPERATIONS.md を参照してください。


ログ記録の統合

インフラストラクチャの操作を行う際は、中央ログシステムに記録してください。

# After provisioning
log_admin "SUCCESS" "operation" "Provisioned Linode" "id=$LINODE_ID provider=Linode"

# After destroying
log_admin "SUCCESS" "operation" "Deleted Linode" "id=$LINODE_ID"

# On error
log_admin "ERROR" "operation" "Linode deployment failed" "error=$ERROR_MSG"

ログ記録の詳細については、admin スキルの references/logging.md を参照してください。


参考資料

コメント