在vagrant up上添加/ etc / hosts进入主机的条目

问题描述 投票:38回答:4

vagrant up进程中,是否可以修改主机上的文件?例如,在主机的/etc/hosts文件中添加一个条目以避免必须手动执行此操作?

vagrant
4个回答
53
投票

解决方案是使用vagrant-hostsupdater

vagrant plugin install vagrant-hostsupdater

此插件会在主机系统上的/ etc / hosts文件中添加一个条目。

在启动和重新加载命令时,它会尝试添加信息(如果信息在主机文件中尚未存在)。如果需要添加,则会要求您输入管理员密码,因为它使用sudo编辑文件。

停止,暂停和销毁时,这些条目将再次被删除。


5
投票

好的,所以现在坐在咖啡店旁边的那个人很有可能 ssh到2222端口 (编辑:在较新版本的vagrant上更改,除非您明确启用外部访问)在您的计算机上,使用不安全密钥登录为vagrant,修改您的Vagrant文​​件,因为它是读写并由vagrant用户拥有,插入任意ruby代码在主机环境中运行,现在看起来他们也在主机环境中拥有root访问权限。辉煌。

我希望人们在他们的开发机器上运行防火墙。

编辑:

因此,在写完上述内容后,我对Vagrant的作者进行了窃听,默认情况已被更改,因此默认情况下端口2222未在外部接口上打开。大的改进(虽然仍然需要注意,因为外部访问经常因各种原因而被打开)。

因此,自从发表评论以来我已经努力解决问题,我现在正在减少选票,显然是因为评论过时了。该死的。写的时候是对的。

编辑:

回应Steve Buzonas,关键在于,如果虚拟机的任何可能性受到损害,那么给予vagrant up进程提升权限会对主机环境的安全性造成严重威胁,并且还能够修改/ etc / hosts即使没有一般的root访问权限,环境文件也很危险。正如我已经指出的那样,vagrant保持VM安全的方法并不是特别严格。


0
投票

我不想依赖一些插入流浪汉。它应该是Vagrant的标准功能!!!!直到我使用shell脚本在我的新VM集群中传播VM。关键是:

# Obtain the hostkey based on the IP-address and add it to the known_host list 
ssh-keyscan -t ecdsa ${START}.${OFFSET} >> /home/vagrant/.ssh/known_hosts

# obtain the hostname, because you might not know it yet, with the IP address:
EXTERNAL_HOSTNAME=`ssh ${START}'.'${OFFSET} 'hostname'`
# obtain the key ot the new other VM based on hostname and also add to known_hosts
ssh-keyscan -t ecdsa ${EXTERNAL_HOSTNAME} >>  /home/vagrant/.ssh/known_hosts
# so now you have the IP address and the corresponding hostname
# add to /etc/hosts without being asked for "yes/no"
echo  ${START}'.'${OFFSET}' '${EXTERNAL_HOSTNAME} >> /etc/hosts

其中IPADRRESS是集群中主VM的IP地址,其中多个从节点VM具有成功的IP地址。 (IPADDRESS = IPADDRESS + 1直到没有成功ping)

IPADDRESS=`ip addr show eth1 | grep 'inet ' | cut -d ' ' -f 6 | cut -d '/' -f1`
START=`echo ${IPADDRESS} | cut -d '.' -f1,2,3`
OFFSET=`echo ${IPADDRESS} | cut -d '.' -f4`

然后我循环通过下一个IP地址,直到没有更多的成功ping。我不想硬编码任何东西(ip-address或hostname),但要找出自己。

产生/ etc / hosts文件(在排序/ etc / hosts | uniq> /tmp/hosts.uniq && sudo sh -c'mv /tmp/hosts.uniq / etc / hosts'之后:

[vagrant@master ~]$ cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1       master.RHEL70.local     master
192.168.1.50 master.RHEL70.local
192.168.1.51 node01.RHEL70.local
192.168.1.52 node02.RHEL70.local
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

-2
投票

以前我不知道如何对我的etc / host文件进行vagrant编辑。但是,当我重新安装窗口和流浪汉时,此功能消失了。

© www.soinside.com 2019 - 2024. All rights reserved.