タスク

タスクは、リモートサーバーまたはローカルサーバーで実行されるスクリプトです。これを使用してシステム管理タスクを自動化することができます。

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): タスクのスクリプトが実行される場所。remotelocalを指定できます。

  • 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_filescriptを同時に使うことはできません。