1

基本命令

启动虚拟机的工具,依赖virtual box。
基本命令:

  • 列表:vagrant box list
  • 添加:vagrant box add ubuntu14 Documents/study/vagrant_box/ubuntu14-gnome.box
  • 初始化:vagrant init ubuntu14
  • 启动:vagrant up
  • 登录:vagrant ssh [hostname]
  • 关闭:vagrant halt
  • 重启:vagrant reload (修改Vagrantfile后需要)
  • 状态:vagrant status
  • 删除:vagrant destroy

网络配置

各种连接方式下,如何配置Vagrantfile,使得主机可以ping虚拟机?(注意:默认的网络连接方式是:NAT)

  • nat:端口转发

    # 主机8080 -> 虚拟机80
    config.vm.network "forwarded_port", guest: 80, host: 8080
  • hostonly:私有网络

    # 主机与虚拟机间的私有网络,仅宿主机可访问。(私有ip保留地址容易冲突,最简单的方法是允许通过DHCP分配IP)
    config.vm.network "private_network", type: "dhcp"
  • bridge:共有网络

    # 通过路由器,分配一个内网的ip地址,该虚拟机相当于一台真正的主机。(可通过bridge指定 或 启动时选择编号,如:1)
    config.vm.network "public_network"
    

以上各项,选择其中一个,都可以完成主机访问虚拟机的需求。

测试:安装httpd。启动:sudo /etc/init.d/apache2 start。

优缺点对比:

  • 端口转发:有针对性的把虚拟机的某些端口公布到外网让其他人去访问
  • 私有网络:仅允许宿主机访问,安全性非常高,但是团队成员不能操作
  • 共有网络:拥有路由器分配的独立内网ip,可以看成一台正真的主机

注意:私有网络的虚拟机,宿主机别拨vpn。因为保留的私有ip地址无法联网。

共享文件夹

修改Vagrantfile中的配置 ==> config.vm.synced_folder “~/share", “/home/vagrant/share”
注意:仅仅如此不会生效,需要配置无密码sudo

无密码sudo配置

Vagrant的许多方面都希望默认的SSH用户可以配置无密码的sudo。这允许Vagrant配置网络,挂载同步文件夹,安装软件等。
安装sudo后,配置它(通常使用visudo)允许“vagrant”用户的无密码sudo。这可以通过配置文件末尾的以下行来完成:
vagrant ALL=(ALL) NOPASSWD: ALL

主机间建立ssh信任

实现:ssh vagrant@172.28.128.3 免密登录。

# 在主机A上生成公私钥
$ ssh-keygen -t rsa ------------------------------------------------------ 检查:ssh-add -L;添加:ssh-add ~/.ssh/id_rsa
# 与主机B建立关系
$ ssh-copy-id -i nameB@machineB
# 手动方式,和ssh-copy-id xx 等效
cat $HOME/.ssh/id_rsa.pub | ssh vagrant@192.168.59.2 'cat >> $HOME/.ssh/authorized_keys'
# 请注意,OpenSSH对文件权限非常挑剔。因此,确保~/.ssh具有0700权限,授权密钥文件具有 0600权限。
sudo chmod 0700 ~/.ssh/
sudo chmod 0600 ~/.ssh/authorized_keys

备注:root用户执行ssh-keygen,生成的文件在/root/.ssh下。
如果想将root下的id_rsa.pub复制到machineB的root权限的文件夹下,需要手动将/root/.ssh/authorized_keys追加到machineB:/root/.ssh/authorized_keys。

vagrant ssh 认证失败

实现:vagrant ssh 免密登录。
1、修改insecure_private_key
$ vagrant ssh-config ==> IdentityFile ~/.vagrant.d/insecure_private_key

# 在Vagrantfile中配置
config.ssh.private_key_path = "~/.ssh/id_rsa”
config.ssh.forward_agent = true
# 或者,用个人系统私钥的内容更改insecure_private_key

2、建立ssh信任(详见上)

vagrant 集群

创建并编辑Vagrantfile,执行vagrant ssh。
常见问题:

  • 同步文件夹失败:配置无密码sudo,再执行vagrant reload
  • vagrant ssh 认证失败,导致下面的虚拟机无法创建:ctrl+c,然后实现 vagrant ssh 免密登录,再vagrant up
    如果以后搬家,ip改变了,几处需要修改:
  • ssh信任需要重新建立,因为known_hosts不认识了
  • 修改ip-主机映射:vi /etc/hosts

注意:传统虚拟机节点占用资源过多,在mac上模拟节点最好还是选用docker。


kongyunhui
51 声望1 粉丝

引用和评论

0 条评论