02/27
木曜日

スタートアップスクリプト

[更新: 2015年4月27日]
 
「スタートアップスクリプト」機能についての説明ページです。

 

1. スタートアップスクリプトとは

スタートアップスクリプトは、新たにサーバを作成する際、任意のシェルスクリプトを記述した「スタートアップスクリプト」を選択することにより、起動時にそれらを自動的に実行する機能です。この機能により、

 

  • ●yumコマンドを実行し、必要なアプリケーションがあらかじめインストールされた状態にする
  • ●多数のユーザを登録し、起動直後にログインができるようにする
  • ●サーバ内の各設定を自動的に行う

などの自動化が可能となり、サーバ作成後の設定作業の大幅な軽減や、Sacloud APIと組み合わせた自動スケールアウトシステムなどの構築がより簡単に行えるようになります。

 

2. スタートアップスクリプトの動作

サーバ作成画面でスタートアップスクリプトを選択すると、起動後のサーバ内で以下の動作が行われます。

  1. 起動時、/etc/rc.localが/root/.sacloud-api/startup.shを実行
  2. startup.shが、「スタートアップスクリプト」で指定したスクリプト(“/root/.sacloud-api/notes/スタートアップスクリプトID“に配置)を実行
  3. スクリプトが実行され、ログが”/root/.sacloud-api/notes/スタートアップスクリプトID.log”に出力される
  4. 各スクリプトが正しく(終了コードが”0″)終了すると、”/root/.sacloud-api/notes/スタートアップスクリプトID.done”という名前の空ファイルを作成(このファイルが存在すると@sacloud-once を指定したスクリプトは実行されない)

 

3. スタートアップスクリプトの登録方法

スタートアップスクリプトの作成・編集は、コントロールパネル「設定」メニュー内のサイドメニュー「スタートアップスクリプト」から行えます。

コントロールパネル画面右上のアカウント名表示部分のポップアップメニューより「設定」を選択します。
note2a
左のサブメニューより「スクリプト」を選択すると、スタートアップスクリプト管理画面が表示されます。
note5a
初期状態ではユーザが作成したプライベートスクリプトのリストが表示されますが、さくらインターネット側であらかじめ作成済みのパブリックスクリプトを表示する場合は、上部「パブリック」タブをクリックして切り替えます。
note6a
「追加」ボタンをクリックすると「スタートアップスクリプトを追加」画面が表示されるので、ここでスタートアップスクリプトの名前と内容を入力します。
note4
入力後、右下の「作成」ボタンをクリックすると、スクリプト管理画面のプライベートスクリプトのリストに追加され、サーバ追加画面の「スタートアップスクリプト」で選択できるようになります。

 

4. スタートアップスクリプト内で使用できる特殊タグ・変数

スタートアップスクリプト内では、特殊タグとして以下のものが使用できます。
※フォーム表示機能は新サーバ作成画面のみでの対応となります。

■ 実行制御・説明表示

スタートアップスクリプトの実行条件の制御や、コントロールパネルに表示される説明文を設定するタグです。

@sacloud-once

コメントとして以下の行を記述すると、起動時に1回のみ(“/root/.sacloud-api/notes/[該当スタートアップスクリプトID].done”ファイルが存在しない時だけ)実行されるようになります。

# @sacloud-once

※この記述がない場合は、サーバを起動するたびに毎回実行されます。

@sacloud-desc / @sacloud-desc-begin / @sacloud-desc-end

ディスク作成画面のスタートアップスクリプト選択欄に説明文として表示される文字列を指定します。それぞれ以下のように使用します。

#!/bin/bash
# @sacloud-desc-begin
#   複数行のコメントです。
#   行頭の空白文字は自動的に最適化されます。
# @sacloud-desc-end
# @sacloud-desc 1行のコメントです。
# @sacloud-desc これらのタグを複数回使用すると、全コメントが連結されます。

 

@sacloud-require-archive

サーバ作成画面で、指定したOS以外のパブリックアーカイブを選択した場合に警告を表示します。特定のOSのみで動作するスタートアップスクリプトなどに記述することで、想定しない環境へのスクリプト適用を防止することができます。

 
本特殊タグの記法は以下の通りです。
 

# @sacloud-require-archive [OS種別指定子] [バージョン指定子]

※OS種別指定子は必須オプションです。バージョン指定子は任意で付与します。

 
各オプションの指定子は以下の通りです。

 
■OS種別指定子

distro-centos CentOS
distro-sl Scientific Linux
distro-ubuntu Ubuntu
distro-debian Debian/GNU Linux

 
■バージョン指定子

distro-ver-バージョン番号

バージョン番号部には小数点を含む数字、ワイルドカードが指定できます。
例: distro-ver-7 / distro-ver-6.*

 
■記述例
 
・CentOS 6系以外のパブリックアーカイブを指定した場合に警告を表示させる
 

# @sacloud-require-archive distro-centos distro-ver-6.*

 
・Scientific Linux 6.4以外のパブリックアーカイブを指定した場合に警告を表示させる
 

# @sacloud-require-archive distro-sl distro-ver-6.4

 
※このタグはさくらのクラウドで提供されているパブリックアーカイブのみで有効となります。ご自身で作成されたアーカイブでは内容の判定を行うことができないため機能しません。
※APIから操作した場合、警告の表示は行われません。

 

■ 埋め込み変数・フォーム部品関連タグ

新規サーバ作成画面での「ディスクの修正」の項目にフォーム部品を表示し、指定した変数にフォーム入力内容が設定されます。

各タグは、以下のような共通のフォーマットで記述されます。

@sacloud-<フォーム種別> [ <オプション> [ <オプション> ... ]] <変数名> <表示ラベル> [ ex=<グレー表示テキスト> ]

フォームに入力された変数は、”@@@変数名@@@“でその内容を参照できます。
オプションはシェル引数のように解釈されるため、空白を含む場合は引用符で括る必要があります。変数名には英数字とアンダースコアのみ使用できます。

● 共通オプション

各タグに共通して指定可能なオプションの一覧です。

オプション
説明
required 変数の指定を必須とします。
default=<文字列> デフォルトとして適用する値です。
shellarg 埋め込み時にシェル引数用にフォーマットされます。基本的には単引用符(‘)で括られます。
heredoc 埋め込み時に複数行に渡る文字列をヒアドキュメントとしてフォーマットします。終端文字列はランダムに生成されます。
indent=<整数値> 埋め込み時に指定した数の空白文字を各行頭に挿入します。ansibleのYAMLに複数行の文字列を埋め込む際などに有用です。

● フォーム種別指定タグ

各フォームの種別を指定するタグです。

タグ
説明
@sacloud-text 文字列入力欄(1行)を表示します。
次項「@sacloud-text 専用オプション」の専用オプションが使用できます。
@sacloud-password パスワード入力欄(1行)を表示します。
@sacloud-textarea 文字列入力欄(複数行)を表示します。
@sacloud-select-begin
@sacloud-select-end
ポップアップメニューを表示します。
これらのタグで挟まれた行はそれぞれ値と表示ラベルのペアとして解釈され、選択肢として表示されます。
表示ラベルが省略された場合は値がそのままラベルとして用いられます。
@sacloud-checkboxes-begin
@sacloud-checkboxes-end
チェックボックスグループが表示されます。
これらのタグで挟まれた行はそれぞれ値と表示ラベルのペアとして解釈され、選択肢として表示されます。
複数選択された値は半角スペースで結合されます。
@sacloud-checkbox 単一のチェックボックスを表示します。
非選択時は空文字、選択時は”1″が代入されます。

● @sacloud-text 専用オプション

文字列入力欄表示タグ”@sacloud-text”専用のオプションです。

オプション
説明
maxlen=<整数値> 文字列として評価したときに受け入れを許可する長さの上限です。
minlen=<整数値> 文字列として評価したときに受け入れを許可する長さの下限です。
ex=<文字列> 未入力状態のテキストボックスにグレー表示するテキストです。
integer 整数値のみを入力できるようにします。
min=<数値> 数値として評価したときに受け入れを許可する最小の値です。
max=<数値> 数値として評価したときに受け入れを許可する最大の値です。

● 定義済み変数

スクリプト実行時にあらかじめ定義される変数です。

変数名
説明
@@@.ID@@@ ノートIDが設定されます。
@@@.Name@@@ ノート名が設定されます。

 

5. スタートアップスクリプトの例

各フォーム変数を使用し、bashスクリプトで作成したスタートアップスクリプトの例です。

#!/bin/bash
# @sacloud-once
# @sacloud-text required shellarg maxlen=100 blog_title "ブログタイトル"
# @sacloud-textarea required heredoc maxlen=1000 blog_desc "説明" ex="例:さくらのblogです"
# @sacloud-text integer min=5 max=100 default=5 articles_per_page "ページあたりの記事数"
# @sacloud-radios-begin default=two-r layout "レイアウト"
#     two-r "2カラム(右サイドバー)"
#     two-l "2カラム(左サイドバー)"
#     three "3カラム"
# @sacloud-radios-end
# @sacloud-select-begin default=white theme "デザインテーマ"
#     white "白"
#     red   "赤"
#     wooden
#     crystal
# @sacloud-select-end
# @sacloud-checkboxes-begin default=history,tagcloud home_display "ホーム画面表示項目"
#     history "更新履歴"
#     profile "プロフィール"
#     tagcloud "タグクラウド"
#     twitter "Twitter"
# @sacloud-checkboxes-end
# @sacloud-checkbox default=on allow_comment "コメントを許可する"
BLOG_TITLE=@@@blog_title@@@
ARTICLES_PER_PAGE=@@@articles_per_page@@@
LAYOUT=@@@layout@@@
THEME=@@@theme@@@
HOME_DISPLAY=@@@home_display@@@
ALLOW_COMMENT=@@@allow_comment@@@
cat >/root/test.txt @@@blog_desc@@@
echo $BLOG_TITLE >> /root/test.txt
exit 0

サーバ作成時にこのスクリプトが選択されると以下のようなフォームが表示されます。
script-form
上記の図の入力内容でサーバを作成すると、以下のように変数展開されたスクリプトがディスクに書き込まれます。

#!/bin/bash
# @sacloud-once
# @sacloud-text required shellarg maxlen=100 blog_title "ブログタイトル"
# @sacloud-textarea required heredoc maxlen=1000 blog_desc "説明" ex="例:さくらのblogです"
# @sacloud-text integer min=5 max=100 default=5 articles_per_page "ページあたりの記事数"
# @sacloud-radios-begin default=two-r layout "レイアウト"
#     two-r "2カラム(右サイドバー)"
#     two-l "2カラム(左サイドバー)"
#     three "3カラム"
# @sacloud-radios-end
# @sacloud-select-begin default=white theme "デザインテーマ"
#     white "白"
#     red   "赤"
#     wooden
#     crystal
# @sacloud-select-end
# @sacloud-checkboxes-begin default=history,tagcloud home_display "ホーム画面表示項目"
#     history "更新履歴"
#     profile "プロフィール"
#     tagcloud "タグクラウド"
#     twitter "Twitter"
# @sacloud-checkboxes-end
# @sacloud-checkbox default=on allow_comment "コメントを許可する"
BLOG_TITLE='さくらインターネットブログ'
ARTICLES_PER_PAGE=20
LAYOUT=three
THEME=red
HOME_DISPLAY='history profile tagcloud'
ALLOW_COMMENT=1
cat >/root/test.txt <<'HD_538ed94b2dafd'
さくらインターネット株式会社のブログです。
弊社サービスの最新情報などをお届けします。
HD_538ed94b2dafd
echo $BLOG_TITLE >> /root/test.txt
exit 0

 

6. 設定済みスタートアップスクリプト

さくらのクラウドでは、すぐにお使いいただける設定済みの便利なスクリプトをいくつか用意しています。

詳しくはパブリックスタートアップスクリプトのページを参照ください。