我必须使用 Ansible 提供一堆安装在不同物理计算机(OS X、Win、Ubuntu)上的开发 vagrantbox。只要所有 ansible 剧本/角色/模板都是统一的(产品、开发)并存储在 git 中,使用 ansible-pull 并处理存储真实密码的产品配置和保险库就不是一种选择。所以这个想法是让每个 vagrantbox 创建一个反向 ssh 隧道到一些服务器,其中 ansible-playbook 将应用于一系列端口。
问题是:如何从 vagrantbox 中选择一个空闲端口,这样我就不必为开发人员创建的每个 VM 硬编码数字?
另一个问题:有没有其他更简单的方法来配置在不同操作系统上工作的 Vagrant 虚拟机?
请您参考如下方法:
我发现如果将 0 设置为端口号,ssh 会自动选择一个空闲端口。所以运行
ssh -N -f -R 0:localhost:22 user@middle-server
在我的 vagrant 上在中间服务器上建立连接,将 localhost:port-picked 重定向到 vagrant:22,然后我可以将 ansible-playbook 应用到中间服务器上的一系列端口,而无需将 playbook 复制到 vagrant 机器。




