- vagrant使用的语法是 Ruby
- 对于当前用户,box 全局存储。每个项目都使用一个 box 作为初始镜像来克隆,并且从不修改基本镜像。这意味着如果你有两个项目都使用我们刚刚添加的 hashicorp/precise64 这个 box,则在一台 guest 机器中添加文件将不会对另一台机器产生影响。
- 你会注意到这些 box 是有命名空间的。box 分为两部分 - 用户名和 box 名 - 用斜线分隔
- 配置
- config.vm.box 表明该vagrant使用的是哪个box, 如果之前没有使用,将会自动下载。
- config.vm.box_version 可以指明使用的box是哪一个版本
- config.vm.box_url 指定box使用url
- vagrant destroy 将会终止虚拟机使用的任何资源, vagrant destroy 命令实际上并不删除下载的 box 文件, 但可以使用 vagrant box remove 命令彻底删除 box 文件。
- config.vm.provision :shell, path: "bootstrap.sh" provision” 行是新添加的,告诉 Vagrant 使用 shell 命令执行 bootstrap.sh 文件来设置虚拟机。 文件路径是相对于 Vagrantfile 文件所在的项目根目录的相对路径。配置写完后,执行 vagrant up,Vagrant 会自动配置。可以在终端看到 shell 脚本的输出 如果虚拟机已经启动, 则需要执行 vagrant reload --provision 因为 Vagrant 只会在第一次 vagrant up 启动虚拟机的时候自动运行 provisioner
- vagrant reload 重新加载vagrant配置
- 配置文件
- github_token :-
- timezone : 时区
- box_check_update : 每次启动是否检查box的更新
- machine_name : box的名称,登录用户名称
- ip : box的ip地址
- cpus : box启动的cpu核数
- memory : box占用的内容大小
- 执行vagrant相关命令是, 会递归的向上查找vagrantFile文件,直至找到或终止于根目录。这意味着,我们可以在项目的任意目录执行vagrant命令, 但是vagrantFile文件应该存放在根目录下。
/home/mitchellh/projects/foo/Vagrantfile
/home/mitchellh/projects/Vagrantfile
/home/mitchellh/Vagrantfile
/home/Vagrantfile
/Vagrantfile
- Vagrantfile 中,可以指定多个 Vagrant.configure 块, 所有配置将按照它们定义的顺序在单个 Vagrantfile 中合并, 合并规则是新的覆盖旧的。 vagrantFile有几种合并层级。
- vagrant-vbguest 用于通过vagrant自动更新 virtualBox github.com/dotless-de/…
- sed -i 's/user = www-data/user = vagrant/g' /etc/php5/fpm/pool.d/www.conf 表示将文件 www.conf 中 所有的 user = www-data 替换成 user = vagrant
vagrant reload
vagrant box remove {basename}
vagrant package # 把当前的运行的虚拟机环境进行打包,可用于分发开发环境
vagrant provision # 设置基本的环境,进一步设置可以使用Chef/Puppet进行搭建