如何拥有一个自己的Vagrant box

这是一个关于Vagrant的学习系列,包含如下文章:

Vagrant入门

创建自己的Vagrant box

用Vagrant搭建Jenkins构建环境

用Vagrant和Ansible搭建持续交付平台

在上一篇中,我们讲到了Vagrant的基本使用,在本文中我们将尝试创建自己的Vagrant box。

本文源代码:https://github.com/davenkin/vagrant/tree/master/ubuntu1604-jdk1.8-tomcat8

Vagrant box只是提供了一个虚拟机的基线,比如对于Harshicorp官网提供的unbuntu/trusty64这个box,相当于只是一个Ubuntu的ISO安装文件。一般来讲,在安装了操作系统之后,你都需要安装一些额外的软件以供项目所用,比如,要部署一个网站,你可能需要安装Tomcat以及MySQL等等。此时,我们可以通过在Vagrantfile中配置Provision来帮助我们自动完成这些软件安装任务。但是当需要安装的软件越来越多以及需要启动的虚拟机数量越来越多,执行Provison也会变得越来越慢,此时我们便可以将一些公共的软件预先打包到box中,即创建自己的box。然后将这样的box在团队或者公司范围内发布以供后用。当然,除了加快虚拟机启动过程,创建自己的box还使得我们预先对所有虚拟机进行相同的基本配置,比如安装公司的安全证书,比如创建属于自己的操作系统用户(默认用户名为vagrant)以及配置相应的公钥等。

对于Vagrant box来说,我们需要向box注入以下功能:

Vagrant box中需要提供SSH功能,以便能够使用vagrant ssh命令登录虚拟机【更多知识内容

需要提供一个默认的用户以及相应的登录方式(比如免密钥登录和密码登录),对于大多数Vagrant box来说,默认都提供了用户名为vagrant的SSH密码登录功能。

对于特定的Provider,还需要安装某些特定的软件,比如对于Virtualbox来说,为了能使共享文件夹功能能够正常工作,box中还需要安装VirtualBox Guest Additions,另外第一块网卡必须为NAT类型,因为Vagrant需要使用NAT与虚拟机完成首次通信。

当然,我们并不需要完全从头到尾创建一个box,而是可以在一些公共的box的基础之上通过添加额外的功能来创建自己的box,因为这些公共box已经包含了上述功能。本文便将通过使用ubuntu/xenial64作为基础来创建新的box。

我们将使用Shell作为Provision方式,向新的box中添加以下功能:

安装openjdk 1.8

安装Tomcat

首先初始化Vagrantfile:

vagrant init -m ubuntu/xenial64

值得一提的是,ubuntu/xenial64默认使用的SSH登录用户名为ubuntu,而不是先前的vagrant。

编辑Vagrantfile,通过Shell安装openjdk1.8和Tomcat 8,同时设置端口转发以便Host机器能够访问Tomcat主页(由于默认的网络是Virtualbox的NAT,故Host机是不能访问到虚拟机的):

$script = <<SCRIPT

sudo apt-get update

sudo apt-get -y install openjdk-8-jdk

sudo apt-get -y install tomcat8

SCRIPT

Vagrant.configure("2") do |config|

config.vm.provision "shell", inline: $script

config.vm.box = "ubuntu/xenial64"

config.vm.network "forwarded_port", guest: 8080, host: 8080

config.vm.provider "virtualbox" do |v|

v.name = "my-virtualbox"

end

end

启动虚拟机:

vagrant up

此时在Host机上访问http://localhost:8080,你会看到“It Works!”,表示Tomcat安装及运行成功。

好了,前面讲的都只是如何创建虚拟机,有了这些准备我们才能够基于新建的虚拟机创建box。

先关闭虚拟机:

vagrant halt

由于在Vagrantfile中,我们为虚拟机指定了名字“my-vertualbox”,在创建box时我们可以直接通过该名字指向新建的虚拟机:

vagrant package --base my-virtualbox

Vagrant将创建名为package.box的新的box,此后我们便可以使用该package.box作为其他虚拟机的基础box了。另外,如果当前处于Vagrantfile文件所在目录,则可简化创建命令:

vagrant package

如果此时虚拟机正在运行,Vagrant将先关闭运行的虚拟机,然后创建box。另外,“vagrant package”也可以为任何Virtualbox的虚拟机创建box,而不一定非得是vagrant启动的虚拟机,只要“--base”参数指向Virtualbox的某个虚拟机名字即可。

时间: 2024-10-26 12:28:22

如何拥有一个自己的Vagrant box的相关文章

Vagrant box ubuntu/xenial64 没有密码的解决方法

参考了Vagrant box ubuntu/xenial64 の ubuntuユーザ の passwordについて 1. 可以通过 Git Bash 使用  vagrant ssh 登录到Ubuntu/xenial64的终端中 2. 在终端中输入: vim useradd.sh 文件内容 #!/bin/bash set -Ceu USER="vagrant" # password "vagrant" を SHA-512 でハッシュ化 PASSWORD=$(perl

创建自己的Vagrant box

在上一篇中,我们讲到了Vagrant的基本使用,在本文中我们将尝试创建自己的Vagrant box. Vagrant box只是提供了一个虚拟机的基线,比如对于Harshicorp官网提供的unbuntu/trusty64这个box,相当于只是一个Ubuntu的ISO安装文件.一般来讲,在安装了操作系统之后,你都需要安装一些额外的软件以供项目所用,比如,要部署一个网站,你可能需要安装Tomcat以及MySQL等等.此时,我们可以通过在Vagrantfile中配置Provision来帮助我们自动完

从现有的虚拟机创建vagrant box ,再利用新创建的box创建虚拟机

本人使用的虚拟机provider是virtualbox,OS是centos7 创建自己的virtualbox前,需要在virtualbox上已经搭建了一个虚拟机.如下为已经搭建好的虚拟机,虚拟机名称为cusbox_vb1 利用已经搭建好的虚拟机就可以创建自己的vagrant box.创建box之前需要先关闭虚拟机. 创建vagrant box vagrant package --base 虚拟机的名字 --output 要创建的box的名字 如:vagrant package --base cu

sudo:抱歉,您必须拥有一个终端来执行 sudo 解决办法

问题: zabbix进行自定义监控时,根据情况写了一个脚本,用zabbix_get连接客户端进行测试,报错如下: sudo:抱歉,您必须拥有一个终端来执行 sudo 经查:需要修改visudo进行配置#Default requiretty#注释掉 Default requiretty 一行 继续报错: 没有终端存在,且未指定 askpass visudo 添加: zabbix  ALL=(ALL)   NOPASSWORD: ALL

laravel homestead vagrant box安装及使用

1.本地下载https://atlas.hashicorp.com/laravel/boxes/homestead/versions/0.2.6/providers/virtualbox.box下载该box 2.本地添加 vagrant box add laravel/homestead (path to downloaded file) 3.git clone https://github.com/laravel/homestead.git Homestead 4.运行init.sh将生成Ho

【智能聊天机器人】小花猫的成长之路——3.雏形(让你立马拥有一个自己的智能聊天机器人)

大家好,今天不废话了,直接来给大家分享一下如何实现一个网页版智能聊天机器人的基本功能,也就是标题说的:雏形. 首先,上一篇文章已经提过了小花猫的大脑:图灵机器人API接口的介绍.获取和使用.(我为了写心得,特地申请了一个新的KEY) 点击下边的链接试试吧: http://www.tuling123.com/openapi/api?key=bad38ba658622caef62828496c662135&userid=0&info=你好 嘿嘿,是不是看到了一些令人激动的回复信息啦?修改inf

一直想拥有一个自己的GitHub Pages

作为一个码农,拥有一个自己搭建的blog,是一件多么开心的事情,重点是看见它运行起来了.这几天一直弄这事,网上看见了好几个教程,挺好的.然后自己试个在github pages上搭建一个咯.噢,对了原作者是isnowfy,这是他开源的一个小项目,对于小白来说,这个项目可以说非常好.那么……我也就是一个小白咯.嘿嘿…… 这个……就不废话了,我现在还木有成功,直接上他的链接好了,有兴趣的可以去做噢: isnowfy.github.io 我明儿个继续弄!!!

怎样拥有一个网站?从“域名注册”到“网站成功运行”全程概况总结!

根据个人多年建站经验,总结出从"域名注册"到"网站成功运行"的建站说明,供广大朋友学习,希望大家少走弯路! 大概步骤如下: 1.注册域名: 2.开通网站主机(空间): 3.网站域名解析和网站主机绑定: 4.选择建站方式: 5.配置网站. 一.注册域名: 不管是企业还是个人,如何拥有一个自己的网站呢? 首先我们要做的就是为自己的网站起一个域名,说白了就是网址,你希望别人通过输入什么网址能打开你的网站?提示大家,尽量不要用那些免费的域名,不光难记,而且可能会出现各种问题

vagrant box保存路径修改

add box的时候默认保存在C盘用户文件夹 C:\Users\xxx.vagrant.d,通过设置VAGRANT_HOME环境变量改变默认位置 WIN setx VAGRANT_HOME “X:/your/path” setx VAGRANT_HOME “X:/your/path” /M (系统变量) Linux export VAGRANT_HOME=’/path/to/vagrant_home’ 参考 Vagrant改变boxes存放路径 vagrant box保存路径修改 原文地址:ht