@@ -18,9 +18,16 @@ class SakuraServerUserAgent
1818 DISK_CHECK_INTERVAL = 10 # 秒
1919 MAX_ATTEMPTS = 30 # 10秒 x 30 = 5分
2020
21- # 標準スタートアップスクリプトID
22- # dojopaas-default (2017年から使用)
23- # 内容: iptables設定、SSH強化、Ansible導入
21+ # 標準スタートアップスクリプトID - dojopaas-default
22+ # 作成日: 2017-07-22 (7年間の実績)
23+ #
24+ # 実行内容:
25+ # - iptables設定(ポート22/80/443のみ開放、DDoS対策含む)
26+ # - SSH設定強化(rootログイン無効、パスワード認証無効)
27+ # - Ansible導入(自動化基盤)
28+ #
29+ # 実行タイミング: disk/config API の Notes で指定後、サーバー初回起動時
30+ # 実行ログ: /root/.sacloud-api/notes/112900928939.log
2431 STARTUP_SCRIPT_ID = 112900928939
2532
2633 # サーバー一覧URL(最新の実サーバー情報)
@@ -66,7 +73,9 @@ def initialize(zone:"31002", packet_filter_id:'112900922505', name:nil, descript
6673 @pubkey = pubkey
6774 @resolve = resolve
6875 @plan = 1001 # 1core 1Gb memory
69- # 標準スタートアップスクリプトを使用(デフォルト値または指定値)
76+ # スタートアップスクリプトの設定
77+ # disk/config API の Notes配列形式: [{ID: スクリプトID, Variables: 変数Hash}]
78+ # デフォルト: dojopaas-default (ID: 112900928939) を使用
7079 @notes = notes || [ { ID : STARTUP_SCRIPT_ID } ]
7180 @sakura_zone_id = zone_id
7281 @archive_id = nil
@@ -324,12 +333,20 @@ def stop_server(server_id)
324333 private
325334
326335 def _put_ssh_key ( disk_id )
327- # disk/config APIを使用してSSH鍵とスタートアップスクリプトを設定
336+ # さくらのクラウドAPI v1.1 disk/config エンドポイントを使用
337+ # 公式ドキュメント: https://manual.sakura.ad.jp/cloud-api/1.1/disk/index.html#put_disk_diskid_config
338+ #
339+ # このAPIにより以下が設定される:
340+ # 1. SSH公開鍵の登録(SSHKey.PublicKey)
341+ # 2. スタートアップスクリプトの指定(Notes配列)
342+ #
343+ # 重要: Notesで指定されたスクリプトは次回サーバー起動時に自動実行される
344+ # 実行後は設定がクリアされるため、重複実行は発生しない
328345 body = {
329346 SSHKey : {
330347 PublicKey : @pubkey
331348 } ,
332- Notes : @notes
349+ Notes : @notes # 例: [{ID: 112900928939}] - dojopaas-default スクリプト
333350 }
334351 puts "DEBUG: Setting SSH key via disk/config API" if @verbose
335352 puts "DEBUG: Notes being set: #{ @notes . inspect } " if @verbose
@@ -340,13 +357,21 @@ def _put_ssh_key(disk_id)
340357 end
341358
342359 def _copying_image
343- # SSH鍵とスタートアップスクリプトはdisk/config APIで設定済み
344- # /server/{id}/power APIはパラメータなしで呼び出す(Notesパラメータは無視される)
360+ # サーバー起動処理
361+ #
362+ # 前段階で disk/config API により以下が既に設定済み:
363+ # - SSH鍵(SSHKey.PublicKey)
364+ # - スタートアップスクリプト(Notes配列)
365+ #
366+ # /server/{id}/power API仕様:
367+ # - Notesパラメータは受け付けない(無視される)
368+ # - disk/config で設定されたスクリプトが起動時に自動実行
369+ # - スクリプト実行ログ: /root/.sacloud-api/notes/<スクリプトID>.log
345370
346371 puts "DEBUG: Starting server (startup script already embedded in disk)" if @verbose
347372
348373 # サーバー起動(パラメータなし)
349- # Note: スタートアップスクリプトはdisk /config APIで既に設定済み
374+ # disk /config APIで設定済みのスタートアップスクリプトが自動実行される
350375 send_request ( 'put' , "server/#{ @server_id } /power" , nil )
351376
352377 rescue => exception
0 commit comments