1

動的な数の tmux ウィンドウを開くように tmuxinator プロジェクトをセットアップしたいと思います。私のシナリオでは、AWS Auto Scale Group のインスタンスごとに 1 つのウィンドウが必要です。

アタッチする各サーバーのプライベート IP を一覧表示する bash 関数があります。例えば:

$ prod-ips
10.X.X.1
10.X.X.2
10.X.X.3
10.X.X.4

これらの IP のいずれかにトンネリングする bash 関数があります。

$tunnel_to 10.X.X.1
....
works
ec2-user@10.x.x.1 ~ $

から返された IP リストをprod-ipstmuxinator プロジェクトに渡して、出力の行ごとに 1 つのウィンドウを開くにはどうすればよいですか?

ありがとう!

4

2 に答える 2

1

プロジェクト ファイルは最初に ERB として処理されるため、次のようなことができます。

# ~/.tmuxinator/dyn.yml

name: dyn
root: ~/
windows:
  # just using `echo` as a POC; this is where you'd make your function call
  <%- `echo "111,222,333"`.split(',').each do |ip| %>
  - tunnel-to-<%= ip.chomp %>: echo tunnel_to <%= ip %>
  <%- end %>
于 2015-11-02T16:05:24.673 に答える
0

@pdoherty926 に感謝します。ERB 構文は私が探していたものです。

私の中で定義された関数は機能しbash_profileないように見えますが、これらの関数を tmuxinator conf に書き出すと、すべて機能します。

これは機能します (エコーは、単一行に統合された prod-ips の出力です)。

windows:
  <%- `echo 10.250.XX.X1,10.250.XX.X2,10.250.XX.X3`.split(',').each do |ip| %>
    - ip-<%= ip.chomp %>: tunnel_to <%= ip %>
  <%- end %>

しかし、このコマンドは機能しません:

windows:
  <%- `prod-ips`.split("\n").each do |ip| %>
    - ip-<%= ip.chomp %>: tunnel_to <%= ip %>
  <%- end %>

しかしprod-ips、ファイルにロングハンドを定義すると、tmuxinator start コマンドが機能します。

windows:  
  <%- `aws ec2 describe-instances | jq '.Reservations[].Instances[] | select(has("SecurityGroups")) | select(.SecurityGroups | length > 0) | select(.SecurityGroups[0].GroupName | test("<SECURITYGROUPFILTER>")) | .PrivateIpAddress' | sed -e 's/"//g'`.split("\n").each do |ip| %>    
    - ip-<%= ip.chomp %>: tunnel_to <%= ip %>
  <%- end %>
于 2015-11-15T09:53:55.553 に答える