Merge docs and www into a single static site
This is a big commit, and I apologize in advance for the future git-blames all pointing to me. This commit does a few things: 1. Merges the website/docs and website/www repo into a single website repo to be in line with other HashiCorp projects 2. Updates to use middleman-hashicorp 3. Converts less to scss to be in line with other projects 4. Updates page styles to be in line with other projects 5. Optimizes images 6. Prepare for S3 + Fastly deployment with scripts, etc. 7. Removes blog posts (they have been transferred to hashicorp.com with redirects in place 8. Updated sitemap generation script for better SEO 9. Fixed many broken links 10. Add description to all fields
|
@ -9,8 +9,8 @@
|
|||
acceptance_config.yml
|
||||
boxes/*
|
||||
/.vagrant
|
||||
/website/docs/.vagrant
|
||||
/website/www/.vagrant
|
||||
/website/.vagrant
|
||||
/website/build
|
||||
/vagrant-spec.config.rb
|
||||
|
||||
# Bundler/Rubygems
|
||||
|
@ -21,6 +21,7 @@ tags
|
|||
/Gemfile.lock
|
||||
test/tmp/
|
||||
vendor/
|
||||
/exec
|
||||
|
||||
# Documentation
|
||||
_site/*
|
||||
|
@ -43,14 +44,3 @@ doc/
|
|||
.ruby-gemset
|
||||
.ruby-version
|
||||
.rvmrc
|
||||
|
||||
# Website: docs
|
||||
website/docs/.sass-cache
|
||||
website/docs/build
|
||||
website/docs/Rakefile
|
||||
|
||||
# Website: www
|
||||
website/www/.sass-cache
|
||||
website/www/build
|
||||
website/www/Rakefile
|
||||
exec/
|
||||
|
|
|
@ -0,0 +1,3 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
gem "middleman-hashicorp", github: "hashicorp/middleman-hashicorp"
|
|
@ -0,0 +1,193 @@
|
|||
GIT
|
||||
remote: git://github.com/hashicorp/middleman-hashicorp.git
|
||||
revision: e30d05d2d3b03ed95d8a09d20c33ec32a0732b62
|
||||
specs:
|
||||
middleman-hashicorp (0.2.0)
|
||||
bootstrap-sass (~> 3.3)
|
||||
builder (~> 3.2)
|
||||
less (~> 2.6)
|
||||
middleman (~> 3.4)
|
||||
middleman-livereload (~> 3.4)
|
||||
middleman-minify-html (~> 3.4)
|
||||
middleman-syntax (~> 2.0)
|
||||
rack-contrib (~> 1.2)
|
||||
rack-protection (~> 1.5)
|
||||
rack-rewrite (~> 1.5)
|
||||
rack-ssl-enforcer (~> 0.2)
|
||||
redcarpet (~> 3.2)
|
||||
therubyracer (~> 0.12)
|
||||
thin (~> 1.6)
|
||||
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (4.2.5)
|
||||
i18n (~> 0.7)
|
||||
json (~> 1.7, >= 1.7.7)
|
||||
minitest (~> 5.1)
|
||||
thread_safe (~> 0.3, >= 0.3.4)
|
||||
tzinfo (~> 1.1)
|
||||
autoprefixer-rails (6.3.1)
|
||||
execjs
|
||||
json
|
||||
bootstrap-sass (3.3.6)
|
||||
autoprefixer-rails (>= 5.2.1)
|
||||
sass (>= 3.3.4)
|
||||
builder (3.2.2)
|
||||
capybara (2.4.4)
|
||||
mime-types (>= 1.16)
|
||||
nokogiri (>= 1.3.3)
|
||||
rack (>= 1.0.0)
|
||||
rack-test (>= 0.5.4)
|
||||
xpath (~> 2.0)
|
||||
chunky_png (1.3.5)
|
||||
coffee-script (2.4.1)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.10.0)
|
||||
commonjs (0.2.7)
|
||||
compass (1.0.3)
|
||||
chunky_png (~> 1.2)
|
||||
compass-core (~> 1.0.2)
|
||||
compass-import-once (~> 1.0.5)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
sass (>= 3.3.13, < 3.5)
|
||||
compass-core (1.0.3)
|
||||
multi_json (~> 1.0)
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
compass-import-once (1.0.5)
|
||||
sass (>= 3.2, < 3.5)
|
||||
daemons (1.2.3)
|
||||
em-websocket (0.5.1)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0.6.0)
|
||||
erubis (2.7.0)
|
||||
eventmachine (1.0.9.1)
|
||||
execjs (2.6.0)
|
||||
ffi (1.9.10)
|
||||
git-version-bump (0.15.1)
|
||||
haml (4.0.7)
|
||||
tilt
|
||||
hike (1.2.3)
|
||||
hooks (0.4.1)
|
||||
uber (~> 0.0.14)
|
||||
htmlcompressor (0.2.0)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (0.7.0)
|
||||
json (1.8.3)
|
||||
kramdown (1.9.0)
|
||||
less (2.6.0)
|
||||
commonjs (~> 0.2.7)
|
||||
libv8 (3.16.14.13)
|
||||
listen (3.0.5)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
middleman (3.4.1)
|
||||
coffee-script (~> 2.2)
|
||||
compass (>= 1.0.0, < 2.0.0)
|
||||
compass-import-once (= 1.0.5)
|
||||
execjs (~> 2.0)
|
||||
haml (>= 4.0.5)
|
||||
kramdown (~> 1.2)
|
||||
middleman-core (= 3.4.1)
|
||||
middleman-sprockets (>= 3.1.2)
|
||||
sass (>= 3.4.0, < 4.0)
|
||||
uglifier (~> 2.5)
|
||||
middleman-core (3.4.1)
|
||||
activesupport (~> 4.1)
|
||||
bundler (~> 1.1)
|
||||
capybara (~> 2.4.4)
|
||||
erubis
|
||||
hooks (~> 0.3)
|
||||
i18n (~> 0.7.0)
|
||||
listen (~> 3.0.3)
|
||||
padrino-helpers (~> 0.12.3)
|
||||
rack (>= 1.4.5, < 2.0)
|
||||
thor (>= 0.15.2, < 2.0)
|
||||
tilt (~> 1.4.1, < 2.0)
|
||||
middleman-livereload (3.4.6)
|
||||
em-websocket (~> 0.5.1)
|
||||
middleman-core (>= 3.3)
|
||||
rack-livereload (~> 0.3.15)
|
||||
middleman-minify-html (3.4.1)
|
||||
htmlcompressor (~> 0.2.0)
|
||||
middleman-core (>= 3.2)
|
||||
middleman-sprockets (3.4.2)
|
||||
middleman-core (>= 3.3)
|
||||
sprockets (~> 2.12.1)
|
||||
sprockets-helpers (~> 1.1.0)
|
||||
sprockets-sass (~> 1.3.0)
|
||||
middleman-syntax (2.1.0)
|
||||
middleman-core (>= 3.2)
|
||||
rouge (~> 1.0)
|
||||
mime-types (3.0)
|
||||
mime-types-data (~> 3.2015)
|
||||
mime-types-data (3.2015.1120)
|
||||
mini_portile2 (2.0.0)
|
||||
minitest (5.8.3)
|
||||
multi_json (1.11.2)
|
||||
nokogiri (1.6.7.1)
|
||||
mini_portile2 (~> 2.0.0.rc2)
|
||||
padrino-helpers (0.12.5)
|
||||
i18n (~> 0.6, >= 0.6.7)
|
||||
padrino-support (= 0.12.5)
|
||||
tilt (~> 1.4.1)
|
||||
padrino-support (0.12.5)
|
||||
activesupport (>= 3.1)
|
||||
rack (1.6.4)
|
||||
rack-contrib (1.4.0)
|
||||
git-version-bump (~> 0.15)
|
||||
rack (~> 1.4)
|
||||
rack-livereload (0.3.16)
|
||||
rack
|
||||
rack-protection (1.5.3)
|
||||
rack
|
||||
rack-rewrite (1.5.1)
|
||||
rack-ssl-enforcer (0.2.9)
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rb-fsevent (0.9.7)
|
||||
rb-inotify (0.9.5)
|
||||
ffi (>= 0.5.0)
|
||||
redcarpet (3.3.4)
|
||||
ref (2.0.0)
|
||||
rouge (1.10.1)
|
||||
sass (3.4.21)
|
||||
sprockets (2.12.4)
|
||||
hike (~> 1.2)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
sprockets-helpers (1.1.0)
|
||||
sprockets (~> 2.0)
|
||||
sprockets-sass (1.3.1)
|
||||
sprockets (~> 2.0)
|
||||
tilt (~> 1.1)
|
||||
therubyracer (0.12.2)
|
||||
libv8 (~> 3.16.14.0)
|
||||
ref
|
||||
thin (1.6.4)
|
||||
daemons (~> 1.0, >= 1.0.9)
|
||||
eventmachine (~> 1.0, >= 1.0.4)
|
||||
rack (~> 1.0)
|
||||
thor (0.19.1)
|
||||
thread_safe (0.3.5)
|
||||
tilt (1.4.1)
|
||||
tzinfo (1.2.2)
|
||||
thread_safe (~> 0.1)
|
||||
uber (0.0.15)
|
||||
uglifier (2.7.2)
|
||||
execjs (>= 0.3.0)
|
||||
json (>= 1.8.0)
|
||||
xpath (2.0.0)
|
||||
nokogiri (~> 1.3)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
middleman-hashicorp!
|
||||
|
||||
BUNDLED WITH
|
||||
1.10.6
|
|
@ -4,13 +4,13 @@ This is the repository for the [Vagrant website](https://www.vagrantup.com).
|
|||
|
||||
This is a [Middleman](http://middlemanapp.com) project, which builds a static
|
||||
site from these source files. The site is hosted on [Heroku](http://heroku.com)
|
||||
and then fronted by [Fastly](http://fastly.com).
|
||||
and then fronted by [Fastly](https://www.fastly.com).
|
||||
|
||||
## Contributions Welcome!
|
||||
|
||||
If you find a typo or you feel like you can improve the HTML, CSS, or
|
||||
JavaScript, we welcome contributions. Feel free to open issues or pull
|
||||
requests like any normal GitHub project, and we'll merge it in.
|
||||
requests like any normal GitHub project, and we will merge it in.
|
||||
|
||||
## Running the Site Locally
|
||||
|
|
@ -0,0 +1,59 @@
|
|||
set :base_url, "https://www.vagrantup.com/"
|
||||
|
||||
activate :hashicorp do |h|
|
||||
h.name = "vagrant"
|
||||
h.version = "1.8.1"
|
||||
h.github_slug = "mitchellh/vagrant"
|
||||
end
|
||||
|
||||
helpers do
|
||||
# This helps by setting the "active" class for sidebar nav elements
|
||||
# if the YAML frontmatter matches the expected value.
|
||||
def sidebar_current(expected)
|
||||
current = current_page.data.sidebar_current || ""
|
||||
if current.start_with?(expected)
|
||||
return " class=\"active\""
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end
|
||||
|
||||
# This returns the overall section of the documentation we're on.
|
||||
def sidebar_section
|
||||
current = current_page.data.sidebar_current
|
||||
return "" if !current
|
||||
current.split("-")[0]
|
||||
end
|
||||
|
||||
def body_classes
|
||||
classify = ->(s) { s.downcase.gsub(/[^a-zA-Z0-9]/, "-").squeeze("-") }
|
||||
|
||||
classes = []
|
||||
|
||||
if current_page.data.page_title
|
||||
classes << "page-#{classify.call(current_page.data.page_title)}"
|
||||
else
|
||||
classes << "page-home"
|
||||
end
|
||||
|
||||
if current_page.data.layout
|
||||
classes << "layout-#{classify.call(current_page.data.layout)}"
|
||||
end
|
||||
|
||||
return classes.join(" ")
|
||||
end
|
||||
# "home layout-#{current_page.data.layout}"
|
||||
|
||||
# Get the title for the page.
|
||||
#
|
||||
# @param [Middleman::Page] page
|
||||
#
|
||||
# @return [String]
|
||||
def title_for(page)
|
||||
if page && page.data.page_title
|
||||
return "#{page.data.page_title} - Vagrant by HashiCorp"
|
||||
end
|
||||
|
||||
"Vagrant by HashiCorp"
|
||||
end
|
||||
end
|
|
@ -1,2 +0,0 @@
|
|||
https://github.com/heroku/heroku-buildpack-ruby.git
|
||||
https://github.com/hashicorp/heroku-buildpack-middleman.git
|
|
@ -1,17 +0,0 @@
|
|||
source "https://rubygems.org"
|
||||
|
||||
ruby "2.2.2"
|
||||
|
||||
gem "less", "~> 2.6.0"
|
||||
gem "middleman", "~> 3.0.6"
|
||||
gem "middleman-minify-html", "~> 3.0.0"
|
||||
gem "rack-contrib", "~> 1.1.0"
|
||||
gem "redcarpet", "~> 2.2.2"
|
||||
gem "rb-inotify", "~> 0.9", require: false
|
||||
gem "therubyracer", "~> 0.12.0"
|
||||
gem "thin", "~> 1.5.0"
|
||||
gem "rack-protection", "~> 1.5"
|
||||
|
||||
group :development do
|
||||
gem "highline", "~> 1.6.15"
|
||||
end
|
|
@ -1,148 +0,0 @@
|
|||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
activesupport (3.2.13)
|
||||
i18n (= 0.6.1)
|
||||
multi_json (~> 1.0)
|
||||
chunky_png (1.3.4)
|
||||
coffee-script (2.2.0)
|
||||
coffee-script-source
|
||||
execjs
|
||||
coffee-script-source (1.3.3)
|
||||
commonjs (0.2.7)
|
||||
compass (1.0.3)
|
||||
chunky_png (~> 1.2)
|
||||
compass-core (~> 1.0.2)
|
||||
compass-import-once (~> 1.0.5)
|
||||
rb-fsevent (>= 0.9.3)
|
||||
rb-inotify (>= 0.9)
|
||||
sass (>= 3.3.13, < 3.5)
|
||||
compass-core (1.0.3)
|
||||
multi_json (~> 1.0)
|
||||
sass (>= 3.3.0, < 3.5)
|
||||
compass-import-once (1.0.5)
|
||||
sass (>= 3.2, < 3.5)
|
||||
daemons (1.1.9)
|
||||
eventmachine (1.0.7)
|
||||
execjs (1.4.1)
|
||||
multi_json (~> 1.0)
|
||||
ffi (1.9.6)
|
||||
haml (4.0.6)
|
||||
tilt
|
||||
highline (1.6.21)
|
||||
hike (1.2.3)
|
||||
htmlcompressor (0.1.2)
|
||||
http_router (0.10.2)
|
||||
rack (>= 1.0.0)
|
||||
url_mount (~> 0.2.1)
|
||||
i18n (0.6.1)
|
||||
less (2.6.0)
|
||||
commonjs (~> 0.2.7)
|
||||
libv8 (3.16.14.7)
|
||||
listen (0.7.3)
|
||||
maruku (0.6.1)
|
||||
syntax (>= 1.0.0)
|
||||
middleman (3.0.14)
|
||||
middleman-core (= 3.0.14)
|
||||
middleman-more (= 3.0.14)
|
||||
middleman-sprockets (~> 3.1.0)
|
||||
middleman-core (3.0.14)
|
||||
activesupport (~> 3.2.6)
|
||||
bundler (~> 1.1)
|
||||
listen (~> 0.7.3)
|
||||
rack (~> 1.4.1)
|
||||
rack-test (~> 0.6.1)
|
||||
rb-fsevent (~> 0.9.3)
|
||||
thor (~> 0.15.4)
|
||||
tilt (~> 1.3.6)
|
||||
middleman-minify-html (3.0.0)
|
||||
htmlcompressor
|
||||
middleman-core (~> 3.0.0)
|
||||
middleman-more (3.0.14)
|
||||
coffee-script (~> 2.2.0)
|
||||
coffee-script-source (~> 1.3.3)
|
||||
compass (>= 0.12.2)
|
||||
execjs (~> 1.4.0)
|
||||
haml (>= 3.1.6)
|
||||
i18n (~> 0.6.0, < 0.6.2)
|
||||
maruku (~> 0.6.0)
|
||||
middleman-core (= 3.0.14)
|
||||
padrino-helpers (= 0.10.7)
|
||||
sass (>= 3.1.20)
|
||||
uglifier (~> 1.2.6)
|
||||
middleman-sprockets (3.1.4)
|
||||
middleman-core (>= 3.0.14)
|
||||
middleman-more (>= 3.0.14)
|
||||
sprockets (~> 2.1)
|
||||
sprockets-helpers (~> 1.0.0)
|
||||
sprockets-sass (~> 1.0.0)
|
||||
multi_json (1.10.1)
|
||||
padrino-core (0.10.7)
|
||||
activesupport (~> 3.2.0)
|
||||
http_router (~> 0.10.2)
|
||||
sinatra (~> 1.3.1)
|
||||
thor (~> 0.15.2)
|
||||
tilt (~> 1.3.0)
|
||||
padrino-helpers (0.10.7)
|
||||
i18n (~> 0.6)
|
||||
padrino-core (= 0.10.7)
|
||||
rack (1.4.5)
|
||||
rack-contrib (1.1.0)
|
||||
rack (>= 0.9.1)
|
||||
rack-protection (1.5.3)
|
||||
rack
|
||||
rack-test (0.6.3)
|
||||
rack (>= 1.0)
|
||||
rb-fsevent (0.9.4)
|
||||
rb-inotify (0.9.5)
|
||||
ffi (>= 0.5.0)
|
||||
redcarpet (2.2.2)
|
||||
ref (1.0.5)
|
||||
sass (3.4.13)
|
||||
sinatra (1.3.6)
|
||||
rack (~> 1.4)
|
||||
rack-protection (~> 1.3)
|
||||
tilt (~> 1.3, >= 1.3.3)
|
||||
sprockets (2.12.3)
|
||||
hike (~> 1.2)
|
||||
multi_json (~> 1.0)
|
||||
rack (~> 1.0)
|
||||
tilt (~> 1.1, != 1.3.0)
|
||||
sprockets-helpers (1.0.1)
|
||||
sprockets (~> 2.0)
|
||||
sprockets-sass (1.0.3)
|
||||
sprockets (~> 2.0)
|
||||
tilt (~> 1.1)
|
||||
syntax (1.2.0)
|
||||
therubyracer (0.12.1)
|
||||
libv8 (~> 3.16.14.0)
|
||||
ref
|
||||
thin (1.5.1)
|
||||
daemons (>= 1.0.9)
|
||||
eventmachine (>= 0.12.6)
|
||||
rack (>= 1.0.0)
|
||||
thor (0.15.4)
|
||||
tilt (1.3.7)
|
||||
uglifier (1.2.7)
|
||||
execjs (>= 0.3.0)
|
||||
multi_json (~> 1.3)
|
||||
url_mount (0.2.1)
|
||||
rack
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
highline (~> 1.6.15)
|
||||
less (~> 2.6.0)
|
||||
middleman (~> 3.0.6)
|
||||
middleman-minify-html (~> 3.0.0)
|
||||
rack-contrib (~> 1.1.0)
|
||||
rack-protection (~> 1.5)
|
||||
rb-inotify (~> 0.9)
|
||||
redcarpet (~> 2.2.2)
|
||||
therubyracer (~> 0.12.0)
|
||||
thin (~> 1.5.0)
|
||||
|
||||
BUNDLED WITH
|
||||
1.10.6
|
|
@ -1 +0,0 @@
|
|||
web: bundle exec thin start -p $PORT
|
|
@ -1,20 +0,0 @@
|
|||
# Vagrant Documentation
|
||||
|
||||
This is the repository for the [Vagrant Documentation website](http://docs.vagrantup.com).
|
||||
|
||||
This is a [Middleman](http://middlemanapp.com) project, which builds a static
|
||||
site from these source files. The site is hosted on [Heroku](http://heroku.com)
|
||||
and then fronted by [Fastly](http://fastly.com).
|
||||
|
||||
## Contributions Welcome!
|
||||
|
||||
If you find a typo or you feel like you can improve the HTML, CSS, or
|
||||
JavaScript, we welcome contributions. Feel free to open issues or pull
|
||||
requests like any normal GitHub project, and we'll merge it in.
|
||||
|
||||
## Running the Site Locally
|
||||
|
||||
Running the site locally is simple. Clone this repo and run `make dev`.
|
||||
|
||||
Then open up `localhost:4567/v2`. Note that some URLs you may need to append
|
||||
".html" to make them work (in the navigation and such).
|
|
@ -1,23 +0,0 @@
|
|||
# -*- mode: ruby -*-
|
||||
# vi: set ft=ruby :
|
||||
|
||||
$script = <<SCRIPT
|
||||
sudo apt-get -y update
|
||||
sudo apt-get -y install curl
|
||||
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
|
||||
curl -sSL https://get.rvm.io | bash -s stable
|
||||
. ~/.bashrc
|
||||
. ~/.bash_profile
|
||||
rvm install 2.0.0
|
||||
rvm --default use 2.0.0
|
||||
gem install bundler
|
||||
cd /vagrant
|
||||
bundle
|
||||
SCRIPT
|
||||
|
||||
Vagrant.configure(2) do |config|
|
||||
config.vm.box = "hashicorp/precise64"
|
||||
config.vm.network "private_network", ip: "33.33.33.10"
|
||||
config.vm.provision "shell", inline: $script, privileged: false
|
||||
config.vm.synced_folder ".", "/vagrant", type: "rsync"
|
||||
end
|
|
@ -1,77 +0,0 @@
|
|||
###
|
||||
# Compass
|
||||
###
|
||||
|
||||
# Susy grids in Compass
|
||||
# First: gem install susy --pre
|
||||
# require 'susy'
|
||||
|
||||
# Change Compass configuration
|
||||
# compass_config do |config|
|
||||
# config.output_style = :compact
|
||||
# end
|
||||
|
||||
###
|
||||
# Page options, layouts, aliases and proxies
|
||||
###
|
||||
|
||||
# Per-page layout changes:
|
||||
#
|
||||
# With no layout
|
||||
# page "/path/to/file.html", layout: false
|
||||
#
|
||||
# With alternative layout
|
||||
# page "/path/to/file.html", layout: :otherlayout
|
||||
#
|
||||
# A path which all have the same layout
|
||||
# with_layout :admin do
|
||||
# page "/admin/*"
|
||||
# end
|
||||
|
||||
# Proxy (fake) files
|
||||
# page "/this-page-has-no-template.html", proxy: "/template-file.html" do
|
||||
# @which_fake_page = "Rendering a fake page with a variable"
|
||||
# end
|
||||
|
||||
###
|
||||
# Helpers
|
||||
###
|
||||
|
||||
# Automatic image dimensions on image_tag helper
|
||||
# activate :automatic_image_sizes
|
||||
|
||||
# Methods defined in the helpers block are available in templates
|
||||
# helpers do
|
||||
# def some_helper
|
||||
# "Helping"
|
||||
# end
|
||||
# end
|
||||
|
||||
set :css_dir, 'stylesheets'
|
||||
set :js_dir, 'javascripts'
|
||||
set :images_dir, 'images'
|
||||
|
||||
# Use the RedCarpet Markdown engine
|
||||
set :markdown_engine, :redcarpet
|
||||
set :markdown, fenced_code_blocks: true
|
||||
|
||||
# Build-specific configuration
|
||||
configure :build do
|
||||
activate :asset_hash
|
||||
activate :minify_css
|
||||
activate :minify_javascript
|
||||
|
||||
# Enable cache buster
|
||||
# activate :cache_buster
|
||||
|
||||
# Use relative URLs
|
||||
# activate :relative_assets
|
||||
|
||||
# Compress PNGs after build
|
||||
# First: gem install middleman-smusher
|
||||
# require "middleman-smusher"
|
||||
# activate :smusher
|
||||
|
||||
# Or use a different image path
|
||||
# set :http_path, "/Content/images/"
|
||||
end
|
|
@ -1,55 +0,0 @@
|
|||
require "rack"
|
||||
require "rack/auth/basic"
|
||||
require "rack/contrib/not_found"
|
||||
require "rack/contrib/response_headers"
|
||||
require "rack/contrib/static_cache"
|
||||
require "rack/contrib/try_static"
|
||||
require "rack/protection"
|
||||
|
||||
require File.expand_path("../lib/redirect_to_latest", __FILE__)
|
||||
require File.expand_path("../lib/redirect_v1_docs", __FILE__)
|
||||
|
||||
# Protect against various bad things
|
||||
use Rack::Protection::JsonCsrf
|
||||
use Rack::Protection::RemoteReferrer
|
||||
use Rack::Protection::HttpOrigin
|
||||
use Rack::Protection::EscapedParams
|
||||
use Rack::Protection::XSSHeader
|
||||
use Rack::Protection::FrameOptions
|
||||
use Rack::Protection::PathTraversal
|
||||
use Rack::Protection::IPSpoofing
|
||||
|
||||
# Properly compress the output if the client can handle it.
|
||||
use Rack::Deflater
|
||||
|
||||
# Redirect the homepage to the latest documentation
|
||||
use HashiCorp::Rack::RedirectToLatest
|
||||
|
||||
# Redirect the V1 documentation to the GitHub pages hosted version
|
||||
use HashiCorp::Rack::RedirectV1Docs
|
||||
|
||||
# Set the "forever expire" cache headers for these static assets. Since
|
||||
# we hash the contents of the assets to determine filenames, this is safe
|
||||
# to do.
|
||||
use Rack::StaticCache,
|
||||
root: "build",
|
||||
urls: ["/images", "/javascripts", "/stylesheets"],
|
||||
duration: 2,
|
||||
versioning: false
|
||||
|
||||
# For anything that matches below this point, we set the surrogate key
|
||||
# for Fastly so that we can quickly purge all the pages without touching
|
||||
# the static assets.
|
||||
use Rack::ResponseHeaders do |headers|
|
||||
headers["Surrogate-Key"] = "page"
|
||||
end
|
||||
|
||||
# Try to find a static file that matches our request, since Middleman
|
||||
# statically generates everything.
|
||||
use Rack::TryStatic,
|
||||
root: "build",
|
||||
urls: ["/"],
|
||||
try: [".html", "index.html", "/index.html"]
|
||||
|
||||
# 404 if we reached this point. Sad times.
|
||||
run Rack::NotFound.new(File.expand_path("../build/404.html", __FILE__))
|
|
@ -1,19 +0,0 @@
|
|||
module SidebarHelpers
|
||||
# This helps by setting the "current" class for sidebar nav elements
|
||||
# if the YAML frontmatter matches the expected value.
|
||||
def sidebar_current(expected)
|
||||
current = current_page.data.sidebar_current
|
||||
if current == expected || sidebar_section == expected
|
||||
return " class=\"current\""
|
||||
else
|
||||
return ""
|
||||
end
|
||||
end
|
||||
|
||||
# This returns the overall section of the documentation we're on.
|
||||
def sidebar_section
|
||||
current = current_page.data.sidebar_current
|
||||
return "" if !current
|
||||
current.split("-")[0]
|
||||
end
|
||||
end
|
|
@ -1,25 +0,0 @@
|
|||
module HashiCorp
|
||||
module Rack
|
||||
# This redirects to the latest version of the docs.
|
||||
class RedirectToLatest
|
||||
def initialize(app)
|
||||
@app = app
|
||||
end
|
||||
|
||||
def call(env)
|
||||
if env["PATH_INFO"] =~ /^\/$/
|
||||
headers = {
|
||||
"Content-Type" => "text/html",
|
||||
"Location" => "/v2/",
|
||||
"Surrogate-Key" => "page"
|
||||
}
|
||||
message = "Redirecting to new URL..."
|
||||
|
||||
return [301, headers, [message]]
|
||||
end
|
||||
|
||||
@app.call(env)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,26 +0,0 @@
|
|||
module HashiCorp
|
||||
module Rack
|
||||
# This redirects the V1 docs to the GitHub pages hosted version.
|
||||
class RedirectV1Docs
|
||||
def initialize(app)
|
||||
@app = app
|
||||
end
|
||||
|
||||
def call(env)
|
||||
if env["PATH_INFO"] =~ /^\/v1/
|
||||
headers = {
|
||||
"Content-Type" => "text/html",
|
||||
"Location" => "http://docs-v1.vagrantup.com#{env["PATH_INFO"]}",
|
||||
"Surrogate-Key" => "page"
|
||||
}
|
||||
|
||||
message = "Redirecting to old documentation URL..."
|
||||
|
||||
return [301, headers, [message]]
|
||||
end
|
||||
|
||||
@app.call(env)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
|
@ -1,7 +0,0 @@
|
|||
<h2>Page Not Found</h4>
|
||||
|
||||
<p>
|
||||
Sorry, the page you tried to visit doesn't exist. This could be our fault,
|
||||
and if so we'll fix that up right away. Please go back, or go back
|
||||
<a href="/">home</a> to get back on track.
|
||||
</p>
|
Before Width: | Height: | Size: 1.1 KiB |
Before Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 888 B |
Before Width: | Height: | Size: 2.2 KiB |
Before Width: | Height: | Size: 909 B |
Before Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 8.7 KiB |
Before Width: | Height: | Size: 2.6 KiB |
Before Width: | Height: | Size: 122 B |
Before Width: | Height: | Size: 557 B |
|
@ -1,50 +0,0 @@
|
|||
(function(){
|
||||
|
||||
Sidebar = Base.extend({
|
||||
|
||||
$body: null,
|
||||
$overlay: null,
|
||||
$sidebar: null,
|
||||
$sidebarHeader: null,
|
||||
$sidebarImg: null,
|
||||
$toggleButton: null,
|
||||
|
||||
constructor: function(){
|
||||
this.$body = $('body');
|
||||
this.$overlay = $('.mobile-nav-overlay');
|
||||
this.$sidebar = $('#mobile-nav');
|
||||
this.$sidebarHeader = $('#mobile-nav .mobile-nav-header');
|
||||
this.$toggleButton = $('.navbar-toggle');
|
||||
this.sidebarImg = this.$sidebarHeader.css('background-image');
|
||||
|
||||
this.addEventListeners();
|
||||
},
|
||||
|
||||
addEventListeners: function(){
|
||||
var _this = this;
|
||||
|
||||
_this.$toggleButton.on('click', function() {
|
||||
_this.$sidebar.toggleClass('open');
|
||||
if ((_this.$sidebar.hasClass('mobile-nav-fixed-left') || _this.$sidebar.hasClass('mobile-nav-fixed-right')) && _this.$sidebar.hasClass('open')) {
|
||||
_this.$overlay.addClass('active');
|
||||
_this.$body.css('overflow', 'hidden');
|
||||
} else {
|
||||
_this.$overlay.removeClass('active');
|
||||
_this.$body.css('overflow', 'auto');
|
||||
}
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
_this.$overlay.on('click', function() {
|
||||
$(this).removeClass('active');
|
||||
_this.$body.css('overflow', 'auto');
|
||||
_this.$sidebar.removeClass('open');
|
||||
});
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
window.Sidebar = Sidebar;
|
||||
|
||||
})();
|
|
@ -1,4 +0,0 @@
|
|||
/*! Backstretch - v2.0.1 - 2012-10-01
|
||||
* http://srobbin.com/jquery-plugins/backstretch/
|
||||
* Copyright (c) 2012 Scott Robbin; Licensed MIT */
|
||||
(function(e,t,n){"use strict";e.fn.backstretch=function(r,s){return(r===n||r.length===0)&&e.error("No images were supplied for Backstretch"),e(t).scrollTop()===0&&t.scrollTo(0,0),this.each(function(){var t=e(this),n=t.data("backstretch");n&&(s=e.extend(n.options,s),n.destroy(!0)),n=new i(this,r,s),t.data("backstretch",n)})},e.backstretch=function(t,n){return e("body").backstretch(t,n).data("backstretch")},e.expr[":"].backstretch=function(t){return e(t).data("backstretch")!==n},e.fn.backstretch.defaults={centeredX:!0,centeredY:!0,duration:5e3,fade:0};var r={wrap:{left:0,top:0,overflow:"hidden",margin:0,padding:0,height:"100%",width:"100%",zIndex:-999999},img:{position:"absolute",display:"none",margin:0,padding:0,border:"none",width:"auto",height:"auto",maxWidth:"none",zIndex:-999999}},i=function(n,i,o){this.options=e.extend({},e.fn.backstretch.defaults,o||{}),this.images=e.isArray(i)?i:[i],e.each(this.images,function(){e("<img />")[0].src=this}),this.isBody=n===document.body,this.$container=e(n),this.$wrap=e('<div class="backstretch"></div>').css(r.wrap).appendTo(this.$container),this.$root=this.isBody?s?e(t):e(document):this.$container;if(!this.isBody){var u=this.$container.css("position"),a=this.$container.css("zIndex");this.$container.css({position:u==="static"?"relative":u,zIndex:a==="auto"?0:a,background:"none"}),this.$wrap.css({zIndex:-999998})}this.$wrap.css({position:this.isBody&&s?"fixed":"absolute"}),this.index=0,this.show(this.index),e(t).on("resize.backstretch",e.proxy(this.resize,this)).on("orientationchange.backstretch",e.proxy(function(){this.isBody&&t.pageYOffset===0&&(t.scrollTo(0,1),this.resize())},this))};i.prototype={resize:function(){try{var e={left:0,top:0},n=this.isBody?this.$root.width():this.$root.innerWidth(),r=n,i=this.isBody?t.innerHeight?t.innerHeight:this.$root.height():this.$root.innerHeight(),s=r/this.$img.data("ratio"),o;s>=i?(o=(s-i)/2,this.options.centeredY&&(e.top="-"+o+"px")):(s=i,r=s*this.$img.data("ratio"),o=(r-n)/2,this.options.centeredX&&(e.left="-"+o+"px")),this.$wrap.css({width:n,height:i}).find("img:not(.deleteable)").css({width:r,height:s}).css(e)}catch(u){}return this},show:function(t){if(Math.abs(t)>this.images.length-1)return;this.index=t;var n=this,i=n.$wrap.find("img").addClass("deleteable"),s=e.Event("backstretch.show",{relatedTarget:n.$container[0]});return clearInterval(n.interval),n.$img=e("<img />").css(r.img).bind("load",function(t){var r=this.width||e(t.target).width(),o=this.height||e(t.target).height();e(this).data("ratio",r/o),n.resize(),e(this).fadeIn(n.options.speed||n.options.fade,function(){i.remove(),n.paused||n.cycle(),n.$container.trigger(s)})}).appendTo(n.$wrap),n.$img.attr("src",n.images[t]),n},next:function(){return this.show(this.index<this.images.length-1?this.index+1:0)},prev:function(){return this.show(this.index===0?this.images.length-1:this.index-1)},pause:function(){return this.paused=!0,this},resume:function(){return this.paused=!1,this.next(),this},cycle:function(){return this.images.length>1&&(clearInterval(this.interval),this.interval=setInterval(e.proxy(function(){this.paused||this.next()},this),this.options.duration)),this},destroy:function(n){e(t).off("resize.backstretch orientationchange.backstretch"),clearInterval(this.interval),n||this.$wrap.remove(),this.$container.removeData("backstretch")}};var s=function(){var e=navigator.userAgent,n=navigator.platform,r=e.match(/AppleWebKit\/([0-9]+)/),i=!!r&&r[1],s=e.match(/Fennec\/([0-9]+)/),o=!!s&&s[1],u=e.match(/Opera Mobi\/([0-9]+)/),a=!!u&&u[1],f=e.match(/MSIE ([0-9]+)/),l=!!f&&f[1];return!((n.indexOf("iPhone")>-1||n.indexOf("iPad")>-1||n.indexOf("iPod")>-1)&&i&&i<534||t.operamini&&{}.toString.call(t.operamini)==="[object OperaMini]"||u&&a<7458||e.indexOf("Android")>-1&&i&&i<533||o&&o<6||"palmGetResource"in t&&i&&i<534||e.indexOf("MeeGo")>-1&&e.indexOf("NokiaBrowser/8.5.0")>-1||l&&l<=6)}()})(jQuery,window);
|
|
@ -1,43 +0,0 @@
|
|||
/*global jQuery */
|
||||
/*!
|
||||
* FitText.js 1.1
|
||||
*
|
||||
* Copyright 2011, Dave Rupert http://daverupert.com
|
||||
* Released under the WTFPL license
|
||||
* http://sam.zoy.org/wtfpl/
|
||||
*
|
||||
* Date: Thu May 05 14:23:00 2011 -0600
|
||||
*/
|
||||
|
||||
(function( $ ){
|
||||
|
||||
$.fn.fitText = function( kompressor, options ) {
|
||||
|
||||
// Setup options
|
||||
var compressor = kompressor || 1,
|
||||
settings = $.extend({
|
||||
'minFontSize' : Number.NEGATIVE_INFINITY,
|
||||
'maxFontSize' : Number.POSITIVE_INFINITY
|
||||
}, options);
|
||||
|
||||
return this.each(function(){
|
||||
|
||||
// Store the object
|
||||
var $this = $(this);
|
||||
|
||||
// Resizer() resizes items based on the object width divided by the compressor * 10
|
||||
var resizer = function () {
|
||||
$this.css('font-size', Math.max(Math.min($this.width() / (compressor*10), parseFloat(settings.maxFontSize)), parseFloat(settings.minFontSize)));
|
||||
};
|
||||
|
||||
// Call once to set.
|
||||
resizer();
|
||||
|
||||
// Call on resize. Opera debounces their resize by default.
|
||||
$(window).on('resize', resizer);
|
||||
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
})( jQuery );
|
|
@ -1,161 +0,0 @@
|
|||
/*
|
||||
* Heads-Up Grid
|
||||
* Simple HTML + CSS grid overlay for web design and development.
|
||||
*
|
||||
* Files: hugrid.css, hugrid.js, example.html
|
||||
*
|
||||
* Example and documentation at: http://bohemianalps.com/tools/grid
|
||||
*
|
||||
* Shurane, thanks for your help! https://github.com/shurane
|
||||
*
|
||||
* Copyright (c) 2011 Jason Simanek
|
||||
*
|
||||
* Version: 1.5 (09/03/2011)
|
||||
* Requires: jQuery v1.6+
|
||||
*
|
||||
* Licensed under the GPL license:
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/
|
||||
|
||||
;(function ($) {
|
||||
// "use strict";
|
||||
|
||||
window.hugrid = {
|
||||
toggleState : function() {
|
||||
// change our indicators of state
|
||||
if (window.hugrid.state == 'on') {
|
||||
window.hugrid.state = 'off' ;
|
||||
}
|
||||
else if( window.hugrid.state == 'off'){
|
||||
window.hugrid.state = 'on' ;
|
||||
}
|
||||
}
|
||||
} ;
|
||||
|
||||
makehugrid = function () {
|
||||
|
||||
// called at startup. Remove grids, clear state.
|
||||
initialCleanUp() ;
|
||||
|
||||
/* Column Container */
|
||||
var hugridDiv = document.createElement("div");
|
||||
hugridDiv.id = "hugrid";
|
||||
|
||||
/* Left Margin Column */
|
||||
leftDiv = document.createElement("div");
|
||||
leftDiv.className = "mline mlineL";
|
||||
hugridDiv.appendChild(leftDiv);
|
||||
|
||||
/* Create Columns */
|
||||
for (var i = 0; i < (columns - 1); i++) {
|
||||
colDiv = document.createElement("div");
|
||||
colDiv.className = "hugcol";
|
||||
hugridDiv.appendChild(colDiv);
|
||||
lineLDiv = document.createElement("div");
|
||||
lineLDiv.className = "lineL";
|
||||
colDiv.appendChild(lineLDiv);
|
||||
lineRDiv = document.createElement("div");
|
||||
lineRDiv.className = "lineR";
|
||||
colDiv.appendChild(lineRDiv);
|
||||
}
|
||||
|
||||
/* Right Margin Column */
|
||||
rightDiv = document.createElement("div");
|
||||
rightDiv.className = "mline mlineR";
|
||||
hugridDiv.appendChild(rightDiv);
|
||||
|
||||
document.body.appendChild(hugridDiv);
|
||||
|
||||
/* If Rows */
|
||||
if (rowheight !== 0) {
|
||||
/* Row Container */
|
||||
pageheight = $(document.body).height();
|
||||
var hugridRows = document.createElement("div") ;
|
||||
hugridRows.id = "hugridRows";
|
||||
/* Create Rows */
|
||||
for (var i = 0; i < (pageheight / rowheight); i++) {
|
||||
rowDiv = document.createElement("div");
|
||||
rowDiv.className = "hugrow";
|
||||
hugridRows.appendChild(rowDiv);
|
||||
lineB = document.createElement("div");
|
||||
lineB.className = "lineB";
|
||||
rowDiv.appendChild(lineB);
|
||||
}
|
||||
|
||||
document.body.appendChild(hugridRows);
|
||||
}
|
||||
|
||||
/* Apply CSS Properties */
|
||||
$('#hugrid').css('width', pagewidth + pageUnits);
|
||||
|
||||
if (typeof window.pageleftmargin === 'number') {
|
||||
$('#hugrid').css('left', pageleftmargin + pageUnits);
|
||||
$('#hugrid').css('margin', '0');
|
||||
} else if (typeof window.pagerightmargin === 'number') {
|
||||
$('#hugrid').css('right', pagerightmargin + pageUnits);
|
||||
$('#hugrid').css('left', 'auto');
|
||||
$('#hugrid').css('margin', '0');
|
||||
} else {
|
||||
if (pageUnits === '%') {
|
||||
$('#hugrid').css('left', ((100 - pagewidth) / 2) + pageUnits);
|
||||
$('#hugrid').css('margin-left', 'auto');
|
||||
} else {
|
||||
$('#hugrid').css('margin-left', '-' + (pagewidth / 2) + pageUnits);
|
||||
}
|
||||
}
|
||||
|
||||
$('#hugrid div.hugcol').css('margin-left', columnwidth + colUnits);
|
||||
$('#hugrid div.hugcol').css('width', gutterwidth + colUnits);
|
||||
$('#hugridRows').css('margin-top', pagetopmargin + 'px');
|
||||
$('#hugridRows div.hugrow').css('margin-top', (rowheight - 1) + 'px');
|
||||
|
||||
/* Create hugridUX and button */
|
||||
var hugridUX = document.createElement("div");
|
||||
hugridUX.id = "hugridUX";
|
||||
document.body.appendChild(hugridUX);
|
||||
$('#hugridUX').append('<div id="hugridButtonBkgd"></div><button id="hugridButton"></button>');
|
||||
$('#hugridButton').append('<span id="hugbuttonON">ON</span>');
|
||||
$('#hugridButton').append('<span id="hugbuttonOFF" style="display:none;">OFF</span>');
|
||||
|
||||
/* On/Off Button - click functionality */
|
||||
$('#hugridButton').click(function () {
|
||||
$('#hugridButton').toggleClass('buttonisoff') ;
|
||||
$('#hugrid').toggle();
|
||||
$('#hugridRows').toggle();
|
||||
$("#hugridButton span").toggle();
|
||||
window.hugrid.toggleState() ;
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
function initialCleanUp() {
|
||||
/* Remove Previously Existing Grid Elements */
|
||||
$('#hugrid').remove();
|
||||
$('#hugridRows').remove();
|
||||
$('#hugridUX').remove();
|
||||
}
|
||||
|
||||
|
||||
setgridonload = function () {
|
||||
if ( gridonload === 'off') {
|
||||
$('#hugridButton').toggleClass('buttonisoff') ;
|
||||
$('#hugrid').toggle();
|
||||
$('#hugridRows').toggle();
|
||||
$("#hugridButton span").toggle();
|
||||
window.hugrid.state = 'off'
|
||||
} else {
|
||||
window.hugrid.state = 'on'
|
||||
}
|
||||
} ;
|
||||
|
||||
|
||||
setgridonresize = function () {
|
||||
if ( window.hugrid.state === 'off') {
|
||||
$('#hugridButton').toggleClass('buttonisoff') ;
|
||||
$('#hugrid').toggle();
|
||||
$('#hugridRows').toggle();
|
||||
$("#hugridButton span").toggle();
|
||||
}
|
||||
} ;
|
||||
|
||||
})(jQuery);
|
|
@ -1,145 +0,0 @@
|
|||
/*
|
||||
Based on Base.js 1.1a (c) 2006-2010, Dean Edwards
|
||||
Updated to pass JSHint and converted into a module by Kenneth Powers
|
||||
License: http://www.opensource.org/licenses/mit-license.php
|
||||
*/
|
||||
/*global define:true module:true*/
|
||||
/*jshint eqeqeq:true*/
|
||||
(function (name, global, definition) {
|
||||
if (typeof module !== 'undefined') {
|
||||
module.exports = definition();
|
||||
} else if (typeof define !== 'undefined' && typeof define.amd === 'object') {
|
||||
define(definition);
|
||||
} else {
|
||||
global[name] = definition();
|
||||
}
|
||||
})('Base', this, function () {
|
||||
// Base Object
|
||||
var Base = function () {};
|
||||
|
||||
// Implementation
|
||||
Base.extend = function (_instance, _static) { // subclass
|
||||
var extend = Base.prototype.extend;
|
||||
// build the prototype
|
||||
Base._prototyping = true;
|
||||
var proto = new this();
|
||||
extend.call(proto, _instance);
|
||||
proto.base = function () {
|
||||
// call this method from any other method to invoke that method's ancestor
|
||||
};
|
||||
delete Base._prototyping;
|
||||
// create the wrapper for the constructor function
|
||||
//var constructor = proto.constructor.valueOf(); //-dean
|
||||
var constructor = proto.constructor;
|
||||
var klass = proto.constructor = function () {
|
||||
if (!Base._prototyping) {
|
||||
if (this._constructing || this.constructor === klass) { // instantiation
|
||||
this._constructing = true;
|
||||
constructor.apply(this, arguments);
|
||||
delete this._constructing;
|
||||
} else if (arguments[0] !== null) { // casting
|
||||
return (arguments[0].extend || extend).call(arguments[0], proto);
|
||||
}
|
||||
}
|
||||
};
|
||||
// build the class interface
|
||||
klass.ancestor = this;
|
||||
klass.extend = this.extend;
|
||||
klass.forEach = this.forEach;
|
||||
klass.implement = this.implement;
|
||||
klass.prototype = proto;
|
||||
klass.toString = this.toString;
|
||||
klass.valueOf = function (type) {
|
||||
return (type === 'object') ? klass : constructor.valueOf();
|
||||
};
|
||||
extend.call(klass, _static);
|
||||
// class initialization
|
||||
if (typeof klass.init === 'function') klass.init();
|
||||
return klass;
|
||||
};
|
||||
|
||||
Base.prototype = {
|
||||
extend: function (source, value) {
|
||||
if (arguments.length > 1) { // extending with a name/value pair
|
||||
var ancestor = this[source];
|
||||
if (ancestor && (typeof value === 'function') && // overriding a method?
|
||||
// the valueOf() comparison is to avoid circular references
|
||||
(!ancestor.valueOf || ancestor.valueOf() !== value.valueOf()) && /\bbase\b/.test(value)) {
|
||||
// get the underlying method
|
||||
var method = value.valueOf();
|
||||
// override
|
||||
value = function () {
|
||||
var previous = this.base || Base.prototype.base;
|
||||
this.base = ancestor;
|
||||
var returnValue = method.apply(this, arguments);
|
||||
this.base = previous;
|
||||
return returnValue;
|
||||
};
|
||||
// point to the underlying method
|
||||
value.valueOf = function (type) {
|
||||
return (type === 'object') ? value : method;
|
||||
};
|
||||
value.toString = Base.toString;
|
||||
}
|
||||
this[source] = value;
|
||||
} else if (source) { // extending with an object literal
|
||||
var extend = Base.prototype.extend;
|
||||
// if this object has a customized extend method then use it
|
||||
if (!Base._prototyping && typeof this !== 'function') {
|
||||
extend = this.extend || extend;
|
||||
}
|
||||
var proto = {
|
||||
toSource: null
|
||||
};
|
||||
// do the "toString" and other methods manually
|
||||
var hidden = ['constructor', 'toString', 'valueOf'];
|
||||
// if we are prototyping then include the constructor
|
||||
for (var i = Base._prototyping ? 0 : 1; i < hidden.length; i++) {
|
||||
var h = hidden[i];
|
||||
if (source[h] !== proto[h])
|
||||
extend.call(this, h, source[h]);
|
||||
}
|
||||
// copy each of the source object's properties to this object
|
||||
for (var key in source) {
|
||||
if (!proto[key]) extend.call(this, key, source[key]);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
};
|
||||
|
||||
// initialize
|
||||
Base = Base.extend({
|
||||
constructor: function () {
|
||||
this.extend(arguments[0]);
|
||||
}
|
||||
}, {
|
||||
ancestor: Object,
|
||||
version: '1.1',
|
||||
forEach: function (object, block, context) {
|
||||
for (var key in object) {
|
||||
if (this.prototype[key] === undefined) {
|
||||
block.call(context, object[key], key, object);
|
||||
}
|
||||
}
|
||||
},
|
||||
implement: function () {
|
||||
for (var i = 0; i < arguments.length; i++) {
|
||||
if (typeof arguments[i] === 'function') {
|
||||
// if it's a function, call it
|
||||
arguments[i](this.prototype);
|
||||
} else {
|
||||
// add the interface using the extend method
|
||||
this.prototype.extend(arguments[i]);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
},
|
||||
toString: function () {
|
||||
return String(this.valueOf());
|
||||
}
|
||||
});
|
||||
|
||||
// Return Base implementation
|
||||
return Base;
|
||||
});
|
|
@ -1,15 +0,0 @@
|
|||
// add dropshadow to nav on scroll
|
||||
$(document).ready(function(){
|
||||
$(document).scroll(function() {
|
||||
var top = $(document).scrollTop();
|
||||
if (top > 0) $('nav').addClass("drop-shadow");
|
||||
if (top === 0) $('nav').removeClass("drop-shadow");
|
||||
});
|
||||
});
|
||||
|
||||
// open/close documentation side nav on small screens
|
||||
$(document).ready(function(){
|
||||
$(".toggle").click(function() {
|
||||
$(".sidebar-nav ul").slideToggle('slow');
|
||||
});
|
||||
});
|
|
@ -1,19 +0,0 @@
|
|||
<!-- Overlay for fixed mobile-nav -->
|
||||
<div class="mobile-nav-overlay"></div>
|
||||
|
||||
<!-- Material mobile-nav -->
|
||||
<aside id="mobile-nav" class="mobile-nav mobile-nav-default mobile-nav-fixed-right" role="navigation">
|
||||
<!-- mobile-nav header -->
|
||||
<div class="mobile-nav-header header-cover">
|
||||
<!-- mobile-nav brand image -->
|
||||
<div class="mobile-nav-image">
|
||||
<img src="<%= image_path('logo-header-docs@2x.png') %>" width="200px" height="40px">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- mobile-nav navigation -->
|
||||
<ul class="main nav mobile-nav-nav">
|
||||
<li class="pill"><a href="https://www.amazon.com/gp/product/1449335837/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1449335837&linkCode=as2&tag=vagrant-20">Vagrant Book</a></li>
|
||||
<li><a href="https://www.vagrantup.com/">Home</a></li>
|
||||
</ul>
|
||||
</aside>
|
|
@ -1,427 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
|
||||
<title><%= current_page.data.page_title ? " #{current_page.data.page_title} - " : "" %>Vagrant Documentation</title>
|
||||
|
||||
<!-- meta -->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="shortcut icon" href="favicon.ico">
|
||||
|
||||
<!-- lib styles -->
|
||||
<%= stylesheet_link_tag "bootstrap", "vagrantup" %>
|
||||
|
||||
<!-- lib js -->
|
||||
<%= javascript_include_tag "jquery" %>
|
||||
<%= javascript_include_tag "modernizr" %>
|
||||
<%= javascript_include_tag "bootstrap.min" %>
|
||||
<%= javascript_include_tag "backstretch" %>
|
||||
<%= javascript_include_tag "vagrantup" %>
|
||||
|
||||
<!-- fonts -->
|
||||
<link href='//fonts.googleapis.com/css?family=Inconsolata' rel='stylesheet' type='text/css'>
|
||||
<script type="text/javascript" src="//use.typekit.net/xfs6zus.js"></script>
|
||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
||||
</head>
|
||||
<body>
|
||||
<!-- wrap everything -->
|
||||
<div class="wrapper">
|
||||
|
||||
<!-- nav -->
|
||||
<div id="header" class="navigation docs">
|
||||
<div class="container-fluid">
|
||||
<!-- vagrant logo -->
|
||||
<div class="navbar-header">
|
||||
<div class="navbar-brand">
|
||||
<a class="logo" href="/">Vagrant Documentation</span></a>
|
||||
<a class="by-hashicorp" href="https://hashicorp.com/"><span class="svg-wrap">by</span><%= partial "layouts/svg/svg-by-hashicorp" %><%= partial "layouts/svg/svg-hashicorp-logo" %>Hashicorp</a>
|
||||
</div>
|
||||
<button class="navbar-toggle" type="button">
|
||||
<span class="bar"></span>
|
||||
<span class="bar"></span>
|
||||
<span class="bar"></span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="buttons">
|
||||
<nav class="navigation-links" role="navigation">
|
||||
<ul class="main-links nav navbar-nav">
|
||||
<li class="pill"><a href="https://www.amazon.com/gp/product/1449335837/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1449335837&linkCode=as2&tag=vagrant-20">Vagrant Book</a></li>
|
||||
<li><a href="https://www.vagrantup.com/">Home</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<%= partial "layouts/mobile_nav" %>
|
||||
|
||||
<div class="page docs docs-home">
|
||||
<div class="sidebar-background"></div>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
|
||||
<div class="sidebar span3">
|
||||
<!-- get the sidebar nav -->
|
||||
<!-- side nav docs -->
|
||||
<aside class="sidebar-nav">
|
||||
|
||||
<div class="toggle hidden-desktop">
|
||||
<div class="open-close open"></div>
|
||||
<a href="#">Contents</a>
|
||||
</div>
|
||||
|
||||
<ul class="unstyled">
|
||||
<li<%= sidebar_current("overview") %>><a href="/v2/">Overview</a></li>
|
||||
|
||||
<li<%= sidebar_current("why") %>><a href="/v2/why-vagrant/index.html">Why Vagrant?</a></li>
|
||||
|
||||
<li<%= sidebar_current("installation") %>><a href="/v2/installation/index.html">Installation</a></li>
|
||||
<% if sidebar_section == "installation" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("installation-backwards-compatibility") %>><a href="/v2/installation/backwards-compatibility.html">Backwards Compatibility</a></li>
|
||||
<li<%= sidebar_current("installation-upgrading") %>><a href="/v2/installation/upgrading.html">Upgrading</a></li>
|
||||
<li<%= sidebar_current("installation-upgrading-1-0") %>><a href="/v2/installation/upgrading-from-1-0.html">Upgrading from 1.0.x</a></li>
|
||||
<li<%= sidebar_current("installation-uninstallation") %>><a href="/v2/installation/uninstallation.html">Uninstallation</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("gettingstarted") %>><a href="/v2/getting-started/index.html">Getting Started</a></li>
|
||||
<% if sidebar_section == "gettingstarted" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("gettingstarted-projectsetup") %>><a href="/v2/getting-started/project_setup.html">Project Setup</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-boxes") %>><a href="/v2/getting-started/boxes.html">Boxes</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-up") %>><a href="/v2/getting-started/up.html">Up and SSH</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-syncedfolders") %>><a href="/v2/getting-started/synced_folders.html">Synced Folders</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-provisioning") %>><a href="/v2/getting-started/provisioning.html">Provisioning</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-networking") %>><a href="/v2/getting-started/networking.html">Networking</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-share") %>><a href="/v2/getting-started/share.html">Share</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-teardown") %>><a href="/v2/getting-started/teardown.html">Teardown</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-rebuild") %>><a href="/v2/getting-started/rebuild.html">Rebuild</a></li>
|
||||
<li<%= sidebar_current("gettingstarted-providers") %>><a href="/v2/getting-started/providers.html">Providers</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("cli") %>><a href="/v2/cli/index.html">Command-Line Interface</a></li>
|
||||
<% if sidebar_section == "cli" %>
|
||||
<ul class="sub unstyled nocap">
|
||||
<li<%= sidebar_current("cli-box") %>><a href="/v2/cli/box.html">box</a></li>
|
||||
<li<%= sidebar_current("cli-connect") %>><a href="/v2/cli/connect.html">connect</a></li>
|
||||
<li<%= sidebar_current("cli-destroy") %>><a href="/v2/cli/destroy.html">destroy</a></li>
|
||||
<li<%= sidebar_current("cli-globalstatus") %>><a href="/v2/cli/global-status.html">global-status</a></li>
|
||||
<li<%= sidebar_current("cli-halt") %>><a href="/v2/cli/halt.html">halt</a></li>
|
||||
<li<%= sidebar_current("cli-init") %>><a href="/v2/cli/init.html">init</a></li>
|
||||
<li<%= sidebar_current("cli-login") %>><a href="/v2/cli/login.html">login</a></li>
|
||||
<li<%= sidebar_current("cli-package") %>><a href="/v2/cli/package.html">package</a></li>
|
||||
<li<%= sidebar_current("cli-plugin") %>><a href="/v2/cli/plugin.html">plugin</a></li>
|
||||
<li<%= sidebar_current("cli-port") %>><a href="/v2/cli/port.html">port</a></li>
|
||||
<li<%= sidebar_current("cli-powershell") %>><a href="/v2/cli/powershell.html">powershell</a></li>
|
||||
<li<%= sidebar_current("cli-provision") %>><a href="/v2/cli/provision.html">provision</a></li>
|
||||
<li<%= sidebar_current("cli-rdp") %>><a href="/v2/cli/rdp.html">rdp</a></li>
|
||||
<li<%= sidebar_current("cli-reload") %>><a href="/v2/cli/reload.html">reload</a></li>
|
||||
<li<%= sidebar_current("cli-resume") %>><a href="/v2/cli/resume.html">resume</a></li>
|
||||
<li<%= sidebar_current("cli-share") %>><a href="/v2/cli/share.html">share</a></li>
|
||||
<li<%= sidebar_current("cli-snapshot") %>><a href="/v2/cli/snapshot.html">snapshot</a></li>
|
||||
<li<%= sidebar_current("cli-ssh") %>><a href="/v2/cli/ssh.html">ssh</a></li>
|
||||
<li<%= sidebar_current("cli-ssh_config") %>><a href="/v2/cli/ssh_config.html">ssh-config</a></li>
|
||||
<li<%= sidebar_current("cli-status") %>><a href="/v2/cli/status.html">status</a></li>
|
||||
<li<%= sidebar_current("cli-suspend") %>><a href="/v2/cli/suspend.html">suspend</a></li>
|
||||
<li<%= sidebar_current("cli-up") %>><a href="/v2/cli/up.html">up</a></li>
|
||||
<li<%= sidebar_current("cli-version") %>><a href="/v2/cli/version.html">version</a></li>
|
||||
<li<%= sidebar_current("cli-nonprimary") %>><a href="/v2/cli/non-primary.html">More Commands</a></li>
|
||||
<li<%= sidebar_current("cli-machinereadable") %>><a href="/v2/cli/machine-readable.html">Machine Readable Output</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li <%= sidebar_current("share") %>><a href="/v2/share/index.html">Vagrant Share</a></li>
|
||||
<% if sidebar_section == "share" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("share-http") %>><a href="/v2/share/http.html">HTTP Sharing</a></li>
|
||||
<li<%= sidebar_current("share-ssh") %>><a href="/v2/share/ssh.html">SSH Sharing</a></li>
|
||||
<li<%= sidebar_current("share-connect") %>><a href="/v2/share/connect.html">vagrant connect</a></li>
|
||||
<li<%= sidebar_current("share-security") %>><a href="/v2/share/security.html">Security</a></li>
|
||||
<li<%= sidebar_current("share-provider") %>><a href="/v2/share/provider.html">Custom Provider</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li <%= sidebar_current("vagrantfile") %>><a href="/v2/vagrantfile/index.html">Vagrantfile</a></li>
|
||||
<% if sidebar_section == "vagrantfile" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("vagrantfile-version") %>><a href="/v2/vagrantfile/version.html">Configuration Version</a></li>
|
||||
<li<%= sidebar_current("vagrantfile-vagrantversion") %>><a href="/v2/vagrantfile/vagrant_version.html">Minimum Vagrant Version</a></li>
|
||||
<li<%= sidebar_current("vagrantfile-tips") %>><a href="/v2/vagrantfile/tips.html">Tips & Tricks</a></li>
|
||||
<li<%= sidebar_current("vagrantfile-machine") %>><a href="/v2/vagrantfile/machine_settings.html" class="nocap">config.vm</a></li>
|
||||
<li<%= sidebar_current("vagrantfile-ssh") %>><a href="/v2/vagrantfile/ssh_settings.html" class="nocap">config.ssh</a></li>
|
||||
<li<%= sidebar_current("vagrantfile-winrm") %>><a href="/v2/vagrantfile/winrm_settings.html" class="nocap">config.winrm</a></li>
|
||||
<li<%= sidebar_current("vagrantfile-vagrant") %>><a href="/v2/vagrantfile/vagrant_settings.html" class="nocap">config.vagrant</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("boxes") %>><a href="/v2/boxes.html">Boxes</a></li>
|
||||
<% if sidebar_section == "boxes" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("boxes-versioning") %>><a href="/v2/boxes/versioning.html">Box Versioning</a></li>
|
||||
<li<%= sidebar_current("boxes-base") %>><a href="/v2/boxes/base.html">Creating a Base Box</a></li>
|
||||
<li<%= sidebar_current("boxes-format") %>><a href="/v2/boxes/format.html">Box File Format</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("provisioning") %>><a href="/v2/provisioning/index.html">Provisioning</a></li>
|
||||
<% if sidebar_section == "provisioning" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("provisioning-basic") %>><a href="/v2/provisioning/basic_usage.html">Basic Usage</a></li>
|
||||
<li<%= sidebar_current("provisioning-file") %>><a href="/v2/provisioning/file.html">File</a></li>
|
||||
<li<%= sidebar_current("provisioning-shell") %>><a href="/v2/provisioning/shell.html">Shell</a></li>
|
||||
<li<%= sidebar_current("provisioning-ansible") %>><a href="/v2/provisioning/ansible.html">Ansible</a></li>
|
||||
<li<%= sidebar_current("provisioning-ansible-local") %>><a href="/v2/provisioning/ansible_local.html">Ansible Local</a></li>
|
||||
<li<%= sidebar_current("provisioning-cfengine") %>><a href="/v2/provisioning/cfengine.html">CFEngine</a></li>
|
||||
<li<%= sidebar_current("provisioning-chefsolo") %>><a href="/v2/provisioning/chef_solo.html">Chef Solo</a></li>
|
||||
<li<%= sidebar_current("provisioning-chefzero") %>><a href="/v2/provisioning/chef_zero.html">Chef Zero</a></li>
|
||||
<li<%= sidebar_current("provisioning-chefclient") %>><a href="/v2/provisioning/chef_client.html">Chef Client</a></li>
|
||||
<li<%= sidebar_current("provisioning-chefapply") %>><a href="/v2/provisioning/chef_apply.html">Chef Apply</a></li>
|
||||
<li<%= sidebar_current("provisioning-docker") %>><a href="/v2/provisioning/docker.html">Docker</a></li>
|
||||
<li<%= sidebar_current("provisioning-puppetapply") %>><a href="/v2/provisioning/puppet_apply.html">Puppet Apply</a></li>
|
||||
<li<%= sidebar_current("provisioning-puppetagent") %>><a href="/v2/provisioning/puppet_agent.html">Puppet Agent</a></li>
|
||||
<li<%= sidebar_current("provisioning-salt") %>><a href="/v2/provisioning/salt.html">Salt</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("networking") %>><a href="/v2/networking/index.html">Networking</a></li>
|
||||
<% if sidebar_section == "networking" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("networking-basic") %>><a href="/v2/networking/basic_usage.html">Basic Usage</a></li>
|
||||
<li<%= sidebar_current("networking-fp") %>><a href="/v2/networking/forwarded_ports.html">Forwarded Ports</a></li>
|
||||
<li<%= sidebar_current("networking-private") %>><a href="/v2/networking/private_network.html">Private Network</a></li>
|
||||
<li<%= sidebar_current("networking-public") %>><a href="/v2/networking/public_network.html">Public Network</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("syncedfolder") %>><a href="/v2/synced-folders/index.html">Synced Folders</a></li>
|
||||
<% if sidebar_section == "syncedfolder" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("syncedfolder-basic") %>><a href="/v2/synced-folders/basic_usage.html">Basic Usage</a></li>
|
||||
<li<%= sidebar_current("syncedfolder-nfs") %>><a href="/v2/synced-folders/nfs.html">NFS</a></li>
|
||||
<li<%= sidebar_current("syncedfolder-rsync") %>><a href="/v2/synced-folders/rsync.html">RSync</a></li>
|
||||
<li<%= sidebar_current("syncedfolder-smb") %>><a href="/v2/synced-folders/smb.html">SMB</a></li>
|
||||
<li<%= sidebar_current("syncedfolder-virtualbox") %>><a href="/v2/synced-folders/virtualbox.html">VirtualBox</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("multimachine") %>><a href="/v2/multi-machine/index.html">Multi-Machine</a></li>
|
||||
|
||||
<li<%= sidebar_current("providers") %>><a href="/v2/providers/index.html">Providers</a></li>
|
||||
<% if sidebar_section == "providers" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("providers-installation") %>><a href="/v2/providers/installation.html">Installation</a></li>
|
||||
<li<%= sidebar_current("providers-basic-usage") %>><a href="/v2/providers/basic_usage.html">Basic Usage</a></li>
|
||||
<li<%= sidebar_current("providers-configuration") %>><a href="/v2/providers/configuration.html">Configuration</a></li>
|
||||
<li<%= sidebar_current("providers-default") %>><a href="/v2/providers/default.html">Default Provider</a></li>
|
||||
<li><a href="/v2/virtualbox/index.html">VirtualBox</a></li>
|
||||
<li><a href="/v2/vmware/index.html">VMware</a></li>
|
||||
<li><a href="/v2/docker/index.html">Docker</a></li>
|
||||
<li><a href="/v2/hyperv/index.html">Hyper-V</a></li>
|
||||
<li<%= sidebar_current("providers-custom") %>><a href="/v2/providers/custom.html">Custom Provider</a></li>
|
||||
</ul> <!-- /.sub -->
|
||||
<% end %>
|
||||
|
||||
<% if sidebar_section == "docker" %>
|
||||
<li<%= sidebar_current("docker") %>><a href="/v2/docker/index.html">Docker</a></li>
|
||||
<% if sidebar_section == "docker" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("docker-basics") %>><a href="/v2/docker/basics.html">Basic Usage</a></li>
|
||||
<li<%= sidebar_current("docker-commands") %>><a href="/v2/docker/commands.html">Commands</a></li>
|
||||
<li<%= sidebar_current("docker-boxes") %>><a href="/v2/docker/boxes.html">Boxes</a></li>
|
||||
<li<%= sidebar_current("docker-configuration") %>><a href="/v2/docker/configuration.html">Configuration</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% if sidebar_section == "virtualbox" %>
|
||||
<li<%= sidebar_current("virtualbox") %>><a href="/v2/virtualbox/index.html">VirtualBox</a></li>
|
||||
<% if sidebar_section == "virtualbox" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("virtualbox-usage") %>><a href="/v2/virtualbox/usage.html">Usage</a></li>
|
||||
<li<%= sidebar_current("virtualbox-boxes") %>><a href="/v2/virtualbox/boxes.html">Creating a Base Box</a></li>
|
||||
<li<%= sidebar_current("virtualbox-configuration") %>><a href="/v2/virtualbox/configuration.html">Configuration</a></li>
|
||||
<li<%= sidebar_current("virtualbox-networking") %>><a href="/v2/virtualbox/networking.html">Networking</a></li>
|
||||
<li<%= sidebar_current("virtualbox-issues") %>><a href="/v2/virtualbox/common-issues.html">Common Issues</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% if sidebar_section == "vmware" %>
|
||||
<li<%= sidebar_current("vmware") %>><a href="/v2/vmware/index.html">VMware</a></li>
|
||||
<% if sidebar_section == "vmware" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("vmware-installation") %>><a href="/v2/vmware/installation.html">Installation</a></li>
|
||||
<li<%= sidebar_current("vmware-usage") %>><a href="/v2/vmware/usage.html">Usage</a></li>
|
||||
<li<%= sidebar_current("vmware-boxes") %>><a href="/v2/vmware/boxes.html">Boxes</a></li>
|
||||
<li<%= sidebar_current("vmware-configuration") %>><a href="/v2/vmware/configuration.html">Configuration</a></li>
|
||||
<li<%= sidebar_current("vmware-known-issues") %>><a href="/v2/vmware/known-issues.html">Known Issues</a></li>
|
||||
<li<%= sidebar_current("vmware-kernel-upgrade") %>><a href="/v2/vmware/kernel-upgrade.html">Kernel Upgrade</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<% if sidebar_section == "hyperv" %>
|
||||
<li<%= sidebar_current("hyperv") %>><a href="/v2/hyperv/index.html">Hyper-V</a></li>
|
||||
<% if sidebar_section == "hyperv" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("hyperv-usage") %>><a href="/v2/hyperv/usage.html">Usage</a></li>
|
||||
<li<%= sidebar_current("hyperv-boxes") %>><a href="/v2/hyperv/boxes.html">Creating a Base Box</a></li>
|
||||
<li<%= sidebar_current("hyperv-configuration") %>><a href="/v2/hyperv/configuration.html">Configuration</a></li>
|
||||
<li<%= sidebar_current("hyperv-limitations") %>><a href="/v2/hyperv/limitations.html">Limitations</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("plugins") %>><a href="/v2/plugins/index.html">Plugins</a></li>
|
||||
<% if sidebar_section == "plugins" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("plugins-usage") %>><a href="/v2/plugins/usage.html">Usage</a></li>
|
||||
<li<%= sidebar_current("plugins-development-basics") %>><a href="/v2/plugins/development-basics.html">Plugin Development Basics</a></li>
|
||||
<li<%= sidebar_current("plugins-action-hooks") %>><a href="/v2/plugins/action-hooks.html">Action Hooks</a></li>
|
||||
<li<%= sidebar_current("plugins-commands") %>><a href="/v2/plugins/commands.html">Commands</a></li>
|
||||
<li<%= sidebar_current("plugins-configuration") %>><a href="/v2/plugins/configuration.html">Configuration</a></li>
|
||||
<li<%= sidebar_current("plugins-guests") %>><a href="/v2/plugins/guests.html">Guests</a></li>
|
||||
<li<%= sidebar_current("plugins-guestcapabilities") %>><a href="/v2/plugins/guest-capabilities.html">Guest Capabilities</a></li>
|
||||
<li<%= sidebar_current("plugins-hosts") %>><a href="/v2/plugins/hosts.html">Hosts</a></li>
|
||||
<li<%= sidebar_current("plugins-hostcapabilities") %>><a href="/v2/plugins/host-capabilities.html">Host Capabilities</a></li>
|
||||
<li<%= sidebar_current("plugins-providers") %>><a href="/v2/plugins/providers.html">Providers</a></li>
|
||||
<li<%= sidebar_current("plugins-provisioners") %>><a href="/v2/plugins/provisioners.html">Provisioners</a></li>
|
||||
<li<%= sidebar_current("plugins-packaging") %>><a href="/v2/plugins/packaging.html">Packaging & Distribution</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("push") %>><a href="/v2/push/index.html">Push</a></li>
|
||||
|
||||
<% if sidebar_section == "push" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("push-atlas") %>><a href="/v2/push/atlas.html">Atlas</a></li>
|
||||
<li<%= sidebar_current("push-ftp") %>><a href="/v2/push/ftp.html">FTP / SFTP</a></li>
|
||||
<li<%= sidebar_current("push-heroku") %>><a href="/v2/push/heroku.html">Heroku</a></li>
|
||||
<li<%= sidebar_current("push-local-exec") %>><a href="/v2/push/local-exec.html">Local Exec</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
|
||||
<li<%= sidebar_current("other") %>><a href="/v2/other/index.html">Other</a></li>
|
||||
|
||||
<% if sidebar_section == "other" %>
|
||||
<ul class="sub unstyled">
|
||||
<li<%= sidebar_current("other-debugging") %>><a href="/v2/other/debugging.html">Debugging</a></li>
|
||||
<li<%= sidebar_current("other-envvars") %>><a href="/v2/other/environmental-variables.html">Environmental Variables</a></li>
|
||||
</ul>
|
||||
<% end %>
|
||||
</ul>
|
||||
</aside> <!-- /.sidebar -->
|
||||
</div> <!-- /.sidebar -->
|
||||
|
||||
<div class="page-contents span9">
|
||||
<div class="page-background"></div>
|
||||
|
||||
<!-- start page content -->
|
||||
<div class="row">
|
||||
<div class="span8 offset1">
|
||||
<%= yield %>
|
||||
</div> <!-- /.span8 -->
|
||||
</div> <!-- /.row -->
|
||||
</div> <!-- /.page-contents -->
|
||||
</div> <!-- /.row -->
|
||||
</div> <!-- /.container -->
|
||||
</div> <!-- /.page -->
|
||||
|
||||
<!-- footer -->
|
||||
<footer>
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="span12">
|
||||
|
||||
<% relative_path = current_page.path.match(/.*\//).to_s
|
||||
file = current_page.source_file.split("/").last
|
||||
github_link = "https://github.com/mitchellh/vagrant/blob/master/website/docs/source/#{relative_path}#{file}"
|
||||
%>
|
||||
<div class="edit-page-link">
|
||||
<a href="<%= github_link %>">Edit this page</a>
|
||||
</div>
|
||||
|
||||
<ul class="unstyled footer-nav">
|
||||
<li><a href="https://docs.vagrantup.com/">Documentation</a></li>
|
||||
<li><a href="https://www.vagrantup.com/about">About</a></li>
|
||||
<li><a href="https://www.vagrantup.com/support">Support</a></li>
|
||||
<a href="https://www.vagrantup.com/downloads">
|
||||
<li class="button inline-button">Download</li>
|
||||
</a>
|
||||
</ul>
|
||||
|
||||
<ul class="unstyled logos">
|
||||
<a href="https://www.vagrantup.com">
|
||||
<li class="vagrant-logo-monochrome"></li>
|
||||
</a>
|
||||
<li><span>by</span></li>
|
||||
<a href="https://www.hashicorp.com">
|
||||
<li class="hashi-logo-monochrome "></li>
|
||||
</a>
|
||||
</ul> <!-- /span -->
|
||||
|
||||
</div> <!-- /span -->
|
||||
</div> <!-- /row -->
|
||||
|
||||
<div class="row">
|
||||
<h6 class="legal">
|
||||
Copyright © <%= Time.now.year %> HashiCorp
|
||||
</h6>
|
||||
</div> <!-- row -->
|
||||
</div> <!-- container -->
|
||||
</footer>
|
||||
|
||||
<!-- close .wrapper -->
|
||||
</div>
|
||||
|
||||
<%= javascript_include_tag "lib/Base" %>
|
||||
<%= javascript_include_tag "Sidebar" %>
|
||||
|
||||
<!-- load scripts -->
|
||||
<!-- load full-width image into any div with class="big-background -->
|
||||
<script>
|
||||
$(".big-background").backstretch("assets/photos/full_width.jpg");
|
||||
|
||||
new Sidebar();
|
||||
</script>
|
||||
|
||||
<!-- Google analytics -->
|
||||
<script type="text/javascript">
|
||||
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', 'UA-15091924-1']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
|
||||
</script>
|
||||
|
||||
<!-- AdRoll -->
|
||||
<script type="text/javascript">
|
||||
adroll_adv_id = "6QAAFJDIWBG3DJBDRJ7BEX";
|
||||
adroll_pix_id = "PYT5HSNKNRDS7LMUR5B6YG";
|
||||
(function () {
|
||||
var oldonload = window.onload;
|
||||
window.onload = function(){
|
||||
__adroll_loaded=true;
|
||||
var scr = document.createElement("script");
|
||||
var host = (("https:" == document.location.protocol) ? "https://s.adroll.com" : "http://a.adroll.com");
|
||||
scr.setAttribute('async', 'true');
|
||||
scr.type = "text/javascript";
|
||||
scr.src = host + "/j/roundtrip.js";
|
||||
((document.getElementsByTagName('head') || [null])[0] ||
|
||||
document.getElementsByTagName('script')[0].parentNode).appendChild(scr);
|
||||
if(oldonload){oldonload()}};
|
||||
}());
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
|
@ -1,344 +0,0 @@
|
|||
html {
|
||||
font-size: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
|
||||
}
|
||||
body {
|
||||
font-family: @sans-serif-stack;
|
||||
font-size: @base-font-size;
|
||||
line-height: @base-line-height;
|
||||
color: @black;
|
||||
background-color: @white;
|
||||
letter-spacing: 2px;
|
||||
.museo-sans-regular;
|
||||
|
||||
}
|
||||
.wrapper {
|
||||
margin-top: 80px;
|
||||
|
||||
}
|
||||
.container {
|
||||
z-index: 999;
|
||||
//keep content on top
|
||||
position: relative;
|
||||
|
||||
}
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: inherit;
|
||||
text-rendering: optimizelegibility;
|
||||
.museo-sans-bold;
|
||||
|
||||
}
|
||||
h1 {
|
||||
@font-size: 70px;
|
||||
font-size: @font-size;
|
||||
line-height: 80px;
|
||||
letter-spacing: 3px;
|
||||
|
||||
span {
|
||||
font-size: @headline-span-size;
|
||||
display: block;
|
||||
|
||||
}
|
||||
&.all-caps {
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
font-size: 40px;
|
||||
}
|
||||
|
||||
}
|
||||
h2 {
|
||||
@font-size: 30px;
|
||||
font-size: @font-size;
|
||||
line-height: 35px;
|
||||
|
||||
}
|
||||
h3 {
|
||||
@font-size: 30px;
|
||||
font-size: @font-size;
|
||||
line-height: @font-size;
|
||||
|
||||
}
|
||||
h4 {
|
||||
@font-size: 24px;
|
||||
font-size: @font-size;
|
||||
line-height: @font-size;
|
||||
|
||||
}
|
||||
h5 {
|
||||
@font-size: 20px;
|
||||
font-size: @font-size;
|
||||
line-height: @font-size;
|
||||
|
||||
}
|
||||
h6 {
|
||||
@font-size: 12px;
|
||||
font-size: @font-size;
|
||||
line-height: @font-size;
|
||||
|
||||
}
|
||||
p,
|
||||
td {
|
||||
letter-spacing: normal;
|
||||
line-height: 32px;
|
||||
|
||||
a {
|
||||
color: @docs-blue;
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid @docs-blue;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: darken(@blue, 10%);
|
||||
border-bottom: 1px solid darken(@blue, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: @purple;
|
||||
.animate-text-color;
|
||||
|
||||
}
|
||||
&:active {
|
||||
color: @blue;
|
||||
|
||||
}
|
||||
&:visited {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
ul {
|
||||
|
||||
|
||||
}
|
||||
li {
|
||||
line-height: @base-line-height;
|
||||
|
||||
}
|
||||
blockquote {
|
||||
border: none;
|
||||
margin: 60px;
|
||||
|
||||
p {
|
||||
// blockquote p
|
||||
font-size: @base-font-size * 2;
|
||||
line-height: @base-line-height * 2;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
}
|
||||
strong {
|
||||
.museo-sans-bold;
|
||||
|
||||
}
|
||||
em {
|
||||
.museo-sans-regular-italic;
|
||||
|
||||
}
|
||||
br {
|
||||
display: block;
|
||||
line-height: (@baseline * 2);
|
||||
|
||||
}
|
||||
pre,
|
||||
code {
|
||||
font-family: @mono-stack;
|
||||
|
||||
}
|
||||
code {
|
||||
font-size: inherit;
|
||||
|
||||
}
|
||||
pre {
|
||||
border: none;
|
||||
font-size: @base-font-size;
|
||||
background: @black;
|
||||
color: @white;
|
||||
padding: 20px;
|
||||
line-height: @base-line-height;
|
||||
margin-top: 20px;
|
||||
margin-bottom: 20px;
|
||||
|
||||
span {
|
||||
color: @code-highlight-text;
|
||||
}
|
||||
|
||||
}
|
||||
hr {
|
||||
|
||||
|
||||
}
|
||||
.vr {
|
||||
width: 2px;
|
||||
height: 100%;
|
||||
|
||||
}
|
||||
form {
|
||||
|
||||
|
||||
}
|
||||
input {
|
||||
letter-spacing: 3px;
|
||||
|
||||
&:focus {
|
||||
outline: none;
|
||||
}
|
||||
}
|
||||
::-webkit-input-placeholder {
|
||||
|
||||
overflow: visible;
|
||||
padding-top: 3px;
|
||||
color: @light-gray-text;
|
||||
|
||||
}
|
||||
input:-moz-placeholder {
|
||||
overflow: visible;
|
||||
padding-top: 3px;
|
||||
color: @light-gray-text;
|
||||
|
||||
}
|
||||
/* type and styles */
|
||||
.meta,
|
||||
.legal,
|
||||
.date {
|
||||
color: @medium-gray-text;
|
||||
line-height: @base-line-height;
|
||||
.museo-sans-regular;
|
||||
|
||||
}
|
||||
.date {
|
||||
text-transform: uppercase;
|
||||
|
||||
}
|
||||
.button {
|
||||
color: @white;
|
||||
text-align: center;
|
||||
background-color: @primary-button-color;
|
||||
display: block;
|
||||
padding: 15px 0;
|
||||
margin-top: 20px !important;
|
||||
text-transform: uppercase;
|
||||
font-size: 25px;
|
||||
letter-spacing: 5px;
|
||||
.museo-sans-light;
|
||||
.rounded;
|
||||
.hover;
|
||||
|
||||
&.inline-button {
|
||||
background-color: @vagrant-blue;
|
||||
padding: 5px 20px;
|
||||
color: @white !important;
|
||||
font-size: 15px;
|
||||
letter-spacing: 1px;
|
||||
.rounded;
|
||||
|
||||
a,
|
||||
a:hover {
|
||||
color: @white;
|
||||
}
|
||||
&.next-button,
|
||||
&.prev-button {
|
||||
max-width: 33%;
|
||||
white-space: nowrap;
|
||||
}
|
||||
&.next-button {
|
||||
float: right;
|
||||
&:before {
|
||||
content: "Next:";
|
||||
display: inline-block;
|
||||
padding-right: 3px;
|
||||
}
|
||||
&:after {
|
||||
content: "\00BB";
|
||||
display: inline-block;
|
||||
padding-left: 3px;
|
||||
}
|
||||
|
||||
}
|
||||
&.prev-button {
|
||||
float: left;
|
||||
&:before {
|
||||
content: "\00AB\0020Previous: ";
|
||||
display: inline-block;
|
||||
padding-right: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
&.white-button {
|
||||
background: fade(@white, 20%);
|
||||
|
||||
&:hover {
|
||||
background: fade(@white, 30%);
|
||||
}
|
||||
|
||||
}
|
||||
&.secondary-button {
|
||||
background: @light-gray;
|
||||
|
||||
&:hover {
|
||||
background: @purple;
|
||||
}
|
||||
|
||||
}
|
||||
&.with-carat span {
|
||||
margin-right: -10px;
|
||||
//recenter text if there's a carat after text
|
||||
|
||||
}
|
||||
span {
|
||||
// button text styles can go here
|
||||
|
||||
}
|
||||
&:hover {
|
||||
background-color: @purple;
|
||||
.animate-background-color;
|
||||
|
||||
}
|
||||
&:active {
|
||||
|
||||
|
||||
}
|
||||
&.disabled {
|
||||
background-color: @light-gray-background;
|
||||
}
|
||||
|
||||
}
|
||||
a.read-more {
|
||||
color: @blue;
|
||||
|
||||
&:hover {
|
||||
color: darken(@blue, 10%);
|
||||
}
|
||||
|
||||
}
|
||||
// misc. styles
|
||||
.loading {
|
||||
text-align: center;
|
||||
font-size: @base-font-size;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 5px;
|
||||
color: @medium-gray-text;
|
||||
padding: 30px 0 20px;
|
||||
|
||||
}
|
||||
.pinned {
|
||||
position: fixed;
|
||||
}
|
|
@ -1,80 +0,0 @@
|
|||
/* compontents */
|
||||
|
||||
table.mr-types {
|
||||
th.mr-type {
|
||||
width: 200px;
|
||||
}
|
||||
}
|
||||
|
||||
//search
|
||||
.search-bar {
|
||||
border-bottom: 1px solid fade(@black, 10%);
|
||||
position: relative;
|
||||
z-index: 99999; //keep search above content
|
||||
margin-bottom: -1px;
|
||||
|
||||
.search-icon {
|
||||
height: 60px;
|
||||
width: 40px;
|
||||
background: url(/images/search_icon.png) no-repeat 0 center;
|
||||
}
|
||||
|
||||
.search {
|
||||
//.debug;
|
||||
background: @white;
|
||||
height: 60px;
|
||||
|
||||
input,
|
||||
button,
|
||||
form {
|
||||
.kill-effects;
|
||||
border: none;
|
||||
height: 60px;
|
||||
font-size: 20px;
|
||||
.museo-sans-light-italic;
|
||||
}
|
||||
|
||||
input {
|
||||
margin:0;
|
||||
padding: 0 0 0 0;
|
||||
font-size: 20px;
|
||||
|
||||
&:focus {
|
||||
|
||||
} //focus
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 0 20px;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
} //search
|
||||
} //search bar
|
||||
|
||||
//pagination
|
||||
.pagination {
|
||||
height: 80px;
|
||||
background: @gray-background;
|
||||
padding: 0;
|
||||
margin:0 auto;
|
||||
text-transform: uppercase;
|
||||
color: @blue-text;
|
||||
z-index: 999;
|
||||
position:relative;
|
||||
|
||||
a.previous,
|
||||
a.next {
|
||||
padding: 25px 0;
|
||||
}
|
||||
|
||||
a.previous {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
a.next {
|
||||
margin-right: 20px;
|
||||
}
|
||||
|
||||
}
|
|
@ -1,117 +0,0 @@
|
|||
// footer
|
||||
|
||||
footer {
|
||||
padding: 80px 0;
|
||||
margin-top: 20px;
|
||||
background: @black url(/images/footer_background.png) center center;
|
||||
text-align: center;
|
||||
color: @white;
|
||||
z-index: 999;
|
||||
position: relative; //z-index needs position!
|
||||
|
||||
ul.footer-nav {
|
||||
color: @blue;
|
||||
text-transform: uppercase;
|
||||
font-size: 15px;
|
||||
.museo-sans-light;
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
margin: 0 10px;
|
||||
|
||||
a {
|
||||
color: @blue;
|
||||
|
||||
&:hover {
|
||||
color: @purple;
|
||||
} //li a:hover
|
||||
} // li a
|
||||
} //li
|
||||
|
||||
} //ul
|
||||
|
||||
|
||||
ul.logos {
|
||||
margin: (@baseline * 2) 0;
|
||||
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
span {
|
||||
color: @dark-gray-text;
|
||||
.museo-sans-light;
|
||||
text-transform: uppercase;
|
||||
font-size: 40px;
|
||||
margin: 0 10px;
|
||||
}
|
||||
|
||||
.vagrant-logo-monochrome,
|
||||
.hashi-logo-monochrome {
|
||||
|
||||
&:hover {
|
||||
-khtml-opacity: .85;
|
||||
-moz-opacity: .85;
|
||||
opacity: .85;
|
||||
filter: alpha(opacity=85);
|
||||
.animate-opacity;
|
||||
}
|
||||
}
|
||||
|
||||
.vagrant-logo-monochrome {
|
||||
height: 80px;
|
||||
width: 80px;
|
||||
background: url(/images/footer_vagrant_logo.png) no-repeat center center;
|
||||
margin-bottom: -25px;
|
||||
|
||||
}
|
||||
|
||||
.hashi-logo-monochrome {
|
||||
height: 80px;
|
||||
width: 80px;
|
||||
background: url(/images/footer_hashi_logo.png) no-repeat center center;
|
||||
margin-bottom: -25px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
a.contact-link {
|
||||
color: @dark-gray-text;
|
||||
line-height: @base-line-height * 2;
|
||||
font-size: 30px;
|
||||
|
||||
&:hover {
|
||||
color: @white;
|
||||
}
|
||||
|
||||
&:visited {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
&:active {
|
||||
color: @blue;
|
||||
}
|
||||
} //contact link
|
||||
|
||||
} //footer
|
||||
|
||||
.edit-page-link{
|
||||
position: absolute;
|
||||
top: -120px;
|
||||
right: 15px;
|
||||
z-index: 9999;
|
||||
|
||||
a{
|
||||
text-transform: uppercase;
|
||||
color: @black;
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px){
|
||||
.edit-page-link{
|
||||
top: -90px;
|
||||
}
|
||||
}
|
|
@ -1,166 +0,0 @@
|
|||
//
|
||||
// Header
|
||||
// - Project Specific
|
||||
// - edits should be made here
|
||||
// --------------------------------------------------
|
||||
|
||||
#header {
|
||||
width: 100%;
|
||||
// font-size: 15px;
|
||||
text-transform: uppercase;
|
||||
height: @header-height;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-color: @white;
|
||||
z-index: 1001;
|
||||
|
||||
&.docs {
|
||||
background: @gray-background;
|
||||
}
|
||||
|
||||
.navbar-toggle{
|
||||
margin-right: 15px;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
float: left;
|
||||
.logo{
|
||||
padding-left: 36px;
|
||||
font-size: 0;
|
||||
line-height: 77px;
|
||||
width: @project-logo-width;
|
||||
padding-left: 0;
|
||||
.img-retina('/images/logo-header-docs.png', @project-logo-width, @project-logo-height, no-repeat);
|
||||
background-position: 0 center;
|
||||
|
||||
&:hover{
|
||||
opacity: .6;
|
||||
}
|
||||
}
|
||||
|
||||
.by-hashicorp{
|
||||
color: @project-link-color;
|
||||
|
||||
svg{
|
||||
path,
|
||||
polygon,
|
||||
rect{
|
||||
fill: @project-link-color;
|
||||
}
|
||||
}
|
||||
|
||||
&:hover{
|
||||
color: black;
|
||||
svg{
|
||||
path,
|
||||
polygon,
|
||||
rect{
|
||||
fill: black;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.svg-wrap{
|
||||
font-weight: 400;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.buttons{
|
||||
display: none;
|
||||
margin-top: 2px; //baseline everything
|
||||
|
||||
.navigation-links{
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
.main-links,
|
||||
.external-links {
|
||||
li > a {
|
||||
.project-a-style();
|
||||
}
|
||||
}
|
||||
|
||||
.main-links {
|
||||
margin-right: 0;
|
||||
|
||||
li {
|
||||
&.pill{
|
||||
background-color: #48b4fb;
|
||||
border-radius: 25px;
|
||||
padding: 5px 2px;
|
||||
line-height: 26px;
|
||||
margin-top: 22px;
|
||||
a{
|
||||
color: #FFF;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
> a {
|
||||
color: @project-link-color;
|
||||
|
||||
&:hover{
|
||||
color: @black;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.navbar-toggle{
|
||||
display: none;
|
||||
}
|
||||
|
||||
#header{
|
||||
.buttons{
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.navbar-header{
|
||||
margin-left: 15px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
#header {
|
||||
height: auto;
|
||||
|
||||
.navbar-toggle{
|
||||
padding-top: 7px;
|
||||
}
|
||||
|
||||
.by-hashicorp{
|
||||
margin-top: 2px;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
.logo{
|
||||
width: @project-logo-width * .75;
|
||||
background-size: (@project-logo-width * .75) (@project-logo-height * .75);
|
||||
//background-position: 0 45%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 320px) {
|
||||
#header {
|
||||
.by-hashicorp{
|
||||
margin-left: -2px;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
.logo{
|
||||
width: 40px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,459 +0,0 @@
|
|||
@media (max-width: 480px) {
|
||||
|
||||
nav {
|
||||
position: absolute !important;
|
||||
height: auto;
|
||||
font-size: 13px;
|
||||
padding: 10px 0;
|
||||
.drop-shadow;
|
||||
|
||||
a.vagrant-docs-logo {
|
||||
background: url(/images/logo_docs_small.png) no-repeat center center !important;
|
||||
display: inline-block !important;
|
||||
float: none !important;
|
||||
position: relative;
|
||||
width: 200px !important;
|
||||
left: 50%;
|
||||
padding: 10px 0;
|
||||
.reset;
|
||||
margin-left: -100px !important;
|
||||
}
|
||||
|
||||
a.vagrant-logo {
|
||||
background: url(/images/logo_vagrant.png) no-repeat center center !important;
|
||||
display: inline-block !important;
|
||||
float: none !important;
|
||||
position: relative;
|
||||
width: 80% !important;
|
||||
left: 50%;
|
||||
padding: 10px 0;
|
||||
.reset;
|
||||
margin-left: -130px !important;
|
||||
}
|
||||
|
||||
ul {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 10px 0 0;
|
||||
}
|
||||
}
|
||||
|
||||
a.brand {
|
||||
display: none !important;
|
||||
position: static !important;
|
||||
width: 200px !important;
|
||||
margin: 0 0 0 0 !important;
|
||||
background-position: center center !important;
|
||||
}
|
||||
|
||||
.search {
|
||||
input {
|
||||
font-size: 20px !important;
|
||||
padding: 0 !important;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
::-webkit-input-placeholder {
|
||||
overflow: visible;
|
||||
padding-top: 3px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
input:-moz-placeholder {
|
||||
overflow: visible;
|
||||
padding-top: 3px;
|
||||
font-size: 15px;
|
||||
}
|
||||
|
||||
.page {
|
||||
|
||||
.page-contents {
|
||||
|
||||
} //page contents
|
||||
|
||||
&.home {
|
||||
.hero {
|
||||
background-size: 300%;
|
||||
background-position: center 0;
|
||||
height: 400px;
|
||||
|
||||
.hero-content {
|
||||
margin-top: 80px;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 40px !important;
|
||||
line-height: 40px !important;
|
||||
margin-bottom: 30px !important;
|
||||
letter-spacing: 1px;
|
||||
margin-bottom: ;
|
||||
} //h1
|
||||
|
||||
h2 {
|
||||
font-size: 20px !important;
|
||||
line-height: 25px;
|
||||
} //h2
|
||||
} //hero
|
||||
} //home
|
||||
|
||||
.why-vagrant {
|
||||
padding: 40px 0 !important;
|
||||
|
||||
hgroup {
|
||||
margin: 40px 0 !important;
|
||||
|
||||
:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
} //hgroup
|
||||
|
||||
h1 {
|
||||
font-size: 30px !important;
|
||||
line-height: 30px !important;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 40px !important;
|
||||
line-height: 40px !important;
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
h4 {
|
||||
.hyphenate;
|
||||
}
|
||||
} //why-vagrant
|
||||
|
||||
.get-started {
|
||||
padding: 40px 0 !important;
|
||||
|
||||
h1 {
|
||||
width: 60%;
|
||||
font-size: 30px !important;
|
||||
line-height: 30px !important;
|
||||
}
|
||||
|
||||
pre {
|
||||
margin: 30px auto 30px !important;
|
||||
}
|
||||
} //get-started
|
||||
|
||||
.customers {
|
||||
padding: 40px 0 !important;
|
||||
|
||||
h1 {
|
||||
font-size: 30px !important;
|
||||
line-height: 30px !important;
|
||||
}
|
||||
} //customers
|
||||
|
||||
&.inner {
|
||||
padding-top: 30px;
|
||||
|
||||
.page-contents {
|
||||
padding: 40px 0;
|
||||
}
|
||||
} //inner
|
||||
|
||||
&.docs {
|
||||
|
||||
.page-contents {
|
||||
padding: 40px 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 25px;
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
h2.steps img {
|
||||
display: block;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
} //docs
|
||||
|
||||
} //page
|
||||
|
||||
footer {
|
||||
padding: 40px 0 !important;
|
||||
background-size: 300%;
|
||||
background-position: center bottom;
|
||||
background-repeat: no-repeat;
|
||||
|
||||
ul.footer-nav {
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
|
||||
.button {
|
||||
padding: 6px 0;
|
||||
font-size: 20px;
|
||||
letter-spacing: 3px;
|
||||
.museo-sans-regular;
|
||||
}
|
||||
|
||||
.search-bar {
|
||||
margin-top: 160px !important;
|
||||
}
|
||||
|
||||
.pagination {
|
||||
font-size: 15px;
|
||||
|
||||
}
|
||||
|
||||
footer {
|
||||
|
||||
a.contact-link {
|
||||
font-size: 20px;
|
||||
} // contact link
|
||||
}
|
||||
|
||||
} //mobile
|
||||
|
||||
@media (min-width: 768px) and (max-width: 979px) {
|
||||
|
||||
nav {
|
||||
|
||||
a.vagrant-logo {
|
||||
background: url(/images/logo_small.png) no-repeat 0 0 !important;
|
||||
width: 80px;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 25px 20px;
|
||||
}
|
||||
} // nav
|
||||
|
||||
.toggle {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.sidebar-nav ul {
|
||||
display: block !important;
|
||||
}
|
||||
|
||||
} // 768 < x < 979
|
||||
|
||||
@media (min-width: 1200px) {
|
||||
|
||||
} // > 1200
|
||||
|
||||
@media (max-width: 979px) {
|
||||
|
||||
.vagrant-docs-logo {
|
||||
background: url(/images/logo_docs_small.png) no-repeat 0 0 !important;
|
||||
width: 165px !important;
|
||||
}
|
||||
|
||||
} // < 979
|
||||
|
||||
|
||||
@media (min-width: 980px) {
|
||||
|
||||
} // > 980
|
||||
|
||||
|
||||
@media (max-width: 767px) {
|
||||
|
||||
// these modules go full-width at smaller sizes
|
||||
.pagination,
|
||||
.hero,
|
||||
.why-vagrant,
|
||||
.get-started,
|
||||
.customers,
|
||||
footer {
|
||||
.full-width;
|
||||
}
|
||||
|
||||
nav {
|
||||
height: auto;
|
||||
font-size: 13px;
|
||||
padding: 10px 0;
|
||||
//.drop-shadow;
|
||||
|
||||
.vagrant-logo {
|
||||
display: inline-block !important;
|
||||
background-position: center center;
|
||||
float: none !important;
|
||||
position: relative;
|
||||
width: 350px !important;
|
||||
left: 50%;
|
||||
padding: 10px 0;
|
||||
.reset;
|
||||
margin-left: -175px !important;
|
||||
}
|
||||
|
||||
.vagrant-docs-logo {
|
||||
background: url(/images/logo_docs.png) no-repeat 0 0 !important;
|
||||
display: inline-block !important;
|
||||
background-position: center center;
|
||||
float: none !important;
|
||||
position: relative;
|
||||
width: 350px !important;
|
||||
left: 50%;
|
||||
padding: 10px 0;
|
||||
.reset;
|
||||
margin-left: -175px !important;
|
||||
}
|
||||
|
||||
ul {
|
||||
position: relative;
|
||||
margin: 0 auto;
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
padding: 10px 0 0;
|
||||
|
||||
li:first-child {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a.brand {
|
||||
display: none !important;
|
||||
position: static !important;
|
||||
width: 200px !important;
|
||||
margin: 0 0 0 0 !important;
|
||||
background-position: center center !important;
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
|
||||
ul {
|
||||
margin-top: 0 !important;
|
||||
|
||||
li {
|
||||
display: block;
|
||||
text-indent: 20px;
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
background-color: fade(@black, 5%);
|
||||
.animate-background-color;
|
||||
}
|
||||
} //li
|
||||
|
||||
ul.sub {
|
||||
|
||||
li {
|
||||
|
||||
}
|
||||
} //ul.sub
|
||||
} //ul
|
||||
|
||||
.docs & {
|
||||
.docs-bg-small;
|
||||
|
||||
ul {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
margin-right: -20px;
|
||||
margin-left: -20px;
|
||||
.docs-bg-small;
|
||||
} //docs sidebar-nav
|
||||
} // docs sidebar
|
||||
} //sidebar
|
||||
|
||||
.page {
|
||||
|
||||
.page-background {
|
||||
left: 0; //make it full-width to cover the gutters on small screens
|
||||
}
|
||||
|
||||
.page-contents {
|
||||
|
||||
}
|
||||
|
||||
&.home {
|
||||
|
||||
.hero {
|
||||
padding: 40px 0;
|
||||
}
|
||||
|
||||
h1,
|
||||
h4,
|
||||
pre,
|
||||
.customers-content, {
|
||||
max-width: 80% !important;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 20px 20px 0 !important;
|
||||
}
|
||||
|
||||
.customer-logos {
|
||||
margin-top: @baseline !important;
|
||||
}
|
||||
|
||||
} //home
|
||||
|
||||
&.inner {
|
||||
|
||||
.page-contents {
|
||||
|
||||
}
|
||||
|
||||
.sidebar {
|
||||
padding: 0;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.sidebar-nav {
|
||||
.inner-bg-small;
|
||||
margin-right: -20px;
|
||||
margin-left: -20px;
|
||||
|
||||
}
|
||||
|
||||
h1 {
|
||||
padding: 15px 0 15px;
|
||||
margin: 0 0 0 20px !important;
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.button {
|
||||
width: 80%;
|
||||
}
|
||||
}
|
||||
|
||||
&.docs {
|
||||
background: transparent;
|
||||
} //docs
|
||||
} //page
|
||||
|
||||
.button {
|
||||
max-width: 300px;
|
||||
position: relative;
|
||||
//margin: 20px 0 20px 20px;
|
||||
}
|
||||
|
||||
.full-width {
|
||||
margin-right: -20px !important;
|
||||
margin-left: -20px ;
|
||||
}
|
||||
|
||||
} // < 767
|
||||
|
||||
|
||||
@media (max-width: 480px){
|
||||
#header{
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.wrapper{
|
||||
margin-top: 60px;
|
||||
}
|
||||
}
|
|
@ -1,200 +0,0 @@
|
|||
// styles and effects
|
||||
.round-corners {
|
||||
-moz-border-radius: 3px;
|
||||
-webkit-border-radius: 3px;
|
||||
-khtml-border-radius: 3px;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.rounded {
|
||||
-moz-border-radius: 50px;
|
||||
-webkit-border-radius: 50px;
|
||||
-khtml-border-radius: 50px;
|
||||
border-radius: 50px;
|
||||
}
|
||||
|
||||
.animate-background-color {
|
||||
transition: background-color .3s ease-in-out;
|
||||
-moz-transition: background-color .3s ease-in-out;
|
||||
-webkit-transition: background-color .3s ease-in-out;
|
||||
-o-transition: background-color .3s ease-in-out;
|
||||
}
|
||||
|
||||
.animate-text-color {
|
||||
transition: color .2s ease-in-out;
|
||||
-moz-transition: color .2s ease-in-out;
|
||||
-webkit-transition: color .2s ease-in-out;
|
||||
-o-transition: color .2s ease-in-out;
|
||||
}
|
||||
|
||||
.animate-opacity {
|
||||
transition: opacity .2s ease-in-out;
|
||||
-moz-transition: opacity .2s ease-in-out;
|
||||
-webkit-transition: opacity .2s ease-in-out;
|
||||
-o-transition: opacity .2s ease-in-out;
|
||||
}
|
||||
|
||||
.drop-shadow {
|
||||
-webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1) !important;
|
||||
-moz-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1) !important;
|
||||
box-shadow: 0 1px 5px rgba(0, 0, 0, 0.1) !important;
|
||||
.animate-opacity;
|
||||
}
|
||||
|
||||
.hyphenate {
|
||||
-webkit-hyphens: auto;
|
||||
-moz-hyphens: auto;
|
||||
hyphens: auto;
|
||||
}
|
||||
|
||||
.uppercase {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.padded {
|
||||
padding: (@baseline * 3) 0;
|
||||
}
|
||||
|
||||
.padded-medium {
|
||||
padding: (@baseline * 2) 0;
|
||||
}
|
||||
|
||||
.padded-small{
|
||||
padding: @baseline 0;
|
||||
}
|
||||
|
||||
.fixed-bg {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -5; //keep it in the back
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.transition(@transition) {
|
||||
-webkit-transition: @transition;
|
||||
-o-transition: @transition;
|
||||
transition: @transition;
|
||||
}
|
||||
|
||||
.translate3d (@x, @y: 0, @z: 0) {
|
||||
-webkit-transform: translate3d(@x, @y, @z);
|
||||
-moz-transform: translate3d(@x, @y, @z);
|
||||
-ms-transform: translate3d(@x, @y, @z);
|
||||
-o-transform: translate3d(@x, @y, @z);
|
||||
}
|
||||
|
||||
.clearfix{
|
||||
zoom:1;
|
||||
&:before, &:after{ content:""; display:table; }
|
||||
&:after{ clear: both; }
|
||||
}
|
||||
|
||||
.inner-bg-large {
|
||||
background-image: #c1b4d5; /* Old browsers */
|
||||
background-image: url(/images/sidebar_background_inner.png), -moz-linear-gradient(45deg, #c1b4d5 0%, #98d3f8 100%); /* FF3.6+ */
|
||||
background-image: url(/images/sidebar_background_inner.png), -webkit-gradient(linear, left bottom, right top, color-stop(0%,#c1b4d5), color-stop(100%,#98d3f8)); /* Chrome,Safari4+ */
|
||||
background-image: url(/images/sidebar_background_inner.png), -webkit-linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* Chrome10+,Safari5.1+ */
|
||||
background-image: url(/images/sidebar_background_inner.png), -o-linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* Opera 11.10+ */
|
||||
background-image: url(/images/sidebar_background_inner.png), -ms-linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* IE10+ */
|
||||
background-image: url(/images/sidebar_background_inner.png), linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* W3C */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c1b4d5', endColorstr='#98d3f8',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0 0;
|
||||
}
|
||||
|
||||
.inner-bg-small {
|
||||
background: #c1b4d5; /* Old browsers */
|
||||
background: -moz-linear-gradient(45deg, #c1b4d5 0%, #98d3f8 100%); /* FF3.6+ */
|
||||
background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#c1b4d5), color-stop(100%,#98d3f8)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* Opera 11.10+ */
|
||||
background: -ms-linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* IE10+ */
|
||||
background: linear-gradient(45deg, #c1b4d5 0%,#98d3f8 100%); /* W3C */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c1b4d5', endColorstr='#98d3f8',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
|
||||
}
|
||||
|
||||
|
||||
.docs-bg-large {
|
||||
background-image: url(/images/sidebar_background_docs.png), #362d6c; /* Old browsers */
|
||||
background-image: url(/images/sidebar_background_docs.png), -moz-linear-gradient(45deg, #362d6c 0%, #0c5593 100%); /* FF3.6+ */
|
||||
background-image: url(/images/sidebar_background_docs.png), -webkit-gradient(linear, left bottom, right top, color-stop(0%,#362d6c), color-stop(100%,#0c5593)); /* Chrome,Safari4+ */
|
||||
background-image: url(/images/sidebar_background_docs.png), -webkit-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* Chrome10+,Safari5.1+ */
|
||||
background-image: url(/images/sidebar_background_docs.png), -o-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* Opera 11.10+ */
|
||||
background-image: url(/images/sidebar_background_docs.png), -ms-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* IE10+ */
|
||||
background-image: url(/images/sidebar_background_docs.png), linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* W3C */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#362d6c', endColorstr='#0c5593',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
|
||||
.docs-bg-small {
|
||||
background: #362d6c; /* Old browsers */
|
||||
background: -moz-linear-gradient(45deg, #362d6c 0%, #0c5593 100%); /* FF3.6+ */
|
||||
background: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#362d6c), color-stop(100%,#0c5593)); /* Chrome,Safari4+ */
|
||||
background: -webkit-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* Chrome10+,Safari5.1+ */
|
||||
background: -o-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* Opera 11.10+ */
|
||||
background: -ms-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* IE10+ */
|
||||
background: linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* W3C */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#362d6c', endColorstr='#0c5593',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
|
||||
}
|
||||
|
||||
.get-started-bg {
|
||||
background-image: #362d6c; /* Old browsers */
|
||||
background-image: -moz-linear-gradient(45deg, #362d6c 0%, #0c5593 100%); /* FF3.6+ */
|
||||
background-image: -webkit-gradient(linear, left bottom, right top, color-stop(0%,#362d6c), color-stop(100%,#0c5593)); /* Chrome,Safari4+ */
|
||||
background-image: -webkit-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* Chrome10+,Safari5.1+ */
|
||||
background-image: -o-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* Opera 11.10+ */
|
||||
background-image: -ms-linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* IE10+ */
|
||||
background-image: linear-gradient(45deg, #362d6c 0%,#0c5593 100%); /* W3C */
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#362d6c', endColorstr='#0c5593',GradientType=1 ); /* IE6-8 fallback on horizontal gradient */
|
||||
background-position: center 0;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
/*
|
||||
.sidebar-nav-selected {
|
||||
background: -moz-linear-gradient(left, rgba(255,255,255,0) 0%, rgba(71,101,118,1) 100%);
|
||||
background: -webkit-gradient(linear, left top, right top, color-stop(0%,rgba(255,255,255,0)), color-stop(100%,rgba(71,101,118,1)));
|
||||
background: -webkit-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(71,101,118,1) 100%);
|
||||
background: -o-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(71,101,118,1) 100%);
|
||||
background: -ms-linear-gradient(left, rgba(255,255,255,0) 0%,rgba(71,101,118,1) 100%);
|
||||
background: linear-gradient(to right, rgba(255,255,255,0) 0%,rgba(71,101,118,1) 100%);
|
||||
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#476576',GradientType=1 );
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
// helpers
|
||||
.reset {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.kill-effects {
|
||||
-webkit-box-shadow: 0 0;
|
||||
-moz-box-shadow: 0 0;
|
||||
box-shadow: 0 0;
|
||||
-webkit-border-radius: 0px;
|
||||
-moz-border-radius: 0px;
|
||||
border-radius: 0px;
|
||||
font-family: inherit;
|
||||
color: inherit;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border: 0;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
.debug {
|
||||
border: 1px solid #ff0000;
|
||||
}
|
||||
|
||||
|
||||
.hover {
|
||||
&:hover {
|
||||
cursor: pointer;
|
||||
.animate-text-color;
|
||||
}
|
||||
}
|
|
@ -1,43 +0,0 @@
|
|||
//
|
||||
// Sidebar
|
||||
// - Project Specific
|
||||
// - Make sidebar edits here
|
||||
// --------------------------------------------------
|
||||
|
||||
#mobile-nav {
|
||||
.mobile-nav-nav {
|
||||
width: 100%;
|
||||
text-align: center;
|
||||
// Links
|
||||
//----------------
|
||||
//
|
||||
li{
|
||||
float: none;
|
||||
|
||||
&.pill{
|
||||
background-color: #48b4fb;
|
||||
border-radius: 25px;
|
||||
padding: 5px 2px;
|
||||
line-height: 26px;
|
||||
margin: 10px 10px 10px 10px;
|
||||
|
||||
&:focus,
|
||||
&:hover{
|
||||
a{
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
a{
|
||||
color: @white;
|
||||
line-height: 24px;
|
||||
}
|
||||
}
|
||||
|
||||
a{
|
||||
.anti-alias();
|
||||
font-size: 13px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,285 +0,0 @@
|
|||
/* page */
|
||||
.page { //style all pages
|
||||
|
||||
.page-background { //page background color
|
||||
.fixed-bg;
|
||||
} //.background
|
||||
|
||||
.page-contents {
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
text-transform: uppercase;
|
||||
text-align: left;
|
||||
.museo-sans-light;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 60px;
|
||||
line-height: 70px;
|
||||
margin: (@baseline * 2) 0 @baseline;
|
||||
|
||||
&:first-child {
|
||||
margin-top: 0;
|
||||
} //h1 first child
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 40px;
|
||||
line-height: 45px;
|
||||
margin: (@baseline * 2) 0 @baseline;
|
||||
|
||||
&:first-child {
|
||||
margin-top: @baseline * .5;
|
||||
} //h2 first child
|
||||
} //h2
|
||||
|
||||
h3 {
|
||||
margin: (@baseline * 2) 0 @baseline;
|
||||
|
||||
&:first-child {
|
||||
margin-top: @baseline * .5;
|
||||
} //h3 first child
|
||||
}
|
||||
} //page-contents
|
||||
|
||||
/* home */
|
||||
&.home { //style homepage
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.hero {
|
||||
.padded;
|
||||
background: @gray-background url(/images/vagrant_header_background.png) no-repeat center -80px;
|
||||
text-align: center;
|
||||
border-bottom: 1px solid #c6e0f0;
|
||||
|
||||
.hero-content {
|
||||
top: 50%;
|
||||
|
||||
hgroup {
|
||||
margin: (@baseline * 4) 0 20px 0;
|
||||
|
||||
h1 {
|
||||
color: @purple-text;
|
||||
margin-bottom: (@baseline * 4);
|
||||
font-size: 60px;
|
||||
line-height: 60px;
|
||||
}
|
||||
|
||||
h2 {
|
||||
.museo-sans-light;
|
||||
color: @blue-text;
|
||||
font-size: 30px;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
} //hero hgroup
|
||||
|
||||
} //hero-content
|
||||
|
||||
} //homepage hero
|
||||
|
||||
.why-vagrant {
|
||||
.padded;
|
||||
background: @light-blue-background url(/images/steps_background.png) center -120px;
|
||||
|
||||
|
||||
h1 {
|
||||
color: @blue-text;
|
||||
text-transform: uppercase;
|
||||
text-align: center;
|
||||
font-size: 40px;
|
||||
line-height: 40px;
|
||||
} //h1
|
||||
|
||||
hgroup {
|
||||
margin: (@baseline * 3) 0;
|
||||
|
||||
|
||||
h3 {
|
||||
text-align: center;
|
||||
text-transform: uppercase;
|
||||
font-size: 40px;
|
||||
margin-bottom: @baseline;
|
||||
color: @purple-text;
|
||||
.museo-sans-light;
|
||||
} //h3
|
||||
|
||||
h4 {
|
||||
font-size: 20px;
|
||||
line-height: @baseline * 1.5;
|
||||
.museo-sans-light;
|
||||
} //h4
|
||||
} //hgroup
|
||||
} //why-vagrant
|
||||
|
||||
.get-started {
|
||||
.padded;
|
||||
.get-started-bg;
|
||||
|
||||
h1 {
|
||||
color: @white;
|
||||
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: 60px 80px 40px;
|
||||
margin: 40px auto;
|
||||
background: fade(@black, 60%);
|
||||
}
|
||||
|
||||
.button {
|
||||
//background: fade(@white, 20%);
|
||||
}
|
||||
|
||||
} //get-started
|
||||
|
||||
.customers {
|
||||
.padded;
|
||||
background-color: @black;
|
||||
border-bottom: 1px solid #333;
|
||||
|
||||
h1 {
|
||||
color: @dark-gray-text;
|
||||
.museo-sans-light
|
||||
}
|
||||
|
||||
.customer-logos {
|
||||
margin-top: @baseline * 3;
|
||||
|
||||
img {
|
||||
width:100%;
|
||||
height: auto;
|
||||
-khtml-opacity: .5;
|
||||
-moz-opacity: .5;
|
||||
opacity: .5;
|
||||
filter: alpha(opacity=50);
|
||||
}
|
||||
}
|
||||
|
||||
ul.customer-logos {
|
||||
|
||||
li {
|
||||
|
||||
img {
|
||||
|
||||
} //img
|
||||
|
||||
} //li
|
||||
} //ul.cusotmer-logos
|
||||
}
|
||||
|
||||
} //home
|
||||
|
||||
/* inner */
|
||||
&.inner { //style inner pages
|
||||
.sidebar-background { //sidebar background
|
||||
.inner-bg-large;
|
||||
}
|
||||
|
||||
.page-background { //change inner background color!
|
||||
background-color: @gray-background; //page background
|
||||
}
|
||||
|
||||
.page-contents {
|
||||
background-color: @gray-background;
|
||||
.padded;
|
||||
}
|
||||
|
||||
h2 {
|
||||
color: @dark-blue-text;
|
||||
|
||||
}
|
||||
|
||||
p {
|
||||
|
||||
}
|
||||
|
||||
} //inner
|
||||
|
||||
/* docs */
|
||||
&.docs { //style all docs
|
||||
.page-background { //change the sidebar background color!
|
||||
background: @white; //page background
|
||||
}
|
||||
|
||||
.sidebar-background { //sidebar background
|
||||
.docs-bg-large;
|
||||
}
|
||||
|
||||
.page-contents {
|
||||
padding-top: 30px;
|
||||
background-color: @white;
|
||||
padding-bottom: 40px;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2 {
|
||||
color: @docs-blue;
|
||||
}
|
||||
|
||||
h2.steps img {
|
||||
margin-top: -7px;
|
||||
}
|
||||
|
||||
li {
|
||||
letter-spacing: 1px;
|
||||
}
|
||||
|
||||
.alert {
|
||||
margin-top: 20px;
|
||||
|
||||
h3 {
|
||||
font-size: 22px;
|
||||
letter-spacing: 1px;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
p {
|
||||
line-height: 26px;
|
||||
}
|
||||
}
|
||||
|
||||
&.docs-home { //style docs-home
|
||||
|
||||
|
||||
} //documentation-home
|
||||
|
||||
&.docs-inner { //style docs-inner
|
||||
|
||||
h3 {
|
||||
color: @docs-blue;
|
||||
text-transform: uppercase;
|
||||
margin: @baseline 0;
|
||||
.museo-sans-light;
|
||||
}
|
||||
|
||||
h4 {
|
||||
line-height: 30px;
|
||||
}
|
||||
|
||||
h5.subhead {
|
||||
.museo-sans-light;
|
||||
color: @purple-text;
|
||||
line-height: @baseline;
|
||||
margin: -10px 0 @baseline;
|
||||
}
|
||||
|
||||
h6.subhead {
|
||||
.museo-sans-regular-italic;
|
||||
color: @dark-gray-text;
|
||||
line-height: @baseline;
|
||||
margin: -10px 0 @baseline;
|
||||
font-size: 15px;
|
||||
//text-transform: uppercase;
|
||||
}
|
||||
|
||||
} //documentation-inner
|
||||
|
||||
} //documentation
|
||||
|
||||
} //page
|
|
@ -1,150 +0,0 @@
|
|||
.sidebar { //general styles for the sidebar
|
||||
|
||||
h1 {
|
||||
text-align: left;
|
||||
color: @white;
|
||||
line-height: 60px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
&-background { //background image
|
||||
.fixed-bg;
|
||||
}
|
||||
|
||||
.button {
|
||||
font-size: 15px;
|
||||
color: @dark-blue-text;
|
||||
letter-spacing: 3px;
|
||||
}
|
||||
|
||||
.toggle {
|
||||
font-size: 20px;
|
||||
.museo-sans-light;
|
||||
color: @white;
|
||||
margin-left: 20px;
|
||||
padding: 20px 0;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
color: @white;
|
||||
|
||||
&:hover {
|
||||
color: @white;
|
||||
}
|
||||
}
|
||||
|
||||
.open-close {
|
||||
background: url(/images/open_close.png) no-repeat 0 0;
|
||||
height: 20px;
|
||||
width: 20px;
|
||||
position: absolute;
|
||||
right: 0;
|
||||
top: 25px;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
.sidebar-nav { //style all sidebar-navs
|
||||
//position:fixed;
|
||||
}
|
||||
|
||||
ul { //general sidebar list styles
|
||||
|
||||
li { //general sidebar list item styles
|
||||
font-size: 20px;
|
||||
.museo-sans-light;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
} //li a
|
||||
|
||||
&:hover {
|
||||
}
|
||||
} //li
|
||||
|
||||
ul.sub { //subnav list styles
|
||||
border-top: none;
|
||||
list-style-type: none;
|
||||
margin:0 0 5px 0;
|
||||
|
||||
li {
|
||||
padding: 5px 0 5px 20px;
|
||||
font-size: 15px;
|
||||
border: none;
|
||||
border-bottom: none !important;
|
||||
} //ul.sub li
|
||||
} //ul.sub
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
display: block !important;
|
||||
} //@media 768px
|
||||
|
||||
} //ul
|
||||
|
||||
|
||||
.inner & { //styles for the inner-page sidebar
|
||||
.padded;
|
||||
position:fixed;
|
||||
|
||||
li.current a {
|
||||
color: @purple;
|
||||
}
|
||||
|
||||
ul { //style inner list
|
||||
|
||||
|
||||
li { //style inner list item
|
||||
color: @dark-blue-text;
|
||||
padding: 20px 0;
|
||||
border-top: 1px solid fade(@white, 40%);
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&.current { //style the current selected list item
|
||||
|
||||
} //current
|
||||
} //li
|
||||
} //ul
|
||||
} //.inner .sidebar
|
||||
|
||||
.docs & { //styles for the documentation sidebar
|
||||
|
||||
li.current a {
|
||||
color: @blue;
|
||||
}
|
||||
|
||||
ul { //style documentation list
|
||||
|
||||
&.nocap {
|
||||
li {
|
||||
text-transform: none;
|
||||
}
|
||||
}
|
||||
|
||||
li { //style documentation list items
|
||||
text-transform: capitalize;
|
||||
color: @white;
|
||||
padding: 12px 0;
|
||||
border-top: 1px solid fade(@white, 20%);
|
||||
|
||||
a.nocap {
|
||||
text-transform: none;
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
&.current { //style the current selected list item
|
||||
|
||||
} //current
|
||||
} //li
|
||||
} //ul
|
||||
} //.documentation .sidebar
|
||||
} //sidebar
|
|
@ -1,36 +0,0 @@
|
|||
//typogrpahy
|
||||
.museo-sans-light {
|
||||
font-family: "museo-sans", helvetica, arial, sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.museo-sans-regular {
|
||||
font-family: "museo-sans", helvetica, arial, sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.museo-sans-bold {
|
||||
font-family: "museo-sans", helvetica, arial, sans-serif;
|
||||
font-style: normal;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.museo-sans-light-italic {
|
||||
font-family: "museo-sans", helvetica, arial, sans-serif;
|
||||
font-style: italic;
|
||||
font-weight: 100;
|
||||
}
|
||||
|
||||
.museo-sans-regular-italic {
|
||||
font-family: "museo-sans", helvetica, arial, sans-serif;
|
||||
font-style: italic;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.museo-sans-bold-italic {
|
||||
font-family: "museo-sans", helvetica, arial, sans-serif;
|
||||
font-style: italic;
|
||||
font-weight: 700;
|
||||
}
|
|
@ -1,39 +0,0 @@
|
|||
/* variables */
|
||||
|
||||
//grayscale
|
||||
@black: #000;
|
||||
@white: #fff;
|
||||
@gray-background: #f7f6f1;
|
||||
@dark-gray-text: #7f7f7f;
|
||||
@light-gray-background: #f0f0f0;
|
||||
@light-gray: #ccc;
|
||||
@light-gray-text: #eeeeee;
|
||||
@dark-gray-background: #333;
|
||||
@medium-gray-text: #666;
|
||||
|
||||
//vagrant colors
|
||||
@blue-text: #2490cc;
|
||||
@dark-blue-text: #476576;
|
||||
@light-blue-background: #dbf1ff;
|
||||
@vagrant-blue: #0094bf;
|
||||
@light-sidebar-background: #a1ccf0;
|
||||
@docs-blue: #22407f;
|
||||
@blue-background: #1e71a1;
|
||||
@purple-text: #270836;
|
||||
@purple: #735f9f;
|
||||
|
||||
//misc colors
|
||||
@blue: #48b4fb;
|
||||
@green: #43d193;
|
||||
@code-highlight-text: #73c5dd;
|
||||
@current-color: inherit;
|
||||
@button-color: @vagrant-blue;
|
||||
@primary-button-color: #48b4fb;
|
||||
|
||||
//type
|
||||
@sans-serif-stack: 'Museo Sans', 'helvetica neue', helvetica, arial, sans-serif;
|
||||
@mono-stack: 'Inconsolata', monaco, courier, monospace;
|
||||
@base-font-size: 18px;
|
||||
@base-line-height: 30px;
|
||||
@baseline: 20px;
|
||||
@headline-span-size: 30px;
|
|
@ -1,351 +0,0 @@
|
|||
//
|
||||
// Hashicorp nav
|
||||
// --------------------------------------------------
|
||||
|
||||
.nav{
|
||||
float: left;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
|
||||
li{
|
||||
display: block;
|
||||
float: left;
|
||||
|
||||
a{
|
||||
position: relative;
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navigation {
|
||||
color: black;
|
||||
text-rendering: optimizeLegibility;
|
||||
transition: all 1s ease;
|
||||
|
||||
&.white{
|
||||
.navbar-brand {
|
||||
.logo {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
|
||||
.main-links,
|
||||
.external-links {
|
||||
li > a {
|
||||
&:hover{
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-toggle{
|
||||
height: @header-height;
|
||||
margin: 0;
|
||||
position: relative;
|
||||
float: right;
|
||||
padding: 9px 10px;
|
||||
background-color: transparent;
|
||||
background-image: none;
|
||||
border: none;
|
||||
|
||||
.bar{
|
||||
display: block;
|
||||
width: 22px;
|
||||
height: 2px;
|
||||
margin-top: 4px;
|
||||
background-color: @project-link-color;
|
||||
}
|
||||
}
|
||||
|
||||
.external-links {
|
||||
&.white{
|
||||
svg path{
|
||||
fill: @white;
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
position: relative;
|
||||
|
||||
svg path{
|
||||
.transition( all 300ms ease-in );
|
||||
}
|
||||
|
||||
&:hover{
|
||||
svg path{
|
||||
.transition( all 300ms ease-in );
|
||||
}
|
||||
}
|
||||
|
||||
&.download{
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
> a {
|
||||
padding-left: 12px !important;
|
||||
svg{
|
||||
position: absolute;
|
||||
left: -12px;
|
||||
top: 50%;
|
||||
margin-top: -7px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.main-links{
|
||||
margin-right: @nav-margin-right * 2;
|
||||
}
|
||||
|
||||
.main-links,
|
||||
.external-links {
|
||||
&.white{
|
||||
li > a {
|
||||
color: white;
|
||||
}
|
||||
}
|
||||
li > a {
|
||||
.hashi-a-style();
|
||||
margin: 0 10px;
|
||||
padding-top: 1px;
|
||||
line-height: @header-height;
|
||||
.project-a-style();
|
||||
}
|
||||
}
|
||||
|
||||
.nav > li > a:hover, .nav > li > a:focus {
|
||||
background-color: transparent;
|
||||
.transition( all 300ms ease-in );
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
display: block;
|
||||
height: @header-height;
|
||||
padding: 0;
|
||||
margin: 0 10px 0 0;
|
||||
|
||||
.logo{
|
||||
display: inline-block;
|
||||
height: @header-height;
|
||||
vertical-align:top;
|
||||
padding: 0;
|
||||
line-height: @header-height;
|
||||
background-position: 0 center;
|
||||
.transition(all 300ms ease-in);
|
||||
|
||||
&:hover{
|
||||
.transition(all 300ms ease-in);
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.navbar-toggle{
|
||||
&.white{
|
||||
.icon-bar{
|
||||
border: 1px solid white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.by-hashicorp{
|
||||
display: inline-block;
|
||||
vertical-align:top;
|
||||
height: @header-height;
|
||||
margin-left: -3px;
|
||||
padding-top: 2px;
|
||||
color: black;
|
||||
line-height: @header-height;
|
||||
font-family: @header-font-family;
|
||||
font-weight: 600;
|
||||
font-size: 0;
|
||||
letter-spacing: 0;
|
||||
text-decoration: none;
|
||||
text-transform: none;
|
||||
|
||||
&.white{
|
||||
color: white;
|
||||
font-weight: 300;
|
||||
svg{
|
||||
path,
|
||||
polygon,
|
||||
rect{
|
||||
fill: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:focus,
|
||||
&:hover{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:hover{
|
||||
.transition(all 300ms ease-in);
|
||||
}
|
||||
|
||||
.svg-wrap{
|
||||
font-size: 13px;
|
||||
.transition(all 300ms ease-in);
|
||||
}
|
||||
|
||||
svg{
|
||||
&.svg-by{
|
||||
width: @by-hashicorp-width;
|
||||
height: @by-hashicorp-height;
|
||||
margin-bottom: -4px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
&.svg-logo{
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-bottom: -3px;
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
path,
|
||||
polygon,
|
||||
rect{
|
||||
fill: black;
|
||||
.transition(all 300ms ease-in);
|
||||
|
||||
&:hover{
|
||||
.transition(all 300ms ease-in);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.hashicorp-project{
|
||||
display: inline-block;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
text-decoration: none;
|
||||
font-size: 14px;
|
||||
color: @black;
|
||||
font-weight: 600;
|
||||
|
||||
&.white{
|
||||
color: white;
|
||||
svg{
|
||||
path,
|
||||
polygon{
|
||||
fill: white;
|
||||
}
|
||||
line{
|
||||
stroke: white;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&:focus{
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
&:hover{
|
||||
text-decoration: none;
|
||||
svg{
|
||||
&.svg-by{
|
||||
line{
|
||||
stroke: @purple;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
span{
|
||||
margin-right: 4px;
|
||||
font-family: @header-font-family;
|
||||
font-weight: 500;
|
||||
}
|
||||
|
||||
span,
|
||||
svg{
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
svg{
|
||||
&.svg-by{
|
||||
width: @by-hashicorp-width;
|
||||
height: @by-hashicorp-height;
|
||||
margin-bottom: -4px;
|
||||
margin-left: -3px;
|
||||
}
|
||||
|
||||
&.svg-logo{
|
||||
width: 30px;
|
||||
height: 30px;
|
||||
margin-bottom: -10px;
|
||||
margin-left: -1px;
|
||||
}
|
||||
|
||||
path,
|
||||
line{
|
||||
fill: @black;
|
||||
.transition(all 300ms ease-in);
|
||||
|
||||
&:hover{
|
||||
.transition(all 300ms ease-in);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
.navigation {
|
||||
> .container{
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.navigation {
|
||||
.main-links{
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
#header {
|
||||
.navbar-toggle{
|
||||
padding-top: 10px;
|
||||
height: @header-mobile-height;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
height: @header-mobile-height;
|
||||
|
||||
.logo{
|
||||
height: @header-mobile-height;
|
||||
line-height: @header-mobile-height;
|
||||
}
|
||||
.by-hashicorp{
|
||||
height: @header-mobile-height;
|
||||
line-height: @header-mobile-height;
|
||||
padding-top: 0;
|
||||
}
|
||||
}
|
||||
.main-links,
|
||||
.external-links {
|
||||
li > a {
|
||||
line-height: @header-mobile-height;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@media (min-width: 768px){
|
||||
.navbar-toggle {
|
||||
display: none;
|
||||
}
|
||||
}
|
|
@ -1,293 +0,0 @@
|
|||
//
|
||||
// Hashicorp mobile-nav
|
||||
// - Shared throughout projects
|
||||
// - Edits should not be made here
|
||||
// --------------------------------------------------
|
||||
|
||||
// Base variables
|
||||
// --------------------------------------------------
|
||||
@screen-tablet: 768px;
|
||||
|
||||
@gray-darker: #212121; // #212121 - text
|
||||
@gray-secondary: #757575; // #757575 - secondary text, icons
|
||||
@gray: #bdbdbd; // #bdbdbd - hint text
|
||||
@gray-light: #e0e0e0; // #e0e0e0 - divider
|
||||
@gray-lighter: #f5f5f5; // #f5f5f5 - background
|
||||
@link-color: @gray-darker;
|
||||
@link-bg: transparent;
|
||||
@link-hover-color: @gray-lighter;
|
||||
@link-hover-bg: @gray-lighter;
|
||||
@link-active-color: @gray-darker;
|
||||
@link-active-bg: @gray-light;
|
||||
@link-disabled-color: @gray-light;
|
||||
@link-disabled-bg: transparent;
|
||||
|
||||
/* -- mobile-nav style ------------------------------- */
|
||||
|
||||
// mobile-nav variables
|
||||
// --------------------------------------------------
|
||||
@zindex-mobile-nav-fixed: 1035;
|
||||
|
||||
@mobile-nav-desktop-width: 280px;
|
||||
@mobile-nav-width: 240px;
|
||||
|
||||
@mobile-nav-padding: 16px;
|
||||
@mobile-nav-divider: @mobile-nav-padding/2;
|
||||
|
||||
@mobile-nav-icon-width: 40px;
|
||||
@mobile-nav-icon-height: 20px;
|
||||
|
||||
.mobile-nav-nav-base {
|
||||
text-align: center;
|
||||
|
||||
&:last-child{
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
li > a {
|
||||
background-color: @link-bg;
|
||||
}
|
||||
li:hover > a {
|
||||
background-color: @link-hover-bg;
|
||||
}
|
||||
li:focus > a, li > a:focus {
|
||||
background-color: @link-bg;
|
||||
}
|
||||
|
||||
> .open > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @link-hover-bg;
|
||||
}
|
||||
}
|
||||
|
||||
> .active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @link-active-bg;
|
||||
}
|
||||
}
|
||||
> .disabled > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
background-color: @link-disabled-bg;
|
||||
}
|
||||
}
|
||||
|
||||
// Dropdown menu items
|
||||
> .dropdown {
|
||||
// Remove background color from open dropdown
|
||||
> .dropdown-menu {
|
||||
background-color: @link-hover-bg;
|
||||
|
||||
> li > a {
|
||||
&:focus {
|
||||
background-color: @link-hover-bg;
|
||||
}
|
||||
&:hover {
|
||||
background-color: @link-hover-bg;
|
||||
}
|
||||
}
|
||||
|
||||
> .active > a {
|
||||
&,
|
||||
&:hover,
|
||||
&:focus {
|
||||
color: @link-active-color;
|
||||
background-color: @link-active-bg;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// mobile-nav
|
||||
// --------------------------------------------------
|
||||
|
||||
// mobile-nav Elements
|
||||
//
|
||||
// Basic style of mobile-nav elements
|
||||
.mobile-nav {
|
||||
position: relative;
|
||||
display: block;
|
||||
min-height: 100%;
|
||||
overflow-y: auto;
|
||||
overflow-x: hidden;
|
||||
border: none;
|
||||
.transition(all 0.5s cubic-bezier(0.55, 0, 0.1, 1));
|
||||
.clearfix();
|
||||
background-color: @white;
|
||||
|
||||
ul{
|
||||
padding-left: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.mobile-nav-divider, .divider {
|
||||
width: 80%;
|
||||
height: 1px;
|
||||
margin: 8px auto;
|
||||
background-color: lighten(@gray, 20%);
|
||||
}
|
||||
|
||||
// mobile-nav heading
|
||||
//----------------
|
||||
.mobile-nav-header {
|
||||
position: relative;
|
||||
margin-bottom: @mobile-nav-padding;
|
||||
.transition(all .2s ease-in-out);
|
||||
}
|
||||
|
||||
.mobile-nav-image {
|
||||
padding-top: 24px;
|
||||
img {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// mobile-nav icons
|
||||
//----------------
|
||||
.mobile-nav-icon {
|
||||
display: inline-block;
|
||||
height: @mobile-nav-icon-height;
|
||||
margin-right: @mobile-nav-divider;
|
||||
text-align: left;
|
||||
font-size: @mobile-nav-icon-height;
|
||||
vertical-align: middle;
|
||||
|
||||
&:before, &:after {
|
||||
vertical-align: middle;
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-nav-nav {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
|
||||
.mobile-nav-nav-base();
|
||||
|
||||
// Links
|
||||
//----------------
|
||||
li {
|
||||
position: relative;
|
||||
list-style-type: none;
|
||||
text-align: center;
|
||||
|
||||
a {
|
||||
position: relative;
|
||||
cursor: pointer;
|
||||
user-select: none;
|
||||
.hashi-a-style-core();
|
||||
|
||||
svg{
|
||||
top: 2px;
|
||||
width: 14px;
|
||||
height: 14px;
|
||||
margin-bottom: -2px;
|
||||
margin-right: 4px;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// mobile-nav toggling
|
||||
//
|
||||
// Hide mobile-nav
|
||||
.mobile-nav {
|
||||
width: 0;
|
||||
.translate3d(-@mobile-nav-desktop-width, 0, 0);
|
||||
|
||||
&.open {
|
||||
min-width: @mobile-nav-desktop-width;
|
||||
width: @mobile-nav-desktop-width;
|
||||
.translate3d(0, 0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
// mobile-nav positions: fix the left/right mobile-navs
|
||||
.mobile-nav-fixed-left,
|
||||
.mobile-nav-fixed-right,
|
||||
.mobile-nav-stacked {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
z-index: @zindex-mobile-nav-fixed;
|
||||
}
|
||||
.mobile-nav-stacked {
|
||||
left: 0;
|
||||
}
|
||||
.mobile-nav-fixed-left {
|
||||
left: 0;
|
||||
box-shadow: 2px 0px 25px rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: 2px 0px 25px rgba(0,0,0,0.15);
|
||||
}
|
||||
.mobile-nav-fixed-right {
|
||||
right: 0;
|
||||
box-shadow: 0px 2px 25px rgba(0,0,0,0.15);
|
||||
-webkit-box-shadow: 0px 2px 25px rgba(0,0,0,0.15);
|
||||
|
||||
.translate3d(@mobile-nav-desktop-width, 0, 0);
|
||||
&.open {
|
||||
.translate3d(0, 0, 0);
|
||||
}
|
||||
.icon-material-mobile-nav-arrow:before {
|
||||
content: "\e614"; // icon-material-arrow-forward
|
||||
}
|
||||
}
|
||||
|
||||
// mobile-nav size
|
||||
//
|
||||
// Change size of mobile-nav and mobile-nav elements on small screens
|
||||
@media (max-width: @screen-tablet) {
|
||||
.mobile-nav.open {
|
||||
min-width: @mobile-nav-width;
|
||||
width: @mobile-nav-width;
|
||||
}
|
||||
|
||||
.mobile-nav .mobile-nav-header {
|
||||
//height: @mobile-nav-width * 9/16; // 16:9 header dimension
|
||||
}
|
||||
|
||||
.mobile-nav .mobile-nav-image {
|
||||
/* img {
|
||||
width: @mobile-nav-width/4 - @mobile-nav-padding;
|
||||
height: @mobile-nav-width/4 - @mobile-nav-padding;
|
||||
} */
|
||||
}
|
||||
}
|
||||
|
||||
.mobile-nav-overlay {
|
||||
visibility: hidden;
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
opacity: 0;
|
||||
background: @white;
|
||||
z-index: @zindex-mobile-nav-fixed - 1;
|
||||
|
||||
-webkit-transition: visibility 0 linear .4s,opacity .4s cubic-bezier(.4,0,.2,1);
|
||||
-moz-transition: visibility 0 linear .4s,opacity .4s cubic-bezier(.4,0,.2,1);
|
||||
transition: visibility 0 linear .4s,opacity .4s cubic-bezier(.4,0,.2,1);
|
||||
-webkit-transform: translateZ(0);
|
||||
-moz-transform: translateZ(0);
|
||||
-ms-transform: translateZ(0);
|
||||
-o-transform: translateZ(0);
|
||||
transform: translateZ(0);
|
||||
}
|
||||
|
||||
.mobile-nav-overlay.active {
|
||||
opacity: 0.3;
|
||||
visibility: visible;
|
||||
-webkit-transition-delay: 0;
|
||||
-moz-transition-delay: 0;
|
||||
transition-delay: 0;
|
||||
}
|
|
@ -1,89 +0,0 @@
|
|||
//
|
||||
// Hashicorp Nav (header/footer) Utiliy Vars and Mixins
|
||||
//
|
||||
// Notes:
|
||||
// - Include this in Application.scss before header and feature-footer
|
||||
// - Open Sans Google (Semibold - 600) font needs to be included if not already
|
||||
// --------------------------------------------------
|
||||
|
||||
// Variables
|
||||
@font-family-open-sans: 'Open Sans', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
||||
@header-font-family: @font-family-open-sans;
|
||||
@header-font-weight: 600; // semi-bold
|
||||
|
||||
@header-height: 80px;
|
||||
@header-mobile-height: 60px;
|
||||
@by-hashicorp-width: 74px;
|
||||
@by-hashicorp-height: 16px;
|
||||
@nav-margin-right: 12px;
|
||||
|
||||
// Mixins
|
||||
.hashi-a-style-core{
|
||||
font-family: @header-font-family;
|
||||
font-weight: @header-font-weight;
|
||||
font-size: 14px;
|
||||
//letter-spacing: 0.0625em;
|
||||
}
|
||||
|
||||
.hashi-a-style{
|
||||
margin: 0 15px;
|
||||
padding: 0;
|
||||
line-height: 22px;
|
||||
.hashi-a-style-core();
|
||||
.transition( all 0.3s ease );
|
||||
|
||||
&:hover{
|
||||
.transition( all 0.3s ease );
|
||||
background-color: transparent;
|
||||
}
|
||||
}
|
||||
|
||||
.img-retina(@image, @width, @height, @repeat: no-repeat) {
|
||||
@filename : ~`/(.*)\.(jpg|jpeg|png|gif)/.exec(@{image})[1]`;
|
||||
@extension : ~`/(.*)\.(jpg|jpeg|png|gif)/.exec(@{image})[2]`;
|
||||
background-image: ~`"url(@{filename}.@{extension})"`;
|
||||
background-repeat: @repeat;
|
||||
|
||||
@media
|
||||
only screen and (-webkit-min-device-pixel-ratio: 2),
|
||||
only screen and ( min--moz-device-pixel-ratio: 2),
|
||||
only screen and ( -o-min-device-pixel-ratio: 2/1),
|
||||
only screen and ( min-device-pixel-ratio: 2),
|
||||
only screen and ( min-resolution: 192dpi),
|
||||
only screen and ( min-resolution: 2dppx) {
|
||||
/* on retina, use image that's scaled by 2 */
|
||||
background-image: ~`"url(@{filename}@2x.@{extension})"`;
|
||||
background-size: @width @height;
|
||||
}
|
||||
}
|
||||
|
||||
//
|
||||
// -------------------------
|
||||
.anti-alias() {
|
||||
text-rendering: optimizeLegibility;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
}
|
||||
|
||||
.open-light() {
|
||||
font-family: @font-family-open-sans;
|
||||
font-weight: 300;
|
||||
}
|
||||
|
||||
.open() {
|
||||
font-family: @font-family-open-sans;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.open-sb() {
|
||||
font-family: @font-family-open-sans;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.open-bold() {
|
||||
font-family: @font-family-open-sans;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.bez-1-transition{
|
||||
.transition( all 300ms ease-in-out );
|
||||
}
|
|
@ -1,32 +0,0 @@
|
|||
//
|
||||
// Mixins Specific to project
|
||||
// - make edits to mixins here
|
||||
// --------------------------------------------------
|
||||
|
||||
// Variables
|
||||
@project-logo-width: 231px;
|
||||
@project-logo-height: 46px;
|
||||
@project-logo-pad-left: 0px;
|
||||
@project-link-color: #8d9ba8;
|
||||
|
||||
// Mixins
|
||||
.project-a-style{
|
||||
font-weight: 600;
|
||||
font-size: 14px;
|
||||
letter-spacing: 0;
|
||||
text-transform: none;
|
||||
color: @project-link-color;
|
||||
.anti-alias();
|
||||
|
||||
&:hover{
|
||||
color: @black;
|
||||
}
|
||||
}
|
||||
|
||||
.project-footer-a-style{
|
||||
line-height: 30px;
|
||||
|
||||
&:hover{
|
||||
opacity: .5;
|
||||
}
|
||||
}
|
|
@ -1,24 +0,0 @@
|
|||
/*
|
||||
/|\/|\/|\/|\/|\/|\
|
||||
v a g r a n t u p
|
||||
\|/\|/\|/\|/\|/\|/
|
||||
*/
|
||||
|
||||
@import '_variables';
|
||||
@import '_type';
|
||||
@import '_mixins';
|
||||
@import '_base';
|
||||
|
||||
@import 'hashicorp-shared/_hashicorp-utility';
|
||||
@import 'hashicorp-shared/_project-utility';
|
||||
@import 'hashicorp-shared/_hashicorp-header';
|
||||
@import 'hashicorp-shared/_hashicorp-mobile-nav';
|
||||
|
||||
// @import '_nav';
|
||||
@import '_header';
|
||||
@import '_components';
|
||||
@import '_sidebar';
|
||||
@import '_mobile-nav';
|
||||
@import '_pages';
|
||||
@import '_footer';
|
||||
@import '_media-queries';
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
page_title: "vagrant resume - Command-Line Interface"
|
||||
sidebar_current: "cli-resume"
|
||||
---
|
||||
|
||||
# Resume
|
||||
|
||||
**Command: `vagrant resume`**
|
||||
|
||||
This resumes a Vagrant managed machine that was previously suspended,
|
||||
perhaps with the [suspend command](/v2/cli/suspend.html).
|
|
@ -1,15 +0,0 @@
|
|||
---
|
||||
page_title: "vagrant rsync - Command-Line Interface"
|
||||
sidebar_current: "cli-rsync"
|
||||
---
|
||||
|
||||
# Rsync
|
||||
|
||||
**Command: `vagrant rsync`**
|
||||
|
||||
This command forces a resync of any
|
||||
[rsync synced folders](/v2/synced-folders/rsync.html).
|
||||
|
||||
Note that if you change any settings within the rsync synced folders such
|
||||
as exclude paths, you'll need to `vagrant reload` before this command will
|
||||
pick up those changes.
|
|
@ -1,23 +0,0 @@
|
|||
---
|
||||
page_title: "Docker Provider"
|
||||
sidebar_current: "docker"
|
||||
---
|
||||
|
||||
# Docker
|
||||
|
||||
Vagrant comes with support out of the box for
|
||||
using Docker as a provider. This allows for your development environments
|
||||
to be backed by Docker containers rather than virtual machines. Additionally,
|
||||
it provides for a good workflow for developing Dockerfiles.
|
||||
|
||||
<div class="alert alert-warn">
|
||||
<p>
|
||||
<strong>Warning: Docker knowledge assumed.</strong> We assume that
|
||||
you know what Docker is and that you're comfortable with the basics
|
||||
of Docker. If not, we recommend starting with another provider such
|
||||
as <a href="/v2/virtualbox/index.html">VirtualBox</a>.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
Use the navigation to the left to find a specific Docker topic
|
||||
to read more about.
|
|
@ -1,77 +0,0 @@
|
|||
---
|
||||
page_title: "Boxes - Getting Started"
|
||||
sidebar_current: "gettingstarted-boxes"
|
||||
---
|
||||
|
||||
# Boxes
|
||||
|
||||
Instead of building a virtual machine from scratch, which would be a
|
||||
slow and tedious process, Vagrant uses a base image to quickly clone
|
||||
a virtual machine. These base images are known as _boxes_ in Vagrant,
|
||||
and specifying the box to use for your Vagrant environment is always
|
||||
the first step after creating a new Vagrantfile.
|
||||
|
||||
## Installing a Box
|
||||
|
||||
If you ran the commands on the [getting started overview page](/v2/getting-started/index.html),
|
||||
then you've already installed a box before, and you don't need to run
|
||||
the commands below again. However, it is still worth reading this section
|
||||
to learn more about how boxes are managed.
|
||||
|
||||
Boxes are added to Vagrant with `vagrant box add`. This stores the box
|
||||
under a specific name so that multiple Vagrant environments can re-use it.
|
||||
If you haven't added a box yet, you can do so now:
|
||||
|
||||
```
|
||||
$ vagrant box add hashicorp/precise32
|
||||
```
|
||||
|
||||
This will download the box named "hashicorp/precise32" from
|
||||
[HashiCorp's Atlas box catalog](https://atlas.hashicorp.com/boxes/search), a place where you can find
|
||||
and host boxes. While it is easiest to download boxes from HashiCorp's Atlas
|
||||
you can also add boxes from a local file, custom URL, etc.
|
||||
|
||||
Added boxes can be re-used by multiple projects. Each project uses a box
|
||||
as an initial image to clone from, and never modifies the actual base
|
||||
image. This means that if you have two projects both using the `hashicorp/precise32`
|
||||
box we just added, adding files in one guest machine will have no effect
|
||||
on the other machine.
|
||||
|
||||
## Using a Box
|
||||
|
||||
Now that the box has been added to Vagrant, we need to configure our
|
||||
project to use it as a base. Open the `Vagrantfile` and change the
|
||||
contents to the following:
|
||||
|
||||
```ruby
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.box = "hashicorp/precise32"
|
||||
end
|
||||
```
|
||||
|
||||
The "hashicorp/precise32" in this case must match the name you used to add
|
||||
the box above. This is how Vagrant knows what box to use. If the box wasn't
|
||||
added before, Vagrant will automatically download and add the box when it is
|
||||
run.
|
||||
|
||||
In the next section, we'll bring up the Vagrant environment and interact
|
||||
with it a little bit.
|
||||
|
||||
## Finding More Boxes
|
||||
|
||||
For the remainder of this getting started guide, we'll only use the
|
||||
"hashicorp/precise32" box we added previously. But soon after finishing
|
||||
this getting started guide, the first question you'll probably have is
|
||||
"where do I find more boxes?"
|
||||
|
||||
The best place to find more boxes is [HashiCorp's Atlas box catalog](https://atlas.hashicorp.com/boxes/search).
|
||||
HashiCorp's Atlas has a public directory of freely available boxes that
|
||||
run various platforms and technologies. HashiCorp's Atlas also has a great search
|
||||
feature to allow you to find the box you care about.
|
||||
|
||||
In addition to finding free boxes, HashiCorp's Atlas lets you host your own
|
||||
boxes, as well as private boxes if you intend on creating boxes for your
|
||||
own organization.
|
||||
|
||||
<a href="/v2/getting-started/project_setup.html" class="button inline-button prev-button">Project Setup</a>
|
||||
<a href="/v2/getting-started/up.html" class="button inline-button next-button">Up And SSH</a>
|
|
@ -1,58 +0,0 @@
|
|||
---
|
||||
page_title: "Getting Started"
|
||||
sidebar_current: "gettingstarted"
|
||||
---
|
||||
|
||||
# Getting Started
|
||||
|
||||
The Vagrant getting started guide will walk you through your first
|
||||
Vagrant project, and show off the basics of the major features Vagrant
|
||||
has to offer.
|
||||
|
||||
If you're curious what benefits Vagrant has to offer, you
|
||||
should also read the ["Why Vagrant?"](/v2/why-vagrant/index.html) page.
|
||||
|
||||
The getting started guide will use Vagrant with [VirtualBox](http://www.virtualbox.org),
|
||||
since it is free, available on every major platform, and built-in to
|
||||
Vagrant. After reading the guide though, don't forget that Vagrant
|
||||
can work with [many other providers](/v2/getting-started/providers.html).
|
||||
|
||||
Before diving into your first project, please [install the latest version of Vagrant](/v2/installation/index.html).
|
||||
And because we'll be using [VirtualBox](http://www.virtualbox.org) as our
|
||||
provider for the getting started guide, please install that as well.
|
||||
|
||||
<div class="alert alert-block alert-info">
|
||||
<p>
|
||||
<strong>More of a book person?</strong> If you prefer to read a physical
|
||||
book, you may be interested in
|
||||
<a href="http://www.amazon.com/gp/product/1449335837/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&camp=1789&creative=9325&creativeASIN=1449335837&linkCode=as2&tag=vagrant-20">
|
||||
Vagrant: Up and Running
|
||||
</a>, written by the author of Vagrant and published by O'Reilly.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Up and Running
|
||||
|
||||
```
|
||||
$ vagrant init hashicorp/precise32
|
||||
$ vagrant up
|
||||
```
|
||||
|
||||
After running the above two commands, you'll have a fully running
|
||||
virtual machine in [VirtualBox](https://www.virtualbox.org) running
|
||||
Ubuntu 12.04 LTS 32-bit. You can SSH into this machine with
|
||||
`vagrant ssh`, and when you're done playing around, you can remove
|
||||
all traces of it with `vagrant destroy`.
|
||||
|
||||
Now imagine every project you've ever worked on being this easy to
|
||||
set up.
|
||||
|
||||
With Vagrant, `vagrant up` is all you need to work on any project,
|
||||
to install every dependency that project needs, and to set up any
|
||||
networking and synced folders so you can continue working from the
|
||||
comfort of your own machine.
|
||||
|
||||
The rest of this guide will walk you through setting up a more
|
||||
complete project, covering more features of Vagrant.
|
||||
|
||||
<a href="/v2/getting-started/project_setup.html" class="button inline-button next-button">Project Setup</a>
|
|
@ -1,39 +0,0 @@
|
|||
---
|
||||
page_title: "Providers - Getting Started"
|
||||
sidebar_current: "gettingstarted-providers"
|
||||
---
|
||||
|
||||
# Providers
|
||||
|
||||
In this getting started guide, your project was always backed with
|
||||
[VirtualBox](http://www.virtualbox.org). But Vagrant can work with
|
||||
a wide variety of backend providers, such as [VMware](/v2/vmware/index.html),
|
||||
[AWS](http://github.com/mitchellh/vagrant-aws), and more. Read the page
|
||||
of each provider for more information on how to set them up.
|
||||
|
||||
Once you have a provider installed, you don't need to make any modifications
|
||||
to your Vagrantfile, just `vagrant up` with the proper provider and
|
||||
Vagrant will do the rest:
|
||||
|
||||
```
|
||||
$ vagrant up --provider=vmware_fusion
|
||||
...
|
||||
```
|
||||
|
||||
Ready to move that to the cloud? Take it to AWS:
|
||||
|
||||
```
|
||||
$ vagrant up --provider=aws
|
||||
...
|
||||
```
|
||||
|
||||
Once you run `vagrant up` with another provider, every other Vagrant
|
||||
command doesn't need to be told what provider to use. Vagrant can automatically
|
||||
figure it out. So when you're ready to SSH or destroy or anything else,
|
||||
just run the commands like normal, such as `vagrant destroy`. No extra
|
||||
flags necessary.
|
||||
|
||||
For more information on providers, read the full documentation on
|
||||
[providers](/v2/providers/index.html).
|
||||
|
||||
<a href="/v2/getting-started/rebuild.html" class="button inline-button prev-button">Rebuild</a>
|
|
@ -1,20 +0,0 @@
|
|||
---
|
||||
page_title: "Rebuild - Getting Started"
|
||||
sidebar_current: "gettingstarted-rebuild"
|
||||
---
|
||||
|
||||
# Rebuild
|
||||
|
||||
When you're ready to come back to your project, whether it is tomorrow,
|
||||
a week from now, or a year from now, getting it up and running is easy:
|
||||
|
||||
```
|
||||
$ vagrant up
|
||||
```
|
||||
|
||||
That's it! Since the Vagrant environment is already all configured via
|
||||
the Vagrantfile, you or any of your coworkers simply have to run a
|
||||
`vagrant up` at any time and Vagrant will recreate your work environment.
|
||||
|
||||
<a href="/v2/getting-started/teardown.html" class="button inline-button prev-button">Teardown</a>
|
||||
<a href="/v2/getting-started/providers.html" class="button inline-button next-button">Providers</a>
|
|
@ -1,59 +0,0 @@
|
|||
---
|
||||
page_title: "Share - Getting Started"
|
||||
sidebar_current: "gettingstarted-share"
|
||||
---
|
||||
|
||||
# Share
|
||||
|
||||
Now that we have a web server up and running and accessible from your machine,
|
||||
we have a fairly functional development environment. But in addition to
|
||||
providing a development environment, Vagrant also makes it easy to share
|
||||
and collaborate on these environments. The primary feature to do this in
|
||||
Vagrant is called [Vagrant Share](/v2/share/index.html).
|
||||
|
||||
Vagrant Share lets you share your Vagrant environment to anyone around the
|
||||
world. It will give you a URL that will route directly to your Vagrant
|
||||
environment from any device in the world that is connected to the internet.
|
||||
|
||||
## Login to HashiCorp's Atlas
|
||||
|
||||
Before being able to share your Vagrant environment, you'll need an account on
|
||||
[HashiCorp's Atlas](https://atlas.hashicorp.com). Don't worry, it's free.
|
||||
|
||||
Once you have an account, log in using `vagrant login`:
|
||||
|
||||
```
|
||||
$ vagrant login
|
||||
Username or Email: mitchellh
|
||||
Password (will be hidden):
|
||||
You're now logged in!
|
||||
```
|
||||
|
||||
## Share
|
||||
|
||||
Once you're logged in, run `vagrant share`:
|
||||
|
||||
```
|
||||
$ vagrant share
|
||||
...
|
||||
==> default: Your Vagrant Share is running!
|
||||
==> default: URL: http://frosty-weasel-0857.vagrantshare.com
|
||||
...
|
||||
```
|
||||
|
||||
Your URL will be different, so don't try the URL above. Instead, copy
|
||||
the URL that `vagrant share` outputted for you and visit that in a web
|
||||
browser. It should load the Apache page we setup earlier.
|
||||
|
||||
If you modify the files in your shared folder and refresh the URL, you'll
|
||||
see it update! The URL is routing directly into your Vagrant environment,
|
||||
and works from any device in the world that is connected to the internet.
|
||||
|
||||
To end the sharing session, hit `Ctrl+C` in your terminal. You can refresh
|
||||
the URL again to verify that your environment is no longer being shared.
|
||||
|
||||
Vagrant Share is much more powerful than simply HTTP sharing. For more
|
||||
details, see the [complete Vagrant Share documentation](/v2/share/index.html).
|
||||
|
||||
<a href="/v2/getting-started/networking.html" class="button inline-button prev-button">Networking</a>
|
||||
<a href="/v2/getting-started/teardown.html" class="button inline-button next-button">Teardown</a>
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
page_title: "Hyper-V Provider"
|
||||
sidebar_current: "hyperv"
|
||||
---
|
||||
|
||||
# Hyper-V
|
||||
|
||||
Vagrant comes with support out of the box for [Hyper-V](http://en.wikipedia.org/wiki/Hyper-V),
|
||||
a native hypervisor written by Microsoft. Hyper-V is available by default for
|
||||
almost all Windows 8.1 installs.
|
||||
|
||||
The Hyper-V provider is compatible with Windows 8.1 only. Prior versions
|
||||
of Hyper-V do not include the necessary APIs for Vagrant to work.
|
||||
|
||||
Hyper-V must be enabled prior to using the provider. Most Windows installations
|
||||
will not have Hyper-V enabled by default. To enable Hyper-V, go to
|
||||
"Programs and Features", click on "Turn Windows features on or off" and check
|
||||
the box next to "Hyper-V."
|
||||
|
||||
<div class="alert alert-block alert-warn">
|
||||
<strong>Warning:</strong> Enabling Hyper-V will cause VirtualBox, VMware,
|
||||
and any other virtualization technology to no longer work. See
|
||||
<a href="http://www.hanselman.com/blog/SwitchEasilyBetweenVirtualBoxAndHyperVWithABCDEditBootEntryInWindows81.aspx">this blog post</a>
|
||||
for an easy way to create a boot entry to boot Windows without Hyper-V
|
||||
enabled, if there will be times you'll need other hypervisors.
|
||||
</div>
|
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
sidebar_current: "overview"
|
||||
---
|
||||
|
||||
# Vagrant Documentation
|
||||
|
||||
Welcome to the Vagrant docs! This site documents Vagrant from top-to-bottom,
|
||||
covering every feature of Vagrant in great detail. If you're just getting
|
||||
started with Vagrant, it is highly recommended you start with the
|
||||
[getting started guide](/v2/getting-started/index.html).
|
|
@ -1,28 +0,0 @@
|
|||
---
|
||||
page_title: "Installing Vagrant"
|
||||
sidebar_current: "installation"
|
||||
---
|
||||
|
||||
# Installing Vagrant
|
||||
|
||||
Installing Vagrant is extremely easy. Head over to the
|
||||
[downloads page](http://www.vagrantup.com/downloads) and get the appropriate
|
||||
installer or package for your platform. Then install it using standard
|
||||
procedures for your operating system.
|
||||
|
||||
The installer will automatically add `vagrant` to your system path
|
||||
so that it is available in terminals. If it is not found, please try
|
||||
logging out and logging back in to your system (this is particularly necessary sometimes
|
||||
for Windows).
|
||||
|
||||
If you have an old version of Vagrant 1.0.x installed via [RubyGems](http://en.wikipedia.org/wiki/RubyGems),
|
||||
please remove it prior to installing a newer version of Vagrant.
|
||||
|
||||
<div class="alert alert-info">
|
||||
<h3>Gem Install?</h3>
|
||||
<p>
|
||||
Vagrant 1.0.x had the option to be installed as a
|
||||
<a href="http://en.wikipedia.org/wiki/RubyGems">RubyGem</a>. This
|
||||
installation method has been removed for installers and packages only.
|
||||
</p>
|
||||
</div>
|
|
@ -1,41 +0,0 @@
|
|||
---
|
||||
page_title: "Uninstalling Vagrant"
|
||||
sidebar_current: "installation-uninstallation"
|
||||
---
|
||||
|
||||
# Uninstalling Vagrant
|
||||
|
||||
Uninstalling Vagrant is easy and straightforward. You can either uninstall
|
||||
the Vagrant binary, the user data, or both. The sections below cover how to
|
||||
do this on every platform.
|
||||
|
||||
## Removing the Vagrant Program
|
||||
|
||||
Removing the Vagrant program will remove the `vagrant` binary and all
|
||||
dependencies from your machine. After uninstalling the program, you can
|
||||
always [reinstall](/v2/installation/index.html) again using standard
|
||||
methods.
|
||||
|
||||
On **Windows**, uninstall using the add/remove programs section of
|
||||
the control panel.
|
||||
|
||||
On **Mac OS X**, remove the `/Applications/Vagrant` directory and
|
||||
the `/usr/bin/vagrant` file. Also execute
|
||||
`sudo pkgutil --forget com.vagrant.vagrant` to have OS X
|
||||
forget that Vagrant was ever installed.
|
||||
|
||||
On **Linux**, remove the `/opt/vagrant` directory and the `/usr/bin/vagrant`
|
||||
file.
|
||||
|
||||
## Removing User Data
|
||||
|
||||
Removing the user data will remove all [boxes](/v2/boxes.html),
|
||||
[plugins](/v2/plugins/index.html), and any stored state that may be used
|
||||
by Vagrant. Removing the user data effectively makes Vagrant think it
|
||||
is once again a fresh install.
|
||||
|
||||
On every platform, remove the `~/.vagrant.d` directory to delete the
|
||||
user data.
|
||||
|
||||
Running Vagrant will automatically regenerate any data necessary to run,
|
||||
so it is safe to remove the user data at any time.
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
page_title: "Upgrading from Vagrant 1.0"
|
||||
sidebar_current: "installation-upgrading-1-0"
|
||||
---
|
||||
|
||||
# Upgrading From Vagrant 1.0.x
|
||||
|
||||
The upgrade process from 1.0.x to 1.x is straightforward. Vagrant is quite
|
||||
[backwards compatible](/v2/installation/backwards-compatibility.html)
|
||||
with Vagrant 1.0.x, so you can simply reinstall Vagrant
|
||||
over your previous installation by downloading the latest package and
|
||||
installing it using standard procedures for your operating system.
|
||||
|
||||
As the [backwards compatibility](/v2/installation/backwards-compatibility.html)
|
||||
page says, **Vagrant 1.0.x plugins will not work with Vagrant 1.1+**. Many
|
||||
of these plugins have been updated to work with newer versions of Vagrant,
|
||||
so you can look to see if they've been updated. If not however, you'll have
|
||||
to remove them before upgrading.
|
||||
|
||||
It is recommended you remove _all_ plugins before upgrading, and then slowly
|
||||
add back the plugins. This usually makes for a smoother upgrade process.
|
||||
|
||||
**However**, if your version of Vagrant was installed via RubyGems, then
|
||||
you must `gem uninstall` the old version prior to installing the package for
|
||||
the latest version of Vagrant. The RubyGems-based installation method has
|
||||
been removed.
|
|
@ -1,27 +0,0 @@
|
|||
---
|
||||
page_title: "Upgrading Vagrant"
|
||||
sidebar_current: "installation-upgrading"
|
||||
---
|
||||
|
||||
# Upgrading Vagrant
|
||||
|
||||
If you're upgrading from Vagrant 1.0.x, please read the
|
||||
[specific page dedicated to that](/v2/installation/upgrading-from-1-0.html).
|
||||
This page covers upgrading Vagrant in general during the 1.x series.
|
||||
|
||||
Upgrades of Vagrant during the 1.x release series are straightforward:
|
||||
download the new package, install it over the existing package. The installers
|
||||
will properly remove old files, and Linux package managers should do the
|
||||
same thing.
|
||||
|
||||
Note that Vagrantfile stability for the new Vagrantfile syntax is not
|
||||
promised until 2.0 final. So while Vagrantfiles made for 1.0.x will
|
||||
[continue to work](/v2/installation/backwards-compatibility.html),
|
||||
newer Vagrantfiles may have backwards incompatible changes until 2.0 final.
|
||||
|
||||
<div class="alert alert-info alert-block">
|
||||
<strong>Run into troubles upgrading?</strong> Please
|
||||
<a href="https://github.com/mitchellh/vagrant/issues">report an issue</a>
|
||||
if you run into problems upgrading. Upgrades are meant to be a smooth
|
||||
process and we consider it a bug if it wasn't.
|
||||
</div>
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
page_title: "Other"
|
||||
sidebar_current: "other"
|
||||
---
|
||||
|
||||
# Other
|
||||
|
||||
This section covers other information that doesn't quite fit under the
|
||||
other categories. Please see the navigation to the left.
|
|
@ -1,9 +0,0 @@
|
|||
---
|
||||
page_title: "Custom Provider - Providers"
|
||||
sidebar_current: "providers-custom"
|
||||
---
|
||||
|
||||
# Custom Provider
|
||||
|
||||
To learn how to make your own custom providers, read the plugin development
|
||||
guide on [creating custom providers](/v2/plugins/providers.html).
|
|
@ -1,11 +0,0 @@
|
|||
---
|
||||
page_title: "Installation - Providers"
|
||||
sidebar_current: "providers-installation"
|
||||
---
|
||||
|
||||
# Provider Installation
|
||||
|
||||
Providers are distributed as Vagrant plugins, and are therefore installed
|
||||
using [standard plugin installation steps](/v2/plugins/usage.html). After
|
||||
installing a plugin which contains a provider, the provider should
|
||||
immediately be available.
|
|
@ -1,26 +0,0 @@
|
|||
---
|
||||
page_title: "Custom Provider - Vagrant Share"
|
||||
sidebar_current: "share-provider"
|
||||
---
|
||||
|
||||
# Custom Provider
|
||||
|
||||
<div class="alert alert-warn">
|
||||
<p>
|
||||
<strong>Warning: Advanced Topic!</strong> This topic is related to
|
||||
developing Vagrant plugins. If you're not interested in this or
|
||||
you're just starting with Vagrant, it is safe to skip this page.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
If you're developing a [custom provider](/v2/plugins/providers.html), you'll
|
||||
need to do a tiny bit more work in order for it to work well with Vagrant
|
||||
Share.
|
||||
|
||||
For now, this is only one step:
|
||||
|
||||
* `public_address` provider capability - You must implement this capability
|
||||
to return a string that is an address that can be used to access the
|
||||
guest from Vagrant. This does not need to be a globally routable address,
|
||||
it only needs to be accessible from the machine running Vagrant. If you
|
||||
can't detect an address, return `nil`.
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
page_title: "Synced Folders"
|
||||
sidebar_current: "syncedfolder"
|
||||
---
|
||||
|
||||
# Synced Folders
|
||||
|
||||
Synced folders enable Vagrant to sync a folder on the host machine to the
|
||||
guest machine, allowing you to continue working on your project's files
|
||||
on your host machine, but use the resources in the guest machine to
|
||||
compile or run your project.
|
||||
|
||||
By default, Vagrant will share your project directory (the directory
|
||||
with the [Vagrantfile](/v2/vagrantfile/index.html)) to `/vagrant`.
|
||||
|
||||
Read the [basic usage](/v2/synced-folders/basic_usage.html) page to get started
|
||||
with synced folders.
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"variables": {
|
||||
"aws_access_key_id": "{{ env `AWS_ACCESS_KEY_ID` }}",
|
||||
"aws_secret_access_key": "{{ env `AWS_SECRET_ACCESS_KEY` }}",
|
||||
"aws_region": "{{ env `AWS_REGION` }}",
|
||||
"fastly_api_key": "{{ env `FASTLY_API_KEY` }}"
|
||||
},
|
||||
"builders": [
|
||||
{
|
||||
"type": "docker",
|
||||
"image": "ruby:2.3-slim",
|
||||
"commit": "true"
|
||||
}
|
||||
],
|
||||
"provisioners": [
|
||||
{
|
||||
"type": "file",
|
||||
"source": ".",
|
||||
"destination": "/app"
|
||||
},
|
||||
{
|
||||
"type": "shell",
|
||||
"environment_vars": [
|
||||
"AWS_ACCESS_KEY_ID={{ user `aws_access_key_id` }}",
|
||||
"AWS_SECRET_ACCESS_KEY={{ user `aws_secret_access_key` }}",
|
||||
"AWS_REGION={{ user `aws_region` }}",
|
||||
"FASTLY_API_KEY={{ user `fastly_api_key` }}"
|
||||
],
|
||||
"inline": [
|
||||
"apt-get update",
|
||||
"apt-get install -y build-essential curl git libffi-dev s3cmd wget",
|
||||
"cd /app",
|
||||
|
||||
"bundle check || bundle install --jobs 7",
|
||||
"bundle exec middleman build",
|
||||
|
||||
"/bin/bash ./scripts/deploy.sh"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
#!/bin/bash
|
||||
set -e
|
||||
|
||||
PROJECT="vagrant"
|
||||
PROJECT_URL="www.vagrantup.com"
|
||||
FASTLY_SERVICE_ID="7GrxRJP3PVBuqQbyxYQ0MV"
|
||||
|
||||
# Ensure the proper AWS environment variables are set
|
||||
if [ -z "$AWS_ACCESS_KEY_ID" ]; then
|
||||
echo "Missing AWS_ACCESS_KEY_ID!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ -z "$AWS_SECRET_ACCESS_KEY" ]; then
|
||||
echo "Missing AWS_SECRET_ACCESS_KEY!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ensure the proper Fastly keys are set
|
||||
if [ -z "$FASTLY_API_KEY" ]; then
|
||||
echo "Missing FASTLY_API_KEY!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Ensure we have s3cmd installed
|
||||
if ! command -v "s3cmd" >/dev/null 2>&1; then
|
||||
echo "Missing s3cmd!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Get the parent directory of where this script is and change into our website
|
||||
# directory
|
||||
SOURCE="${BASH_SOURCE[0]}"
|
||||
while [ -h "$SOURCE" ] ; do SOURCE="$(readlink "$SOURCE")"; done
|
||||
DIR="$(cd -P "$( dirname "$SOURCE" )/.." && pwd)"
|
||||
|
||||
# Delete any .DS_Store files for our OS X friends.
|
||||
find "$DIR" -type f -name '.DS_Store' -delete
|
||||
|
||||
# Upload the files to S3 - we disable mime-type detection by the python library
|
||||
# and just guess from the file extension because it is surprisingly more
|
||||
# accurate, especially for CSS and javascript. We also tag the uploaded files
|
||||
# with the proper Surrogate-Key, which we will later purge in our API call to
|
||||
# Fastly.
|
||||
if [ -z "$NO_UPLOAD" ]; then
|
||||
echo "Uploading to S3..."
|
||||
|
||||
# Check that the site has been built
|
||||
if [ ! -d "$DIR/build" ]; then
|
||||
echo "Missing compiled website! Run 'make build' to compile!"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
s3cmd \
|
||||
--quiet \
|
||||
--delete-removed \
|
||||
--guess-mime-type \
|
||||
--no-mime-magic \
|
||||
--acl-public \
|
||||
--recursive \
|
||||
--add-header="Cache-Control: max-age=31536000" \
|
||||
--add-header="x-amz-meta-surrogate-key: site-$PROJECT" \
|
||||
sync "$DIR/build/" "s3://hc-sites/$PROJECT/latest/"
|
||||
fi
|
||||
|
||||
# Perform a soft-purge of the surrogate key.
|
||||
if [ -z "$NO_PURGE" ]; then
|
||||
echo "Purging Fastly cache..."
|
||||
curl \
|
||||
--fail \
|
||||
--silent \
|
||||
--output /dev/null \
|
||||
--request "POST" \
|
||||
--header "Accept: application/json" \
|
||||
--header "Fastly-Key: $FASTLY_API_KEY" \
|
||||
--header "Fastly-Soft-Purge: 1" \
|
||||
"https://api.fastly.com/service/$FASTLY_SERVICE_ID/purge/site-$PROJECT"
|
||||
fi
|
||||
|
||||
# Warm the cache with recursive wget.
|
||||
if [ -z "$NO_WARM" ]; then
|
||||
echo "Warming Fastly cache..."
|
||||
wget \
|
||||
--recursive \
|
||||
--delete-after \
|
||||
--level 0 \
|
||||
--quiet \
|
||||
"https://$PROJECT_URL/"
|
||||
fi
|
|
@ -0,0 +1,14 @@
|
|||
---
|
||||
layout: "inner"
|
||||
page_title: "Not Found"
|
||||
noindex: true
|
||||
description: |-
|
||||
Page not found!
|
||||
---
|
||||
|
||||
# Page Not Found
|
||||
|
||||
Sorry, the page you tried to visit does not exist. This could be our fault,
|
||||
and if so we will fix that up right away.
|
||||
|
||||
Please go back, or go back to get back on track.
|
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
layout: "about"
|
||||
sidebar_current: "about-main"
|
||||
page_title: "About"
|
||||
description: |-
|
||||
Vagrant is a tool for building complete development environments. With an
|
||||
easy-to-use workflow and focus on automation, Vagrant lowers development
|
||||
environment setup time, increases development/production parity, and makes
|
||||
the "works on my machine" excuse a relic of the past.
|
||||
---
|
||||
|
||||
# About Vagrant
|
||||
|
||||
Vagrant is a tool for building complete development environments. With an
|
||||
easy-to-use workflow and focus on automation, Vagrant lowers development
|
||||
environment setup time, increases development/production parity, and makes
|
||||
the "works on my machine" excuse a relic of the past.
|
||||
|
||||
Vagrant was started in January 2010 by [Mitchell Hashimoto](https://twitter.com/mitchellh). For almost three years, Vagrant was a side-project for Mitchell, a project that he worked on in his free hours after his full-time job. During this time, Vagrant grew to be trusted and used by a range of individuals to entire development teams in large companies.
|
||||
|
||||
In November 2012, [HashiCorp](https://www.hashicorp.com) was formed by Mitchell to back the development of Vagrant full-time. HashiCorp builds commercial additions and provides professional support and training for Vagrant.
|
||||
|
||||
Vagrant remains and always will be a liberally licensed open source project. Each release of Vagrant is the work of hundreds of individuals' contributions to the [open source project](https://github.com/mitchellh/vagrant).
|
Before Width: | Height: | Size: 1.7 KiB After Width: | Height: | Size: 1.7 KiB |
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
Before Width: | Height: | Size: 1.9 KiB After Width: | Height: | Size: 1.9 KiB |
After Width: | Height: | Size: 16 KiB |
After Width: | Height: | Size: 11 KiB |
Before Width: | Height: | Size: 3.9 KiB After Width: | Height: | Size: 3.9 KiB |
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 2.6 KiB |
After Width: | Height: | Size: 69 KiB |
After Width: | Height: | Size: 701 B |
After Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 883 B |
After Width: | Height: | Size: 3.1 KiB |