Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,22 @@ namespace :server do
end
end

# ========================================
# サーバー状態確認タスク
# ========================================
desc "サーバーの詳細状態を確認"
task :status, [:server_name] => [:check_api_credentials] do |t, args|
server_name = args[:server_name]

unless server_name
abort "❌ エラー: サーバー名が必要です\n" \
"使い方: rake server:status[coderdojo-japan]"
end

puts "🔍 サーバー状態を確認中: #{server_name}"
sh "ruby scripts/utils/check_server_status.rb #{server_name}", verbose: false
end

# ========================================
# 個別サーバー作成タスク(テスト用)
# ========================================
Expand Down
6 changes: 5 additions & 1 deletion scripts/deploy.rb
Original file line number Diff line number Diff line change
Expand Up @@ -147,12 +147,14 @@ def perform_init_params
zone: "29001", # サンドボックス
zone_id: "tk1v",
packet_filter_id: '112900927419', # See https://secure.sakura.ad.jp/cloud/iaas/#!/network/packetfilter/.
verbose: ENV['VERBOSE'] == 'true' # デバッグモード
}
else
{
zone: "31002", # 石狩第二
zone_id: "is1b", # 石狩第二
packet_filter_id: '112900922505', # See https://secure.sakura.ad.jp/cloud/iaas/#!/network/packetfilter/.
verbose: ENV['VERBOSE'] == 'true' # デバッグモード
}
end
end
Expand All @@ -167,9 +169,11 @@ def initial_archive_id
# https://manual.sakura.ad.jp/cloud/server/os-packages/archive-iso/list.html
puts "- Name: #{arch['Name']}"
# 通常版Ubuntu 24.04を使用(disk/config APIでSSH鍵設定、@notesでスタートアップスクリプト実行)
if /ubuntu/i =~ arch['Name'] && /24\.04/i =~ arch['Name'] && !(/cloudimg/i =~ arch['Name']) then
# "Ubuntu Server"で始まるものだけを対象にして、CData Syncなどを除外
if /^Ubuntu Server/i =~ arch['Name'] && /24\.04/i =~ arch['Name'] && !(/cloudimg/i =~ arch['Name']) then
archiveid = arch['ID']
selected_name = arch['Name']
break # 最初にマッチしたものを使用
end
end

Expand Down
22 changes: 12 additions & 10 deletions scripts/sakura_server_user_agent.rb
Original file line number Diff line number Diff line change
Expand Up @@ -324,28 +324,30 @@ def stop_server(server_id)
private

def _put_ssh_key(disk_id)
# disk/config APIを使用してSSH鍵を設定
# disk/config APIを使用してSSH鍵とスタートアップスクリプトを設定
body = {
SSHKey: {
PublicKey: @pubkey
},
Notes: @notes
}
puts "DEBUG: Setting SSH key via disk/config API" if @verbose
send_request('put',"disk/#{disk_id}/config",body)
puts "DEBUG: Notes being set: #{@notes.inspect}" if @verbose
puts "DEBUG: Full body for disk/config: #{body.inspect}" if @verbose
result = send_request('put',"disk/#{disk_id}/config",body)
puts "DEBUG: disk/config API response: #{result.inspect}" if @verbose && result
result
end

def _copying_image
# SSH鍵はdisk/config APIで設定済み
# スタートアップスクリプトはサーバー起動時に指定する必要がある
# SSH鍵とスタートアップスクリプトはdisk/config APIで設定済み
# /server/{id}/power APIはパラメータなしで呼び出す(Notesパラメータは無視される)

puts "DEBUG: Starting server with startup script ID: #{@notes.first[:ID]}" if @verbose
puts "DEBUG: Starting server (startup script already embedded in disk)" if @verbose

# サーバー起動時にスタートアップスクリプトIDを指定
body = {
Notes: @notes
}
send_request('put',"server/#{@server_id}/power", body)
# サーバー起動(パラメータなし)
# Note: スタートアップスクリプトはdisk/config APIで既に設定済み
send_request('put',"server/#{@server_id}/power", nil)

rescue => exception
puts exception
Expand Down