我想设置一个tmuxinator项目来打开一个动态数量的tmux窗口。在我的场景中,我希望在AWS自动缩放组中每个实例都有一个窗口。
我有一个bash函数来列出我想要附加到的每个服务器的私有IP。例如:
$ prod-ips
10.X.X.1
10.X.X.2
10.X.X.3
10.X.X.4我有一个bash功能,可以隧道到任何一个IP:
$tunnel_to 10.X.X.1
....
works
ec2-user@10.x.x.1 ~ $如何将从prod-ips返回的IP列表传递到tmuxinator项目,以便它将为每一行输出打开1个窗口?
谢谢!
发布于 2015-11-02 16:05:24
由于项目文件是首次作为再培训局处理,所以可以执行以下操作:
# ~/.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-15 09:53:55
谢谢@pdoherty926 926,我正在寻找的是ERB语法。
看起来,在我的bash_profile中定义的函数不起作用,但是如果我在tmuxinator conf中将这些函数写出来,那么所有这些函数都能工作:
此工作( echo是合并成一行的prod的输出):
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命令可以工作:
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 %>https://stackoverflow.com/questions/32878441
复制相似问题