原文链接: github.com/ly525/blog/… 应用场景: 本地开发机器是mac或者Linux、windows,需要模拟发布到centos服务器的流程
注意执行该命令位置(pwd) /home/someone/
-
已有box, 位置: /home/someone/centos.box
-
vagrant box add --name centos_for_dev /home/someone/centos.box -
vagrant init centos_for_dev -
会发现在 /home/someone/有一个文件 VagrantFile
-
vagrant up && vagrant ssh登录centos_for_dev 机器 -
自动登录, 用户名和密码都是 vagrant
-
端口映射
- 场景: 需要在vagrant中开启mysql,供host机器访问
config.vm.network "forwarded_port", guest: 8000, host: 3306其中host为宿主机(比如widdows或者mac机器),guest为vagrant内的虚拟机。- 这样在本地访问执行
mysql -u root -p的时候,访问本地3306端口的mysql,实际上访问的是vagrant中的端口为8000的mysql - vagrant reload 重新加载配置文件
- vagrant up 启动机器,vagrant ssh登陆机器之后执行下面操作
sudo vim /etc/sysconfig/iptables编辑防火墙,开启8000端口,供外部访问-A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT- 重启防火墙
service iptables restart
-
文件映射
- 场景: dev环境: Mac 或 windows, production环境: centos。需要针对服务器制定一些脚本或者目录,方便部署。因此需要将dev代码目录映射到vagrant目录,实现dev改了代码之后,和production环境(vagrant,生产环境)代码保持一致,方便调试。不用再使用scp或rsync更新代码了。
config.vm.synced_folder "/home/someone/code/", "/opt/code"- 这样宿主机的
/home/someone/code/目录下的代码修改了之后,vagrant虚拟机的/opt/code目录下的代码会同步更新,或者说二者指向同一份文件 - vagrant reload 重新加载配置文件
-
scp 同步文件
vagrant plugin install vagrant-scp scp -P 2222 your_file vagrant@127.0.0.1:/home/vagrant/ -
vagrnat up 开机
-
vagrant halt 关机
-
创建新用户centos
- 在Vagrant机器中
useradd centos创建centos用户。 - 在Vagrantfile中,添加配置
config.ssh.username = "centos"
- 在Vagrant机器中
更多参见官网文档 Get Started
Vagrant 集群配置
- kiwenlau.com/2016/07/03/…
- github.com/hashicorp/v…
- 关键配置
- 其中需要主要的是网卡相关配置
- node.vm.network "public_network", ip: "10.10.30.#{200+i}", bridge: "en0: Wi-Fi (AirPort)"
- ip 与 ifconfig 中主要的实际使用使用的网络在同一个网段即可,200+是因为200以后的 IP 多数没有被占用
- bridge
使用 networksetup -listallhardwareports查看;关键字List All Network Hardware from the Command Line in OS X
- 设置虚拟的box
node.vm.box = "/Users/someone/workspace/vagrant-boxs/centos7_test.box"
- 可以是 虚拟机 box 的绝对路径
- vagrant 市场中的名称
- 和 Vagrantfile 在同一个文件夹中
node.vm.box = "centos7_test.box"