@@ -367,6 +367,113 @@ namespace :server do
367367 abort "❌ エラー: #{ e . message } "
368368 end
369369 end
370+
371+ # ========================================
372+ # 個別サーバー作成タスク(テスト用)
373+ # ========================================
374+ desc "指定したサーバーを個別に作成(テスト用)"
375+ task :create , [ :server_name ] => [ :check_api_credentials ] do |t , args |
376+ server_name = args [ :server_name ]
377+
378+ unless server_name
379+ abort "❌ エラー: サーバー名が必要です\n " \
380+ "使い方: rake server:create[coderdojo-japan]\n " \
381+ "注意: servers.csvに登録されているサーバー名を指定してください"
382+ end
383+
384+ puts "=" *60
385+ puts "🚀 DojoPaaS 個別サーバー作成"
386+ puts "=" *60
387+ puts ""
388+ puts "サーバー名: #{ server_name } "
389+ puts ""
390+
391+ # deploy.rbのCoderDojoSakuraCLIクラスを使用(DRY原則)
392+ require_relative 'scripts/deploy'
393+
394+ cli = CoderDojoSakuraCLI . new ( [ ] )
395+ success = cli . create_single_server ( server_name )
396+
397+ if success
398+ puts ""
399+ puts "=" *60
400+ puts "✅ サーバー作成プロセス完了"
401+ puts "=" *60
402+ puts ""
403+ puts "【次のステップ】"
404+ puts "1. SSHで接続確認:"
405+ puts " ssh ubuntu@<IPアドレス>"
406+ puts ""
407+ puts "2. スタートアップスクリプトの実行状況確認:"
408+ puts " ssh ubuntu@<IPアドレス> 'sudo tail -f /var/log/cloud-init-output.log'"
409+ puts ""
410+ else
411+ puts ""
412+ puts "=" *60
413+ puts "❌ サーバー作成に失敗しました"
414+ puts "=" *60
415+ exit 1
416+ end
417+ end
418+
419+ desc "指定したサーバーを再作成(削除して作成)"
420+ task :recreate , [ :server_name ] => [ :check_api_credentials ] do |t , args |
421+ server_name = args [ :server_name ]
422+
423+ unless server_name
424+ abort "❌ エラー: サーバー名が必要です\n " \
425+ "使い方: rake server:recreate[coderdojo-japan]"
426+ end
427+
428+ puts "=" *60
429+ puts "🔄 DojoPaaS サーバー再作成"
430+ puts "=" *60
431+ puts ""
432+
433+ # 1. まず既存サーバーを検索
434+ puts "📍 ステップ1: 既存サーバーの検索"
435+ require_relative 'scripts/deploy'
436+ require_relative 'scripts/sakura_server_user_agent'
437+
438+ # 初期化パラメータとAPIクライアントのセットアップ
439+ cli = CoderDojoSakuraCLI . new ( [ ] )
440+ request_params = cli . send ( :perform_init_params )
441+ ssua = SakuraServerUserAgent . new ( **request_params )
442+
443+ # 既存サーバーを検索
444+ servers = ssua . get_servers ( ) [ 'Servers' ]
445+ existing_server = servers . find { |s | s [ 'Name' ] == server_name }
446+
447+ if existing_server
448+ ip_address = existing_server [ 'Interfaces' ] . first [ 'IPAddress' ]
449+ puts " ✅ 既存サーバーが見つかりました"
450+ puts " - サーバー名: #{ server_name } "
451+ puts " - IPアドレス: #{ ip_address } "
452+ puts ""
453+
454+ # 2. サーバー削除
455+ puts "📍 ステップ2: サーバーの削除"
456+ puts " 削除実行のため、rake server:execute_deletion を使用してください:"
457+ puts " rake \" server:execute_deletion[#{ ip_address } ,true]\" "
458+ puts ""
459+ puts " 削除完了後、以下のコマンドで再作成:"
460+ puts " rake \" server:create[#{ server_name } ]\" "
461+ else
462+ puts " ℹ️ サーバーが存在しません。新規作成します。"
463+ puts ""
464+
465+ # 3. サーバー作成
466+ puts "📍 ステップ3: サーバーの新規作成"
467+ success = cli . create_single_server ( server_name )
468+
469+ if success
470+ puts "✅ 再作成完了"
471+ else
472+ puts "❌ 作成に失敗しました"
473+ exit 1
474+ end
475+ end
476+ end
370477end
371478
372479# ヘルパーメソッド(将来の拡張用に保持)
0 commit comments