如何更好地保护 vagrant 虚拟机并删除 vagrant 用户

如何更好地保护 vagrant 虚拟机并删除 vagrant 用户

我正在尝试使用 vagrant 来配置虚拟机(设置 IP 地址、资源等),但我也试图解耦 vagrant 对 ansible 的依赖,即我只想使用 vagrant 使用 ansible 进行一次性配置,其中设置我自己的授权用户,保护它,然后单独使用 Ansible 对这些虚拟机进行进一步配置。然后我仍然想使用 vagrant(也许有更好的方法)来启动/关闭/暂停/销毁虚拟机。

这是我目前所拥有的:

vagrant up
  • 使用 vagrant box 创建新的 VM 实例

BP在 vagrant up 期间运行的内置配置程序

  • 添加我的新用户(假设ansibleuser
  • 添加我自己的公钥,ansibleuser's .ssh以便ansibleuser只能通过私钥登录(并相应地禁用密码登录)。
  • 修改/etc/sudoers为无密码 sudo
  • [目前不起作用] 删除vagrant用户,并更改 root 密码,使 root 无法访问

问题

  1. 我无法在配置器vagrant期间删除用户,BP因为配置器以该用户身份登录。我需要以不同的用户身份运行不同的配置器(ansibleuser)来删除 vagrant。有没有更好的方法可以用第一次vagrant up命令来做到这一点

  2. 如果我这样做vagrant halt,然后vagrant up再次,该过程永远不会完成,因为它尝试以 vagrant 身份进行 ssh 并且Warning: Authentication failure. Retrying...无法成功“启动”。有没有办法解决这个问题。一个可能的解决方法是指定用户,config.ssh但需要根据我调用的时间进行一些条件检查vagrant up

我该如何解决这两个问题?有没有更好的方法来完成我想要完成的任务?有没有更好的方法来配置一个安全且基本的虚拟机,并设置 ssh,以便我可以使用 ansible 进行任何我想要的额外配置?我真的很喜欢使用 vagrant 文件配置虚拟机的简单性,即设置shared_folders、配置CPU/RAM资源、创建虚拟网卡。

答案1

Vagrant 将使用 vagrant 用户进行 ssh 操作。您可以使用 config.ssh.username 指定其他用户(请参阅https://www.vagrantup.com/docs/vagrantfile/ssh_settings.html)。然而,听起来你不想让 vagrant 使用任何用户,因此没有办法解决你的问题。

至于你的第一个问题,你必须先让 vagrant 完成,然后才能销毁 vagrant 用户。所以同样,也没有办法解决这个问题。:(

相关内容