我用 Vagrant 设置了一个虚拟机。计划是使用 shell 脚本配置虚拟机。脚本将执行操作,连接到我公司的 ansible 服务器,并让服务器运行一个剧本,将主机列表设置为虚拟机。现在的问题是建立连接。因为一切都将自动运行,所以用户输入应该很少或根本不需要。
我尝试通过 ssh 执行此操作。服务器的密钥已在我的虚拟机上。虚拟机的密钥必须放在服务器上。我的问题是,第一次建立连接时需要有服务器连接的密码。
我不使用 ansible-pull 或 Ansible 作为 Vagrant 的配置器,因为一切在 Windows 上也应该能正常工作。
您对如何做到这一点以及可能有效的不同方法有什么建议吗?
答案1
不管你的解决方案是什么,以下是一些想法:
- 如果您的新 VM 类似于 Debian - 您可以使用 preseed.cfg 自动配置 VM,并且在安装完成后(第一次重新启动之前)有一个“late_command”选项。此时您可以导入一些 authorized_keys。这样您的 VM 就会出现已配置的公钥。我相信基于 Redhat 的操作系统有类似的解决方案。至少可以使用模板克隆 VM
- 另一个选项是将密码传递给
ssh-copy-id
。sshpass
请参阅自动化 ssh-copy-id
这不是问题的一部分,但是:...如果您已经使用 Ansible 进行后续配置,则应该使用 Ansible 剧本,而不是通过 shell 脚本配置 VM。