Lua VM
EsshはLuaで書かれた設定ファイルを読み込むためにGopherLuaをLua VMとして使っています。
ビルトイン関数
すでにhost
とtask
関数を見てきたように、Esshのコア機能はビルトイン関数で構成されています。Esshが提供しているすべての関数は以下の通りです。
ビルトインライブラリ
Esshには、設定ファイルで使用できるビルトインLuaライブラリが用意されています。
たとえば、json
ライブラリを使いたい場合は、以下のようにLuaのrequire
関数を使います。
local json = require("json")
local jsontext = json.encode({aaa = "bbb", ccc = "ddd"})
print(jsontext)
以下は、Esshに組み込まれているビルトインライブラリです。
json
: layeh/gopher-json.fs
: kohkimakimoto/gluafs.yaml
: kohkimakimoto/gluayaml.question
: kohkimakimoto/gluaquestion.template
: kohkimakimoto/gluatemplate.env
: kohkimakimoto/gluaenv.http
: cjoudrey/gluahttp.re
: yuin/gluaresh
: otm/gluash
定義済みの変数
Esshは事前定義された変数を提供します。 最新のEsshのバージョンには、定義済みの変数が1つあります。essh
です。
essh
はいくつかの関数と変数を持つテーブルです。下記を参照してください
ssh_config
(string): ssh_configはssh_configファイルのパスです。デフォルトでは、Esshを実行すると自動的に生成される一時ファイルです。 ssh_configを静的な宛先に生成するために、この値を上書きすることができます。クライアントコンピュータとターゲットサーバの間のサーバであるゲートウェイホストを使用する場合は、この変数を使用してProxyCommand
を指定することができます。以下の例を参照してください:-- -- network environment. -- [your-computer] -- [getway-server1] -- [web-server] -- host "web-server" { HostName = "192.168.0.1", ProxyCommand = "ssh -q -F " .. essh.ssh_config .. " -W %h:%p getway-server1", }
select_hosts
(function): 定義されたホストを取得します。これは、ホスト設定のオーバライドやデフォルト値の設定に役立ちます。たとえば、デフォルトのssh_config:ForwardAgent = yes
を設定する場合は、以下のコードで実施できます。-- ~/.essh/config_override.lua for _, h in pairs(essh.select_hosts():get()) do if h.ForwardAgent == nil then h.ForwardAgent = "yes" end end
上記の例では、すべてのホストにデフォルト値が設定されます。選択したホストに値を設定したい場合は、次のコードを使います:
-- ~/.essh/config_override.lua -- Getting only the hosts that has `web` tag or name of the hosts is `web`. for _, h in pairs(essh.select_hosts("web"):get()) do if h.ForwardAgent == nil then h.ForwardAgent = "yes" end end -- Using a table, Getting the hosts both `web` or `db` for _, h in pairs(essh.select_hosts({"web", "db"}):get()) do if h.ForwardAgent == nil then h.ForwardAgent = "yes" end end -- You can set a filter. -- Getting only the `web` hosts filtered by `production`. for _, h in pairs(essh.select_hosts("web"):filter("production"):get()) do if h.ForwardAgent == nil then h.ForwardAgent = "yes" end end -- Getting only the first one host using `first` method. local h = essh.select_hosts("web"):first() if h.ForwardAgent == nil then h.ForwardAgent = "yes" end
host
(function):host
関数のエイリアス。task
(function):task
関数のエイリアス。driver
(function):driver
関数のエイリアス。debug
(function): デバッグメッセージを出力します。デバッグメッセージは--debug
オプションつきでEsshを実行したときに出力されます。essh.debug("foo")