随時続きを書く。同じ名前でタイトル番号を変える。
prov.sh
- prov.sh {list | init ターゲットディレクトリ}
- サブコマンド list : プロビジョナー(スクリプト)をリストする。
- サブコマンド init ターゲットディレクトリ : ターゲットディレクトリにプロビジョナー(スクリプト)と関連ファイルをコピーする。
prov.shでターゲットディレクトリにコピーされるスクリプト
run.sh
ターゲットディレクトリにコピーされたら変更する。変更後は、エントリーポイントとして使う。
このスクリプトは、環境変数をセットして、引数があれば、その名前のプロビジョニングスクリプトを実行する。このとき、run_script.sh を呼ぶ。引数がなければ、wrap.sh をソースする。
wrap.sh
変更は不要。
関数ライブラリ functions.sh と設定ファイル config.sh をソースした後で main.sh をソースする。
run_script.sh
関数ライブラリ functions.sh をソースして、指定されたスクリプトを実行する。なぜか、config.sh は使わない。
config.sh
環境変数をセットして export する。環境変数は全般的・大域的に使うもの。
- $MY_DOMAIN 当該ドメイン名
- $MY_HOSTNAME 当該ホスト名
- $USER ユーザー名
- $PASSWD ユーザーのパスワード
- $FORWARD メールのフォーワード先メールアドレス
環境変数
- $RUNTIME_PROV_DIR : プロビジョニング作業用ディレクトリパス。run.sh の冒頭でセットされる。したがて、run.sh に直書き。
どういうつもり?
- マスターディレクトリに必要なファイルを集めて、作業はターゲットディレクトリで行う。
- マスターディレクトリ内で prov.sh を実行してターゲットディレクトリの初期化を行う。
- ターゲットディレクトリ内でスクリプトの編集を行う。← ここだダサいし間違えやすい。
- ターゲットディレクトリ内で run.sh を引数無しで実行するとセットアップ終了。← のはず。
問題点
次の書式で記述するか。
cmd args: arg1 必須 arg2? オプショナル arg3?=x オプショナルでデフォルト値あり if (arg1) arg4 arg1 が指定されたときは必須 if (arg1) arg5? arg1 が指定されたときはオプショナル if (arg1=a) arg4 arg1 がaに指定されたときは必須 if (arg1=a) arg5? arg1 がaに指定されたときはオプショナル envs: $FOO 必須 $BAR? オプショナル $BAZ?=baz オプショナルでデフォルト値あり requires: foo.sh ソースしている必要があるライブラリや設定データ