Vagrant

1. 创建box

三种方式,

  • 推荐方式用packer,要开通企业版。
  • 第二种web api方式,
    1. 基于basebox创建box,
    2. package将vagrant环境打包成box
    3. 到页面create box上传box
    4. 到页面your boxes 查看。

      2. Atlas web interface方式上传box

      3. 常用指令

  • vagrant init 配置项

    config.vm.box = "bento/centos-7.2"

config.ssh.insert_key = false

config.vm.network "forwarded_port", guest: 4000, host: 80

config.vm.network "private_network", ip: "192.168.10.10"

config.vm.synced_folder "./data", "/home/vagrant/jekyll_data"

  • vagrant box add bento/ubuntu-16.04

4. getStarted

vagrant init hashicorp/precise64
vagrant up
vagrant ssh
vagrant destroy
# 初始化/开启/ssh登陆/关闭。
  • 初始化生成Vagrantfile文件,把指令变成文件内容一部分。这样环境便能启动。
  • box查找page
  • ssh之后,所在的目录是/home/vagrant,不是同步的目录。同步目录要转到根目录下/vagrant, 默认的同步了当前Vagrantfile所在的目录。ctrl+D退出。
  • destroy关闭虚拟机。要清除box vagrant box list|remove

安装参考

按照页面下载页面/安装。

升级

覆盖安装

卸载

rm -rf /opt/vagrant
rm -f /usr/bin/vagrant</pre>

删除用户数据目录 ~/.vagrant.d

用provision安装包/用户等

provision作用是vagrant up时,能自动安装必要的软件用户等环境。

比如在Vagrantfile平行目录下建立文件bootstrap.sh

#!/usr/bin/env bash

apt-get update
apt-get install -y apache2
if ! [ -L /var/www ]; then
  rm -rf /var/www
  ln -fs /vagrant /var/www
fi</pre>
然后Vagrantfile中<pre>
Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision :shell, path: "bootstrap.sh"
end

Vagrantfile配置后,如果vagrant已经启动,vagrant reload --provision加载provision。provision缺省只在vagrant up的时候运行一次。

inline方式例子
Vagrant.configure(2) do |config|
  config.vm.box = "ubuntu/trusty64"
  config.vm.synced_folder ".", "/var/www/project"
  config.vm.provision "shell", inline: <<-shell apt-get="" update="" install="" -y="" g++="" curl="" -sl="" https:="" deb.nodesource.com="" setup_0.12="" |="" sh="" nodejs="" su="" vagrant="" mkdir="" home="" node_modules="" cd="" var="" www="" project="" ln="" -s="" npm="" karma="" shell="" end="" <="" pre="">

网络配置

本地端口forward到虚拟机

Vagrant.configure("2") do |config|
  config.vm.box = "hashicorp/precise64"
  config.vm.provision :shell, path: "bootstrap.sh"
  config.vm.network :forwarded_port, guest: 80, host: 4567
end

Share

所有能上网的人都能看到这个启动的虚拟机。

  • vagrant login
  • vagrant share 把输出的地址贴到浏览器。url能直接进入vagrant环境,任意设备都能访问。
  • ctrl+c退出。

拆除

要吃饭了,转到另一个项目了,要回家了,怎么清理项目?

  • suspend: 保存当前状态并关机。用up能很快起来。缺点是需要磁盘空间。
  • halt: 关闭电源。也用up起来。好处是干净的关闭和启动。缺点是冷启动时间长。磁盘空间也占用。
  • destroy: 移除虚拟磁盘。

指令

vagrant box -h列出指令 页面 global-status: 显示当前活跃的vagrant。 这些id能用作命令的参数vagrant destroy a1b2c3

站内参考

继承软件otto blog 在vagrant开发的基础上增加了部署的功能。包括了负载均衡,防火墙,路由,新配置等等。 项目


环境:

centos安装node, npm自动安装

参考

mongodb

  • vi /etc/yum.repo.d/mongodb-org-3.0
[mongodb-org-3.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.0/x86_64/
gpgcheck=0
enabled=1
  • yum install -y mongodb-org
  • sudo service mongod start
  • sudo chkconfig mongod on

npmjs镜像

  • npm config set registry https://r.cnpmjs.org
  • npm install --registry http://registry.npmjs.org
  • npm --registry https://registry.npm.taobao.org install express

chinese repo

npm install故障 make g++ command not found
  • yum groupinstall 'Development Tools'

results matching ""

    No results matching ""