Skip to content

Commit 0741801

Browse files
committed
docs: スタートアップスクリプト関連のコメントを充実
- disk/config API の公式ドキュメント URL を追加 - Notes配列でのスタートアップスクリプト設定の詳細説明 - 実行タイミングと自動実行の仕組みを明記 - スクリプト実行ログの保存場所を追加 - 7年間の実績と具体的実行内容を明記 参考: https://manual.sakura.ad.jp/cloud-api/1.1/disk/index.html#put_disk_diskid_config
1 parent 22d4c6f commit 0741801

File tree

1 file changed

+34
-9
lines changed

1 file changed

+34
-9
lines changed

scripts/sakura_server_user_agent.rb

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)