ホスト

Esshのホストとは、あなたが管理するSSHサーバです。ホスト設定を使用して、Esshは動的にSSHコンフィグを生成し、フック機能を提供し、タグでホストを分類します。

host "web01.localhost" {
    -- SSH config properties.
    HostName = "192.168.0.11",
    Port = "22",
    User = "kohkimakimoto",
    -- ... And you can use all ssh_config options. see ssh_config(5)
    
    -- Essh config properties.
    description = "web01 development server",
    
    hidden = false,
    
    props = {
        aaa = "bbb",
        ccc = "ddd",
    },
    
    tags = {
        "web",
        "development",
    },
    
    hooks_before_connect = {
        "echo bar",
    },
}

ホストは2種類のプロパティで構成されています。 SSHコンフィグプロパティEsshコンフィグプロパティ です。

SSHコンフィグプロパティ

SSHコンフィグプロパティは、最初の文字を大文字にする必要があります。 例えば​​HostNamePortです。 このタイプのプロパティはssh_configを生成するために使用されます。このプロパティはすべてのsshオプションを使用できます。ssh_config(5)を参照してください。

Esshコンフィグプロパティ

Esshコンフィグプロパティは、最初の文字を小文字にする必要があります。 これらはssh_configではなくEsshの機能の特殊な目的に使用されます。

このタイプのプロパティのすべてを以下に記載します。

  • description (string): ホストの説明。これは、ホストのリストとzsh補完に表示するために使用されます。

  • hidden (boolean): trueに設定すると、zsh補完はこのホストを表示しません。

  • hooks_before_connect (table): 接続する前に発火するフック。これはローカルで実行されます。フックはLuaテーブルとして定義されています。このテーブルは、複数の関数または文字列を持つことができます。例を参照してください:

    hooks_before_connect = {
        -- function
        function()
            print("foo")
        end,
    
        -- string (commands)
        "echo bar",
    
        -- If the function returns a string, Essh run the string as a command.
        function()
            return "echo foobar"
        end,
    }
    

    Lua関数で実装されたすべてのフック(hooks_after_connect, hooks_after_disconnectも含む)はローカルで実行されます。

    すべてのフック(hooks_after_connect, hooks_after_disconnectも含む)は、単にsshでログインしたときにのみ発火します。フックはタスクや--execオプションで発火しません。

  • hooks_after_connect (table): 接続後に発火するフック。これはリモートサーバで実行されます。

  • hooks_after_disconnect (table): 切断後に発火するフック。これはローカルで実行されます。

  • tags (array table): タグはホストを分類します。

    tags = {
        "web",
        "production",
    }
    

    タグをホスト名と重複させることはできません。

  • props (table): Propsはホストがタスクで使用されるときの環境変数をESSH_HOST_PROPS_{KEY}で設定します。テーブルキーは大文字に変更されます。

    props = {
        foo = "bar",
    }
    
    -- ESSH_HOST_PROPS_FOO=bar