Skip to content

Commit f522de5

Browse files
committed
refactor: マジックナンバーを定数化して保守性を向上
- ゾーン設定を定数化(PRODUCTION_ZONE, SANDBOX_ZONE等) - パケットフィルターIDを定数化 - PRODUCTION_NOTESを追加してデフォルトスクリプト設定を明確化 - initializeメソッドのデフォルト値をすべて定数に置き換え - deploy.rbのperform_init_paramsも定数を使用するように更新
1 parent 0741801 commit f522de5

File tree

2 files changed

+43
-15
lines changed

2 files changed

+43
-15
lines changed

scripts/deploy.rb

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -144,16 +144,16 @@ def create_single_server(server_name)
144144
def perform_init_params
145145
if @isSandbox
146146
{
147-
zone: "29001", # サンドボックス
148-
zone_id: "tk1v",
149-
packet_filter_id: '112900927419', # See https://secure.sakura.ad.jp/cloud/iaas/#!/network/packetfilter/.
147+
zone: SakuraServerUserAgent::SANDBOX_ZONE,
148+
zone_id: SakuraServerUserAgent::SANDBOX_ZONE_ID,
149+
packet_filter_id: SakuraServerUserAgent::SANDBOX_PACKET_FILTER_ID,
150150
verbose: ENV['VERBOSE'] == 'true' # デバッグモード
151151
}
152152
else
153153
{
154-
zone: "31002", # 石狩第二
155-
zone_id: "is1b", # 石狩第二
156-
packet_filter_id: '112900922505', # See https://secure.sakura.ad.jp/cloud/iaas/#!/network/packetfilter/.
154+
zone: SakuraServerUserAgent::PRODUCTION_ZONE,
155+
zone_id: SakuraServerUserAgent::PRODUCTION_ZONE_ID,
156+
packet_filter_id: SakuraServerUserAgent::PRODUCTION_PACKET_FILTER_ID,
157157
verbose: ENV['VERBOSE'] == 'true' # デバッグモード
158158
}
159159
end

scripts/sakura_server_user_agent.rb

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
class 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

Comments
 (0)