タスク
タスクは、リモートサーバーまたはローカルサーバーで実行されるスクリプトです。これを使用してシステム管理タスクを自動化することができます。
例
task "example" {
description = "example task",
targets = {
"web",
},
filters = {
"production",
},
backend = "local",
parallel = true,
prefix = true,
script = {
"echo foo",
"echo bar"
},
}
注意:タスク名はホスト名と重複して定義することはできません。
以下のコマンドでタスクを実行できます。
$ essh example
タスクに引数を渡すことができます。
$ essh example foo bar
プロパティ
description(string): タスクの説明。pty(boolean): trueに設定すると、SSH接続はssh -t -tのように複数の-tオプションを使用してsshコマンドに擬似端末を割り当てます。driver(string): このタスクで使用するドライバ。Driversを参照してください。parallel(boolean): trueに設定すると、タスクのスクリプトを並列に実行します。privileged(boolean): trueに設定すると、特権ユーザーがタスクのスクリプトを実行します。これを使用する場合は、パスワードなしでsudoを使用できるようにマシンを設定する必要があります。user(string): タスクのスクリプトを指定のユーザで実行します。これを使用する場合は、パスワードなしでsudoを使用できるようにマシンを設定する必要があります。hidden(boolean): trueの場合、このタスクはタスクリストに表示されません。targets(string|table): タスクのスクリプトが実行されるホスト名またはタグ。filters(string|table): ターゲットホストをフィルタリングするためのホスト名またはタグ。このプロパティはtargetsと一緒に使わなければなりません。backend(string): タスクのスクリプトが実行される場所。remoteかlocalを指定できます。prefix(boolean|string): trueの場合、Esshはタスクの出力にホスト名のプレフィックスをつけて表示します。文字列の場合、Esshはタスクの出力にカスタムのプレフィックスをつけて表示します。この文字列は{{.Host.Name}}のようなテキスト/テンプレート形式で使用できます。prepare(function): Prepareは、タスクの開始時に実行される関数です。例を参照してください:prepare = function (t) -- override task config t.targets = "web" -- get command line arguments print(t.args[1]) -- cancel the task execution by returns false. return false end,prepare関数によってfalseが返されると、タスクのスクリプトの実行を取り消すことができます。
props(table): Propsはタスクが実行されるとき、環境変数をESSH_TASK_PROPS_${KEY}=VALUEで設定します。テーブルキーは大文字に変更されます。props = { foo = "bar", } -- export ESSH_TASK_PROPS_FOO="bar"script(string|table): 実行されるコードです。例:script = [=[ echo aaa echo bbb echo ccc ]=]or
script = { "echo aaa", "echo bbb", "echo ccc", }テーブルで設定すると、Esshはテーブルの文字列を改行コードで連結します。 Esshはスクリプトをbashスクリプトとして実行します。しかし、これはただのデフォルトの動作です。ドライバで変更できます。
スクリプトでは、定義済みの環境変数を使用できます。以下を参照してください。
ESSH_TASK_NAME: タスク名。ESSH_SSH_CONFIG: 生成されたssh_configファイルのパス。ESSH_DEBUG: CLIで--debugオプションを設定した場合この変数は”1”に設定されます。ESSH_TASK_PROPS_${KEY}: タスクのpropsによって設定される値。ESSH_TASK_ARGS_${INDEX}: コマンドライン引数によって渡される引数の値。インデックスは ‘1’から始まります。ESSH_HOSTNAME: ホスト名。ESSH_HOST_HOSTNAME: ホスト名。ESSH_HOST_SSH_{SSH_CONFIG_KEY}: ssh_configのキー/バリュー ペア.ESSH_HOST_TAGS_{TAG}: タグ。タグを設定すると、この変数の値は”1”になります。ESSH_HOST_PROPS_{KEY}: ホストのpropsによって設定される値。ホストを参照してください。ESSH_NAMESPACE_NAME: ネームスペース名。ネームスペースを参照してください。
script_file(string): ファイルパスまたはhttpまたはhttpsでアクセスできるURL。ファイルの内容が実行されます。script_fileとscriptを同時に使うことはできません。