website/www: blog posts on Vagrant stability
This commit is contained in:
parent
3c0b7d0b2b
commit
e1f5c025fd
|
@ -6,6 +6,7 @@ acceptance_config.yml
|
||||||
boxes/*
|
boxes/*
|
||||||
/Vagrantfile
|
/Vagrantfile
|
||||||
/.vagrant
|
/.vagrant
|
||||||
|
/website/www/.vagrant
|
||||||
/vagrant-spec.config.rb
|
/vagrant-spec.config.rb
|
||||||
|
|
||||||
# Bundler/Rubygems
|
# Bundler/Rubygems
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
# -*- mode: ruby -*-
|
||||||
|
# vi: set ft=ruby :
|
||||||
|
|
||||||
|
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
|
||||||
|
VAGRANTFILE_API_VERSION = "2"
|
||||||
|
|
||||||
|
$script = <<SCRIPT
|
||||||
|
sudo apt-get -y update
|
||||||
|
sudo apt-get -y install curl
|
||||||
|
curl -sSL https://get.rvm.io | bash -s stable
|
||||||
|
. ~/.bashrc
|
||||||
|
. ~/.bash_profile
|
||||||
|
rvm install 2.0.0
|
||||||
|
rvm --default use 2.0.0
|
||||||
|
cd /vagrant
|
||||||
|
bundle
|
||||||
|
SCRIPT
|
||||||
|
|
||||||
|
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
|
||||||
|
config.vm.box = "precise64"
|
||||||
|
config.vm.network "private_network", ip: "33.33.33.10"
|
||||||
|
config.vm.provision "shell", inline: $script, privileged: false
|
||||||
|
end
|
|
@ -7,7 +7,7 @@ page_title: "Blog"
|
||||||
---
|
---
|
||||||
|
|
||||||
<div class="Modules blog-landing">
|
<div class="Modules blog-landing">
|
||||||
<% blog.articles.each_index do |i| %>
|
<% blog.articles.take(5).each_index do |i| %>
|
||||||
<% article = blog.articles[i] %>
|
<% article = blog.articles[i] %>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="span8">
|
<div class="span8">
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
---
|
||||||
|
page_title: "Vagrant Stability and Upgrades"
|
||||||
|
title: "Vagrant Stability and Upgrades"
|
||||||
|
author: Mitchell Hashimoto
|
||||||
|
author_url: https://github.com/mitchellh
|
||||||
|
---
|
||||||
|
|
||||||
|
At nearly four years old, Vagrant is considered mature and stable software.
|
||||||
|
Thousands of individuals depend on Vagrant every day to provide
|
||||||
|
a stable working environment, crucial to their productivity. We pride ourselves
|
||||||
|
on shipping software that can stand up to this requirement.
|
||||||
|
|
||||||
|
Even so, we've noticed an unacceptable trend of "upgrade pains" whenever
|
||||||
|
a major new version of Vagrant is released. In every case, once Vagrant is
|
||||||
|
working, it is very stable. However, after an upgrade, the fact some environments
|
||||||
|
have to be "fixed" is not okay.
|
||||||
|
|
||||||
|
A big focus of the project for the past couple months has been improving
|
||||||
|
stability, especially upgrade stability. In this post, I'd like to discuss
|
||||||
|
some of the changes we've made so you can be confident that Vagrant upgrades
|
||||||
|
won't break things for you.
|
||||||
|
|
||||||
|
READMORE
|
||||||
|
|
||||||
|
### Unit Tests
|
||||||
|
|
||||||
|
First, unit test coverage within Vagrant itself has increased nearly 20%
|
||||||
|
since 1.4.0. The unit test coverage has always been very good across the
|
||||||
|
core of Vagrant. However, the test coverage of the core plugins (which power
|
||||||
|
all the commands, providers, provisioners, etc.) has been very bad.
|
||||||
|
|
||||||
|
For
|
||||||
|
Vagrant 1.5, we took a policy of not accepting any changes without associated
|
||||||
|
tests, either written by the contributor or a core contributor. This policy
|
||||||
|
improved unit test coverage greatly, and these new tests have already caught
|
||||||
|
a handful of what would have been subtle upgrade bugs.
|
||||||
|
|
||||||
|
### Vagrant-Spec
|
||||||
|
|
||||||
|
Next, I've personally focused a large amount of effort on the
|
||||||
|
[vagrant-spec](https://github.com/mitchellh/vagrant-spec) project. This
|
||||||
|
project is a black-box acceptance test suite for Vagrant. Given a path to
|
||||||
|
some boxes and a Vagrant executable, it verifies that various features of
|
||||||
|
Vagrant work completely using an outside-in approach.
|
||||||
|
|
||||||
|
The vagrant-spec project tests basic commands, managing boxes, managing
|
||||||
|
plugins, provisioners, synced folder types, etc. It tests all these features
|
||||||
|
across multiple providers. The goal of the project
|
||||||
|
is to eventually have tests covering all options of Vagrant.
|
||||||
|
|
||||||
|
As we work on features, we run Vagrant against vagrant-spec to verify
|
||||||
|
the behavior is still valid. And before any release, we run the complete
|
||||||
|
vagrant-spec suite against boxes for a variety of operating systems to
|
||||||
|
verify that Vagrant is functioning as it should.
|
||||||
|
|
||||||
|
### Longer Deprecation Cycles
|
||||||
|
|
||||||
|
Although we've made it clear that we may
|
||||||
|
[break compatibility](http://docs.vagrantup.com/v2/installation/backwards-compatibility.html)
|
||||||
|
of Vagrantfiles for 1.x until 2.0 is final, we've only introduces a couple
|
||||||
|
backwards incompatibilities. However, when we have introduced them, we've been
|
||||||
|
pretty abrupt about removing the old features.
|
||||||
|
|
||||||
|
Starting with 1.5, we're first deprecating features before outright removing
|
||||||
|
them. The deprecated features will show a warning when Vagrant is run. These
|
||||||
|
features will be removed in a following version of Vagrant.
|
||||||
|
|
||||||
|
### Smoother Upgrades
|
||||||
|
|
||||||
|
With the above three changes put together, upgrading Vagrant should be a
|
||||||
|
smooth, painless process. If there are any pains upgrading future
|
||||||
|
Vagrant versions, please
|
||||||
|
[report a bug](https://github.com/mitchellh/vagrant/issues).
|
||||||
|
|
||||||
|
We've always taken stability very seriously and as the number of people
|
||||||
|
using Vagrant grows, it becomes even more important to keep Vagrant working.
|
Loading…
Reference in New Issue