[DevOps][开发环境] vagrant-操作-=-mysql、防火墙、端口映射

113 阅读2分钟

原文链接: github.com/ly525/blog/… 应用场景: 本地开发机器是mac或者Linux、windows,需要模拟发布到centos服务器的流程

注意执行该命令位置(pwd) /home/someone/

  1. 已有box, 位置: /home/someone/centos.box

  2. vagrant box add --name centos_for_dev /home/someone/centos.box

  3. vagrant init centos_for_dev

  4. 会发现在 /home/someone/有一个文件 VagrantFile

  5. vagrant up && vagrant ssh 登录centos_for_dev 机器

  6. 自动登录, 用户名和密码都是 vagrant

  7. 端口映射

    1. 场景: 需要在vagrant中开启mysql,供host机器访问
    2. config.vm.network "forwarded_port", guest: 8000, host: 3306 其中host为宿主机(比如widdows或者mac机器),guest为vagrant内的虚拟机。
    3. 这样在本地访问执行mysql -u root -p的时候,访问本地3306端口的mysql,实际上访问的是vagrant中的端口为8000的mysql
    4. vagrant reload 重新加载配置文件
    5. vagrant up 启动机器,vagrant ssh登陆机器之后执行下面操作
    6. sudo vim /etc/sysconfig/iptables 编辑防火墙,开启8000端口,供外部访问
    7. -A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
    8. 重启防火墙 service iptables restart
  8. 文件映射

    1. 场景: dev环境: Mac 或 windows, production环境: centos。需要针对服务器制定一些脚本或者目录,方便部署。因此需要将dev代码目录映射到vagrant目录,实现dev改了代码之后,和production环境(vagrant,生产环境)代码保持一致,方便调试。不用再使用scp或rsync更新代码了。
    2. config.vm.synced_folder "/home/someone/code/", "/opt/code"
    3. 这样宿主机的/home/someone/code/目录下的代码修改了之后,vagrant虚拟机的/opt/code目录下的代码会同步更新,或者说二者指向同一份文件
    4. vagrant reload 重新加载配置文件
  9. scp 同步文件

    vagrant plugin install vagrant-scp
    scp -P 2222 your_file vagrant@127.0.0.1:/home/vagrant/
    
  10. vagrnat up 开机

  11. vagrant halt 关机

  12. 创建新用户centos

    1. 在Vagrant机器中 useradd centos 创建centos用户。
    2. 在Vagrantfile中,添加配置config.ssh.username = "centos"

更多参见官网文档 Get Started

Vagrant 集群配置

  1. kiwenlau.com/2016/07/03/…
  2. github.com/hashicorp/v…
  3. 关键配置
    1. 其中需要主要的是网卡相关配置
    1. node.vm.network "public_network", ip: "10.10.30.#{200+i}", bridge: "en0: Wi-Fi (AirPort)"
    2. ip 与 ifconfig 中主要的实际使用使用的网络在同一个网段即可,200+是因为200以后的 IP 多数没有被占用
    3. bridge 使用 networksetup -listallhardwareports 查看;关键字List All Network Hardware from the Command Line in OS X
    1. 设置虚拟的box node.vm.box = "/Users/someone/workspace/vagrant-boxs/centos7_test.box"
    1. 可以是 虚拟机 box 的绝对路径
    2. vagrant 市场中的名称
    3. 和 Vagrantfile 在同一个文件夹中 node.vm.box = "centos7_test.box"