44
55class SakuraServerUserAgent
66 include SmartWaitHelper
7-
7+
88 require 'jsonclient'
99 require 'base64'
1010 SAKURA_BASE_URL = 'https://secure.sakura.ad.jp/cloud/zone'
@@ -13,23 +13,44 @@ class SakuraServerUserAgent
1313
1414 SAKURA_TOKEN = ENV . fetch ( 'SACLOUD_ACCESS_TOKEN' , 'dummy-token-for-test' )
1515 SAKURA_TOKEN_SECRET = ENV . fetch ( 'SACLOUD_ACCESS_TOKEN_SECRET' , 'dummy-secret-for-test' )
16-
16+
1717 # ディスク状態確認用の定数
1818 DISK_CHECK_INTERVAL = 10 # 秒
1919 MAX_ATTEMPTS = 30 # 10秒 x 30 = 5分
20-
20+
21+ # ゾーン設定(さくらのクラウド)
22+ # 本番環境: 石狩第二ゾーン
23+ PRODUCTION_ZONE = "31002"
24+ PRODUCTION_ZONE_ID = "is1b"
25+
26+ # サンドボックス環境: 東京サンドボックス
27+ SANDBOX_ZONE = "29001"
28+ SANDBOX_ZONE_ID = "tk1v"
29+
30+ # パケットフィルターID
31+ # ファイアウォール設定(ポート22/80/443のみ開放)
32+ # 管理画面: https://secure.sakura.ad.jp/cloud/iaas/#!/network/packetfilter/
33+ PRODUCTION_PACKET_FILTER_ID = '112900922505' # 本番環境用(石狩第二)
34+ SANDBOX_PACKET_FILTER_ID = '112900927419' # サンドボックス環境用
35+
2136 # 標準スタートアップスクリプトID - dojopaas-default
2237 # 作成日: 2017-07-22 (7年間の実績)
23- #
38+ #
2439 # 実行内容:
2540 # - iptables設定(ポート22/80/443のみ開放、DDoS対策含む)
2641 # - SSH設定強化(rootログイン無効、パスワード認証無効)
2742 # - Ansible導入(自動化基盤)
28- #
43+ #
2944 # 実行タイミング: disk/config API の Notes で指定後、サーバー初回起動時
3045 # 実行ログ: /root/.sacloud-api/notes/112900928939.log
3146 STARTUP_SCRIPT_ID = 112900928939
32-
47+
48+ # デフォルトのスタートアップスクリプト設定
49+ # disk/config API の Notes配列形式: [{ID: スクリプトID, Variables: 変数Hash}]
50+ # デフォルト: dojopaas-default (ID: 112900928939) を使用
51+ # https://manual.sakura.ad.jp/cloud-api/1.1/disk/index.html
52+ PRODUCTION_NOTES = [ { ID : STARTUP_SCRIPT_ID } ] . freeze
53+
3354 # サーバー一覧URL(最新の実サーバー情報)
3455 # gh-pagesブランチで公開される実際のサーバー情報
3556 INSTANCES_CSV_URL = "https://raw.githubusercontent.com/coderdojo-japan/dojopaas/refs/heads/gh-pages/instances.csv"
@@ -63,8 +84,13 @@ def self.normalize_ip_address(ip)
6384
6485 # jsのserver.createで使っているフィールドを参考
6586 # デフォルト値を本番環境(石狩第二)に設定
66- def initialize ( zone :"31002" , packet_filter_id :'112900922505' , name :nil , description :nil , zone_id :"is1b" ,
67- tags :nil , pubkey :nil , resolve :nil , verbose :false , notes :nil )
87+ def initialize (
88+ name :nil , description :nil ,
89+ tags :nil , pubkey :nil , resolve :nil , verbose :false ,
90+ packet_filter_id : PRODUCTION_PACKET_FILTER_ID ,
91+ notes : PRODUCTION_NOTES ,
92+ zone : PRODUCTION_ZONE ,
93+ zone_id :PRODUCTION_ZONE_ID )
6894 @zone = zone
6995 @packet_filter_id = packet_filter_id
7096 @name = name
@@ -73,10 +99,12 @@ def initialize(zone:"31002", packet_filter_id:'112900922505', name:nil, descript
7399 @pubkey = pubkey
74100 @resolve = resolve
75101 @plan = 1001 # 1core 1Gb memory
102+
76103 # スタートアップスクリプトの設定
77104 # disk/config API の Notes配列形式: [{ID: スクリプトID, Variables: 変数Hash}]
78105 # デフォルト: dojopaas-default (ID: 112900928939) を使用
79- @notes = notes || [ { ID : STARTUP_SCRIPT_ID } ]
106+ # https://manual.sakura.ad.jp/cloud-api/1.1/disk/index.html
107+ @notes = notes
80108 @sakura_zone_id = zone_id
81109 @archive_id = nil
82110 @verbose = verbose
0 commit comments