diff --git a/.circleci/config.yml b/.circleci/config.yml
index 61c8342df..3a66657c2 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -1,33 +1,33 @@
version: 2
jobs:
- build-website:
- # setting the working_directory along with the checkout path allows us to not have
- # to cd into the website/ directory for commands
- working_directory: ~/project/website
+ build-website-docker-image:
docker:
- - image: hashicorp/middleman-hashicorp:0.3.35
+ - image: circleci/buildpack-deps
+ shell: /usr/bin/env bash -euo pipefail -c
steps:
- - checkout:
- path: ~/project
- - restore_cache:
- key: static-site-gems-v1-{{ checksum "Gemfile.lock" }}
+ - checkout
+ - setup_remote_docker
- run:
- command: bundle check || bundle install --path vendor/bundle
- - save_cache:
- key: static-site-gems-v1-{{ checksum "Gemfile.lock" }}
- paths:
- - ~/project/website/vendor/bundle
- - run:
- command: bundle exec middleman build
- - run:
- command: ./scripts/deploy.sh
+ name: Build Docker Image if Necessary
+ command: |
+ IMAGE_TAG=$(cat website/Dockerfile website/package-lock.json | sha256sum | awk '{print $1;}')
+ echo "Using $IMAGE_TAG"
+ if curl https://hub.docker.com/v2/repositories/hashicorp/vagrant-website/tags/$IMAGE_TAG -fsL > /dev/null; then
+ echo "Dependencies have not changed, not building a new website docker image."
+ else
+ cd website/
+ docker build -t hashicorp/vagrant-website:$IMAGE_TAG .
+ docker tag hashicorp/vagrant-website:$IMAGE_TAG hashicorp/vagrant-website:latest
+ docker login -u $WEBSITE_DOCKER_USER -p $WEBSITE_DOCKER_PASS
+ docker push hashicorp/vagrant-website
+ fi
workflows:
version: 2
- website:
+ build_website_docker_image:
jobs:
- - build-website:
- context: static-sites
+ - build-website-docker-image:
filters:
branches:
- only: stable-website
+ only:
+ - master
diff --git a/README.md b/README.md
index e0523ba46..ddcef7673 100644
--- a/README.md
+++ b/README.md
@@ -1,8 +1,8 @@
# Vagrant
-* Website: [https://www.vagrantup.com/](https://www.vagrantup.com/)
-* Source: [https://github.com/hashicorp/vagrant](https://github.com/hashicorp/vagrant)
-* HashiCorp Discuss: [https://discuss.hashicorp.com/c/vagrant/24](https://discuss.hashicorp.com/c/vagrant/24)
+- Website: [https://www.vagrantup.com/](https://www.vagrantup.com/)
+- Source: [https://github.com/hashicorp/vagrant](https://github.com/hashicorp/vagrant)
+- HashiCorp Discuss: [https://discuss.hashicorp.com/c/vagrant/24](https://discuss.hashicorp.com/c/vagrant/24)
Vagrant is a tool for building and distributing development environments.
@@ -41,12 +41,12 @@ the box doesn't already exist on your system.
## Getting Started Guide
To learn how to build a fully functional development environment, follow the
-[getting started guide](https://www.vagrantup.com/docs/getting-started/index.html).
+[getting started guide](https://www.vagrantup.com/docs/getting-started).
## Installing from Source
If you want the bleeding edge version of Vagrant, we try to keep master pretty stable
-and you're welcome to give it a shot. Please review the installation page [here](https://www.vagrantup.com/docs/installation/source.html).
+and you're welcome to give it a shot. Please review the installation page [here](https://www.vagrantup.com/docs/installation/source).
## Contributing to Vagrant
diff --git a/website/.editorconfig b/website/.editorconfig
new file mode 100644
index 000000000..36bf83fdb
--- /dev/null
+++ b/website/.editorconfig
@@ -0,0 +1,18 @@
+# This file is for unifying the coding style for different editors and IDEs
+# editorconfig.org
+
+root = true
+
+[*]
+end_of_line = lf
+charset = utf-8
+insert_final_newline = true
+trim_trailing_whitespace = true
+indent_style = space
+indent_size = 2
+
+[Makefile]
+indent_style = tab
+
+[{*.md,*.json}]
+max_line_length = null
diff --git a/website/.eslintrc.js b/website/.eslintrc.js
new file mode 100644
index 000000000..1a1cbd015
--- /dev/null
+++ b/website/.eslintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ ...require('@hashicorp/nextjs-scripts/.eslintrc.js'),
+ ignorePatterns: ['public/'],
+}
diff --git a/website/.gitignore b/website/.gitignore
new file mode 100644
index 000000000..1d23ce1de
--- /dev/null
+++ b/website/.gitignore
@@ -0,0 +1,5 @@
+node_modules
+.DS_Store
+.next
+out
+.mdx-data
diff --git a/website/.stylelintrc.js b/website/.stylelintrc.js
new file mode 100644
index 000000000..cb9f2ff5f
--- /dev/null
+++ b/website/.stylelintrc.js
@@ -0,0 +1,4 @@
+module.exports = {
+ ...require('@hashicorp/nextjs-scripts/.stylelintrc.js'),
+ /* Specify overrides here */
+}
diff --git a/website/Dockerfile b/website/Dockerfile
new file mode 100644
index 000000000..182f4fb58
--- /dev/null
+++ b/website/Dockerfile
@@ -0,0 +1,7 @@
+FROM node:10.16.3-alpine
+RUN apk add --update --no-cache git make g++ automake autoconf libtool nasm libpng-dev
+
+COPY ./package.json /website/package.json
+COPY ./package-lock.json /website/package-lock.json
+WORKDIR /website
+RUN npm install
diff --git a/website/Gemfile b/website/Gemfile
deleted file mode 100644
index 029adebc9..000000000
--- a/website/Gemfile
+++ /dev/null
@@ -1,3 +0,0 @@
-source "https://rubygems.org"
-
-gem "middleman-hashicorp", "0.3.44"
diff --git a/website/Gemfile.lock b/website/Gemfile.lock
deleted file mode 100644
index 9bee3c607..000000000
--- a/website/Gemfile.lock
+++ /dev/null
@@ -1,161 +0,0 @@
-GEM
- remote: https://rubygems.org/
- specs:
- activesupport (4.2.11.1)
- i18n (~> 0.7)
- minitest (~> 5.1)
- thread_safe (~> 0.3, >= 0.3.4)
- tzinfo (~> 1.1)
- autoprefixer-rails (9.7.4)
- execjs
- bootstrap-sass (3.4.1)
- autoprefixer-rails (>= 5.2.1)
- sassc (>= 2.0.0)
- builder (3.2.4)
- 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.11)
- coffee-script (2.4.1)
- coffee-script-source
- execjs
- coffee-script-source (1.12.2)
- 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)
- em-websocket (0.5.1)
- eventmachine (>= 0.12.9)
- http_parser.rb (~> 0.6.0)
- erubis (2.7.0)
- eventmachine (1.2.7)
- execjs (2.7.0)
- ffi (1.12.2)
- haml (5.1.2)
- temple (>= 0.8.0)
- tilt
- hike (1.2.3)
- hooks (0.4.1)
- uber (~> 0.0.14)
- http_parser.rb (0.6.0)
- i18n (0.7.0)
- json (2.3.0)
- kramdown (1.17.0)
- listen (3.0.8)
- rb-fsevent (~> 0.9, >= 0.9.4)
- rb-inotify (~> 0.9, >= 0.9.7)
- 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-hashicorp (0.3.44)
- bootstrap-sass (~> 3.3)
- builder (~> 3.2)
- middleman (~> 3.4)
- middleman-livereload (~> 3.4)
- middleman-syntax (~> 3.0)
- redcarpet (~> 3.3)
- turbolinks (~> 5.0)
- middleman-livereload (3.4.6)
- em-websocket (~> 0.5.1)
- middleman-core (>= 3.3)
- rack-livereload (~> 0.3.15)
- middleman-sprockets (3.5.0)
- middleman-core (>= 3.3)
- sprockets (~> 2.12.1)
- sprockets-helpers (~> 1.1.0)
- sprockets-sass (~> 1.3.0)
- middleman-syntax (3.2.0)
- middleman-core (>= 3.2)
- rouge (~> 3.2)
- mime-types (3.3.1)
- mime-types-data (~> 3.2015)
- mime-types-data (3.2019.1009)
- mini_portile2 (2.4.0)
- minitest (5.14.0)
- multi_json (1.14.1)
- nokogiri (1.10.9)
- mini_portile2 (~> 2.4.0)
- padrino-helpers (0.12.9)
- i18n (~> 0.6, >= 0.6.7)
- padrino-support (= 0.12.9)
- tilt (>= 1.4.1, < 3)
- padrino-support (0.12.9)
- activesupport (>= 3.1)
- rack (1.6.13)
- rack-livereload (0.3.17)
- rack
- rack-test (1.1.0)
- rack (>= 1.0, < 3)
- rb-fsevent (0.10.3)
- rb-inotify (0.10.1)
- ffi (~> 1.0)
- redcarpet (3.5.0)
- rouge (3.16.0)
- sass (3.4.25)
- sassc (2.2.1)
- ffi (~> 1.9)
- sprockets (2.12.5)
- 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)
- temple (0.8.2)
- thor (1.0.1)
- thread_safe (0.3.6)
- tilt (1.4.1)
- turbolinks (5.2.1)
- turbolinks-source (~> 5.2)
- turbolinks-source (5.2.0)
- tzinfo (1.2.6)
- thread_safe (~> 0.1)
- uber (0.0.15)
- uglifier (2.7.2)
- execjs (>= 0.3.0)
- json (>= 1.8.0)
- xpath (2.1.0)
- nokogiri (~> 1.3)
-
-PLATFORMS
- ruby
-
-DEPENDENCIES
- middleman-hashicorp (= 0.3.44)
-
-BUNDLED WITH
- 1.17.3
diff --git a/website/Makefile b/website/Makefile
index c7956c2b5..8fc23f072 100644
--- a/website/Makefile
+++ b/website/Makefile
@@ -1,25 +1,54 @@
-VERSION?="0.3.44"
-
-build:
- @echo "==> Starting build in Docker..."
- @docker run \
- --interactive \
- --rm \
- --tty \
- --volume "$(shell pwd):/website" \
- -e "ENV=production" \
- hashicorp/middleman-hashicorp:${VERSION} \
- bundle exec middleman build --verbose --clean
-
+# Default: run this if working on the website locally to run in watch mode.
website:
+ @echo "==> Downloading latest Docker image..."
+ @docker pull hashicorp/vagrant-website
@echo "==> Starting website in Docker..."
@docker run \
--interactive \
--rm \
--tty \
- --publish "4567:4567" \
- --publish "35729:35729" \
+ --workdir "/website" \
--volume "$(shell pwd):/website" \
- hashicorp/middleman-hashicorp:${VERSION}
+ --volume "/website/node_modules" \
+ --publish "3000:3000" \
+ hashicorp/vagrant-website \
+ npm start
-.PHONY: build website
+# This command will generate a static version of the website to the "out" folder.
+build:
+ @echo "==> Downloading latest Docker image..."
+ @docker pull hashicorp/vagrant-website
+ @echo "==> Starting build in Docker..."
+ @docker run \
+ --interactive \
+ --rm \
+ --tty \
+ --workdir "/website" \
+ --volume "$(shell pwd):/website" \
+ --volume "/website/node_modules" \
+ hashicorp/vagrant-website \
+ npm run static
+
+# If you are changing node dependencies locally, run this to generate a new
+# local Docker image with the dependency changes included.
+build-image:
+ @echo "==> Building Docker image..."
+ @docker build -t hashicorp-vagrant-website-local .
+
+# Use this if you have run `build-image` to use the locally built image
+# rather than our CI-generated image to test dependency changes.
+website-local:
+ @echo "==> Starting website in Docker..."
+ @docker run \
+ --interactive \
+ --rm \
+ --tty \
+ --workdir "/website" \
+ --volume "$(shell pwd):/website" \
+ --volume "/website/node_modules" \
+ --publish "3000:3000" \
+ hashicorp-vagrant-website-local \
+ npm start
+
+.DEFAULT_GOAL := website
+.PHONY: build build-image website website-local
diff --git a/website/README.md b/website/README.md
index dc42e8e94..8b02424a4 100644
--- a/website/README.md
+++ b/website/README.md
@@ -1,23 +1,195 @@
# Vagrant Website
-This subdirectory contains the entire source for the [Vagrant Website][vagrant].
-This is a [Middleman][middleman] project, which builds a static site from these
-source files.
+[](https://app.netlify.com/sites/vagrant-docs/deploys)
+
+This subdirectory contains the entire source for the [Vagrant Website](https://vagrant.io/). This is a [NextJS](https://nextjs.org/) project, which builds a static site from these source files.
## 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.
-
-See also the [Vagrant Contributing Guide](https://github.com/hashicorp/vagrant/blob/master/.github/CONTRIBUTING.md) for more details.
+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 website`.
+The website can be run locally through node.js or Docker. If you choose to run through Docker, everything will be a little bit slower due to the additional overhead, so for frequent contributors it may be worth it to use node.
-Then open up `http://localhost:4567`. Note that some URLs you may need to append
-".html" to make them work (in the navigation).
+> **Note:** If you are using a text editor that uses a "safe write" save style such as **vim** or **goland**, this can cause issues with the live reload in development. If you turn off safe write, this should solve the problem. In vim, this can be done by running `:set backupcopy=yes`. In goland, search the settings for "safe write" and turn that setting off.
-[middleman]: https://www.middlemanapp.com
-[vagrant]: https://www.vagrantup.com
+### With Docker
+
+Running the site locally is simple. Provided you have Docker installed, clone this repo, run `make`, and then visit `http://localhost:3000`.
+
+The docker image is pre-built with all the website dependencies installed, which is what makes it so quick and simple, but also means if you need to change dependencies and test the changes within Docker, you'll need a new image. If this is something you need to do, you can run `make build-image` to generate a local Docker image with updated dependencies, then `make website-local` to use that image and preview.
+
+### With Node
+
+If your local development environment has a supported version (v10.0.0+) of [node installed](https://nodejs.org/en/) you can run:
+
+- `npm install`
+- `npm start`
+
+and then visit `http://localhost:3000`.
+
+If you pull down new code from github, you should run `npm install` again. Otherwise, there's no need to re-run `npm install` each time the site is run, you can just run `npm start` to get it going.
+
+## Editing Content
+
+Documentation content is written in [Markdown](https://www.markdownguide.org/cheat-sheet/) and you'll find all files listed under the `/pages` directory.
+
+To create a new page with Markdown, create a file ending in `.mdx` in the `pages/` directory. The path in the pages directory will be the URL route. For example, `pages/hello/world.mdx` will be served from the `/hello/world` URL.
+
+This file can be standard Markdown and also supports [YAML frontmatter](https://middlemanapp.com/basics/frontmatter/). YAML frontmatter is optional, there are defaults for all keys.
+
+```yaml
+---
+title: 'My Title'
+description: "A thorough, yet succinct description of the page's contents"
+---
+
+```
+
+The significant keys in the YAML frontmatter are:
+
+- `title` `(string)` - This is the title of the page that will be set in the HTML title.
+- `description` `(string)` - This is a description of the page that will be set in the HTML description.
+
+> ⚠️Since `api` is a reserved directory within NextJS, all `/api/**` pages are listed under the `/pages/api-docs` path.
+
+### Editing Sidebars
+
+The structure of the sidebars are controlled by files in the [`/data` directory](data).
+
+- Edit [this file](data/docs-navigation.js) to change the **docs** sidebar
+- Edit [this file](data/api-navigation.js) to change the **api** sidebar
+- Edit [this file](data/guides-navigation.js) to change the **guides** sidebar
+- Edit [this file](data/intro-navigation.js) to change the **intro** sidebar
+
+To nest sidebar items, you'll want to add a new `category` key/value accompanied by the appropriate embedded `content` values.
+
+- `category` values will be **directory names** within the `pages` directory
+- `content` values will be **file names** within their appropriately nested directory.
+
+### Creating New Pages
+
+There is currently a small bug with new page creation - if you create a new page and link it up via subnav data while the server is running, it will report an error saying the page was not found. This can be resolved by restarting the server.
+
+### Changing the Release Version
+
+To change the version of vagrant displayed for download on the website, head over to `data/version.js` and change the number there. It's important to note that the version number must match a version that has been released and is live on `releases.hashicorp.com` -- if it does not, the website will be unable to fetch links to the binaries and will not compile. So this version number should be changed _only after a release_.
+
+#### Displaying a Prerelease
+
+If there is a prerelease of any type that should be displayed on the downloads page, this can be done by editing `pages/downloads/index.jsx`. By default, the download component might look something like this:
+
+```jsx
+
+```
+
+To add a prerelease, an extra `prerelease` property can be added to the component as such:
+
+```jsx
+
+```
+
+This configuration would display something like the following text on the website, emphasis added to the configurable parameters:
+
+```
+A {{ release candidate }} for Vagrant {{ v1.0.0 }} is available! The release can be downloaded here.
+```
+
+You may customize the parameters in any way you'd like. To remove a prerelease from the website, simply delete the `prerelease` paremeter from the above component.
+
+### Markdown Enhancements
+
+There are several custom markdown plugins that are available by default that enhance standard markdown to fit our use cases. This set of plugins introduces a couple instances of custom syntax, and a couple specific pitfalls that are not present by default with markdown, detailed below:
+
+- If you see the symbols `~>`, `->`, `=>`, or `!>`, these represent [custom alerts](https://github.com/hashicorp/remark-plugins/tree/master/plugins/paragraph-custom-alerts#paragraph-custom-alerts). These render as colored boxes to draw the user's attention to some type of aside.
+- If you see `@include '/some/path.mdx'`, this is a [markdown include](https://github.com/hashicorp/remark-plugins/tree/master/plugins/include-markdown#include-markdown-plugin). It's worth noting as well that all includes resolve from `website/pages/partials` by default.
+- If you see `# Headline ((#slug))`, this is an example of an [anchor link alias](https://github.com/hashicorp/remark-plugins/tree/je.anchor-link-adjustments/plugins/anchor-links#anchor-link-aliases). It adds an extra permalink to a headline for compatibility and is removed from the output.
+- Due to [automatically generated permalinks](https://github.com/hashicorp/remark-plugins/tree/je.anchor-link-adjustments/plugins/anchor-links#anchor-links), any text changes to _headlines_ or _list items that begin with inline code_ can and will break existing permalinks. Be very cautious when changing either of these two text items.
+
+ Headlines are fairly self-explanitory, but here's an example of how list items that begin with inline code look.
+
+ ```markdown
+ - this is a normal list item
+ - `this` is a list item that begins with inline code
+ ```
+
+ Its worth noting that _only the inline code at the beginning of the list item_ will cause problems if changed. So if you changed the above markup to...
+
+ ```markdown
+ - lsdhfhksdjf
+ - `this` jsdhfkdsjhkdsfjh
+ ```
+
+ ...while it perhaps would not be an improved user experience, no links would break because of it. The best approach is to **avoid changing headlines and inline code at the start of a list item**. If you must change one of these items, make sure to tag someone from the digital marketing development team on your pull request, they will help to ensure as much compatibility as possible.
+
+### Redirects
+
+This website structures URLs based on the filesystem layout. This means that if a file is moved, removed, or a folder is re-organized, links will break. If a path change is necessary, it can be mitigated using redirects.
+
+To add a redirect, head over to the `_redirects` file - the format is fairly simple. On the left is the current path, and on the right is the path that should be redirected to. It's important to note that if there are links to a `.html` version of a page, that must also be explicitly redirected. For example:
+
+```
+/foo /bar 301!
+/foo.html /bar 301!
+```
+
+This redirect rule will send all incoming links to `/foo` and `/foo.html` to `/bar`. For more details on the redirects file format, [check out the docs on netlify](https://docs.netlify.com/routing/redirects/rewrites-proxies). Note that it is critical that `301!` is added to every one-to-one redirect - if it is left off the redirect may not work.
+
+There are a couple important caveats with redirects. First, redirects are applied at the hosting layer, and therefore will not work by default in local dev mode. To test in local dev mode, you can use [`netlify dev`](https://www.netlify.com/products/dev/), or just push a commit and check using the deploy preview.
+
+Second, redirects do not apply to client-side navigation. By default, all links in the navigation and docs sidebar will navigate purely on the client side, which makes navigation through the docs significantly faster, especially for those with low-end devices and/or weak internet connections. In the future, we plan to convert all internal links within docs pages to behave this way as well. This means that if there is a link on this website to a given piece of content that has changed locations in some way, we need to also _directly change existing links to the content_. This way, if a user clicks a link that navigates on the client side, or if they hit the url directly and the page renders from the server side, either one will work perfectly.
+
+Let's look at an example. Say you have a page called `/docs/foo` which needs to be moved to `/docs/nested/foo`. Additionally, this is a page that has been around for a while and we know there are links into `/docs/foo.html` left over from our previous website structure. First, we move the page, then adjust the docs sidenav, in `data/docs-navigation.js`. Find the category the page is in, and move it into the appropriate subcategory. Next, we add to `_redirects` as such:
+
+```
+/foo /nested/foo 301!
+/foo.html /nested/foo 301!
+```
+
+Finally, we run a global search for internal links to `/foo`, and make sure to adjust them to be `/nested/foo` - this is to ensure that client-side navigation still works correctly. _Adding a redirect alone is not enough_.
+
+One more example - let's say that content is being moved to an external website. A common example is guides moving to `learn.hashicorp.com`. In this case, we take all the same steps, except that we need to make a different type of change to the `docs-navigation` file. If previously the structure looked like:
+
+```js
+{
+ category: 'docs',
+ content: [
+ 'foo'
+ ]
+}
+```
+
+If we no longer want the link to be in the side nav, we can simply remove it. If we do still want the link in the side nav, but pointing to an external destnation, we need to slightly change the structure as such:
+
+```js
+{
+ category: 'docs',
+ content: [
+ { title: 'Foo Title', href: 'https://learn.hashicorp.com/vault/foo' }
+ ]
+}
+```
+
+As the majority of items in the side nav are internal links, the structure makes it as easy as possible to represent these links. This alternate syntax is the most concise manner than an external link can be represented. External links can be used anywhere within the docs sidenav.
+
+It's also worth noting that it is possible to do glob-based redirects, for example matching `/docs/*`, and you may see this pattern in the `_redirects` file. This type of redirect is much higher risk and the behavior is a bit more nuanced, so if you need to add a glob redirect, please reach out to the website maintainers and ask about it first.
+
+### Deployment
+
+This website is hosted on Netlify and configured to automatically deploy anytime you push code to the `stable-website` branch. Any time a pull request is submitted that changes files within the `website` folder, a deployment preview will appear in the github checks which can be used to validate the way docs changes will look live. Deployments from `stable-website` will look and behave the same way as deployment previews.
diff --git a/website/_redirects b/website/_redirects
new file mode 100644
index 000000000..b88164a74
--- /dev/null
+++ b/website/_redirects
@@ -0,0 +1,33 @@
+# REDIRECTS FILE
+#
+# See the README file in this directory for documentation. Please do not
+# modify or delete existing redirects without first verifying internally.
+
+/support.html /
+/support /
+/sponsors.html /
+/sponsors /
+/about.html /intro
+/about /intro
+/v1/* https://docs-v1.vagrantup.com/:splat
+/blog/* https://www.hashicorp.com/blog/:splat
+/docs/getting-started /intro/getting-started
+/docs/getting-started/* /intro/getting-started/:splat
+/download-archive/* https://releases.hashicorp.com/vagrant
+
+/intro/index /intro
+/docs/index /docs
+/docs/boxes.html /docs/boxes
+/docs/boxes /docs/boxes
+/docs/experimental/index.html /docs/experimental
+/docs/multi-machine/index.html /docs/multi-machine
+/docs/virtualbox/index.html /docs/providers/virtualbox
+/docs/virtualbox/* /docs/providers/virtualbox/:splat
+/docs/vmware/index.html /docs/providers/vmware
+/docs/vmware/* /docs/providers/vmware/:splat
+/docs/docker/index.html /docs/providers/docker
+/docs/docker/* /docs/providers/docker/:splat
+/docs/hyperv/index.html /docs/providers/hyperv
+/docs/hyperv/* /docs/providers/hyperv/:splat
+/docs/vagrant-cloud /vagrant-cloud
+/docs/vagrant-cloud/* /vagrant-cloud/:splat
diff --git a/website/babel.config.js b/website/babel.config.js
new file mode 100644
index 000000000..3cf0d791c
--- /dev/null
+++ b/website/babel.config.js
@@ -0,0 +1,4 @@
+module.exports = {
+ presets: ['next/babel'],
+ plugins: ['import-glob-array'],
+}
diff --git a/website/components/footer/index.jsx b/website/components/footer/index.jsx
new file mode 100644
index 000000000..8e16d7a3f
--- /dev/null
+++ b/website/components/footer/index.jsx
@@ -0,0 +1,32 @@
+import Link from 'next/link'
+
+export default function Footer({ openConsentManager }) {
+ return (
+
+ )
+}
diff --git a/website/components/footer/style.css b/website/components/footer/style.css
new file mode 100644
index 000000000..bd11930e6
--- /dev/null
+++ b/website/components/footer/style.css
@@ -0,0 +1,32 @@
+.g-footer {
+ padding: 25px 0 17px 0;
+ flex-shrink: 0;
+ display: flex;
+
+ & .g-container {
+ display: flex;
+ justify-content: space-between;
+ flex-wrap: wrap;
+ }
+
+ & a {
+ color: black;
+ opacity: 0.5;
+ transition: opacity 0.25s ease;
+ cursor: pointer;
+ display: inline-block;
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+
+ & .left > a {
+ margin-right: 20px;
+ margin-bottom: 8px;
+
+ &:last-child {
+ margin-right: 0;
+ }
+ }
+}
diff --git a/website/components/subnav/index.jsx b/website/components/subnav/index.jsx
new file mode 100644
index 000000000..a6a55cc3f
--- /dev/null
+++ b/website/components/subnav/index.jsx
@@ -0,0 +1,23 @@
+import Subnav from '@hashicorp/react-subnav'
+import subnavItems from '../../data/subnav'
+import { useRouter } from 'next/router'
+
+export default function VagrantSubnav() {
+ const router = useRouter()
+ return (
+
+ )
+}
diff --git a/website/components/tabs/README.md b/website/components/tabs/README.md
new file mode 100644
index 000000000..bdf31a710
--- /dev/null
+++ b/website/components/tabs/README.md
@@ -0,0 +1,61 @@
+# Tabs Component
+
+> An MDX-compatible Tabs component
+
+This React component renders tabbed content.
+
+## Usage
+
+- Use the `` tag in your markdown file to begin a tabbed content section.
+- Use the `` tag with a `heading` prop to separate your markdown
+
+### Important
+
+A line must be skipped between the `` and your markdown (for both above and below said markdown). [This is a limitation of MDX also pointed out by the Docusaurus folks đź”— ](https://v2.docusaurus.io/docs/markdown-features/#multi-language-support-code-blocks)
+
+### Example
+
+```mdx
+
+
+
+### Content
+
+
+
+
+### Content
+
+
+
+```
+
+### Component Props
+
+`` can be provided any arbitrary `children` so long as the `heading` prop is present the React or HTML tag used to wrap markdown, that said, we provide the `` component to separate your tab content without rendering extra, unnecessary markup.
+
+This works:
+
+```mdx
+
+
+
+### Content
+
+
+....
+
+```
+
+This _does not_ work:
+
+```mdx
+
+
+
+### Content
+
+
+....
+
+```
diff --git a/website/components/tabs/index.jsx b/website/components/tabs/index.jsx
new file mode 100644
index 000000000..23862510d
--- /dev/null
+++ b/website/components/tabs/index.jsx
@@ -0,0 +1,17 @@
+import ReactTabs from '@hashicorp/react-tabs'
+
+export default function Tabs({ children }) {
+ return (
+ ({
+ heading: Block.props.heading,
+ // eslint-disable-next-line react/display-name
+ tabChildren: () => Block,
+ }))}
+ />
+ )
+}
+
+export function Tab({ children }) {
+ return <>{children}>
+}
diff --git a/website/components/tabs/style.css b/website/components/tabs/style.css
new file mode 100644
index 000000000..bedf96b4e
--- /dev/null
+++ b/website/components/tabs/style.css
@@ -0,0 +1,8 @@
+/* This is a CSS overwrite on top of the existing component styles to accommodate the Learn layout */
+.g-tabs {
+ & .g-grid-container,
+ & > .g-grid-container {
+ padding-left: 0;
+ padding-right: 0;
+ }
+}
diff --git a/website/components/temporary_text-split/index.jsx b/website/components/temporary_text-split/index.jsx
new file mode 100644
index 000000000..ec7e58fb2
--- /dev/null
+++ b/website/components/temporary_text-split/index.jsx
@@ -0,0 +1,14 @@
+import styles from './style.module.css'
+
+export default function TextSplit({ text, reverse, children }) {
+ return (
+
+ )
+}
diff --git a/website/pages/_app.js b/website/pages/_app.js
new file mode 100644
index 000000000..6e2aa16f1
--- /dev/null
+++ b/website/pages/_app.js
@@ -0,0 +1,80 @@
+import './style.css'
+import '@hashicorp/nextjs-scripts/lib/nprogress/style.css'
+
+import NProgress from '@hashicorp/nextjs-scripts/lib/nprogress'
+import createConsentManager from '@hashicorp/nextjs-scripts/lib/consent-manager'
+import useAnchorLinkAnalytics from '@hashicorp/nextjs-scripts/lib/anchor-link-analytics'
+import Router from 'next/router'
+import HashiHead from '@hashicorp/react-head'
+import Head from 'next/head'
+import { ErrorBoundary } from '@hashicorp/nextjs-scripts/lib/bugsnag'
+import MegaNav from '@hashicorp/react-mega-nav'
+import ProductSubnav from '../components/subnav'
+import Footer from '../components/footer'
+import Error from './_error'
+
+NProgress({ Router })
+const { ConsentManager, openConsentManager } = createConsentManager({
+ preset: 'oss',
+})
+
+function App({ Component, pageProps }) {
+ useAnchorLinkAnalytics()
+
+ return (
+
+
+
+
+
+
+
+
+
+
+ )
+}
+
+App.getInitialProps = async ({ Component, ctx }) => {
+ let pageProps = {}
+
+ if (Component.getInitialProps) {
+ pageProps = await Component.getInitialProps(ctx)
+ } else if (Component.isMDXComponent) {
+ // fix for https://github.com/mdx-js/mdx/issues/382
+ const mdxLayoutComponent = Component({}).props.originalType
+ if (mdxLayoutComponent.getInitialProps) {
+ pageProps = await mdxLayoutComponent.getInitialProps(ctx)
+ }
+ }
+
+ return { pageProps }
+}
+
+export default App
diff --git a/website/pages/_document.js b/website/pages/_document.js
new file mode 100644
index 000000000..b37711bf4
--- /dev/null
+++ b/website/pages/_document.js
@@ -0,0 +1,27 @@
+import Document, { Head, Main, NextScript } from 'next/document'
+import HashiHead from '@hashicorp/react-head'
+
+export default class MyDocument extends Document {
+ static async getInitialProps(ctx) {
+ const initialProps = await Document.getInitialProps(ctx)
+ return { ...initialProps }
+ }
+
+ render() {
+ return (
+
+
+
+
+
+
-
-
-<% end %>
-
-# Vagrant Cloud API
-
-## Using the API
-
-Vagrant Cloud provides an API for users to interact with Vagrant Cloud for experimentation, automation, or building new features and tools on top of our existing application.
-
-### Authentication
-
-Some API endpoints require authentication to create new resources, update or delete existing resources, or to read a private resource.
-
-Clients can authenticate using an authentication token.
-The token can be passed to Vagrant Cloud one of two ways:
-
-1. (Preferred) Set the `Authorization` header to `"Bearer "` and the value of the authentication token.
-2. Pass the authentication token as an `access_token` URL parameter.
-
-Examples below will set the header, but feel free to use whichever method is easier for your implementation.
-
--> The `X-Atlas-Token` header is also supported for backwards-compatibility.
-
-### Request and Response Format
-
-Requests to Vagrant Cloud which include data attributes (`POST` or `PUT`/`PATCH`) should set the `Content-Type` header to `"application/json"`, and include a valid JSON body with the request.
-
-JSON responses may include an `errors` key, which will contain an array of error strings, as well as a `success` key.
-For example:
-
-```json
-{
- "errors": [
- "Resource not found!"
- ],
- "success": false
-}
-```
-
-### Response Codes
-
-Vagrant Cloud may respond with the following response codes, depending on the status of the request and context:
-
-#### Success
-
-##### **200** OK
-##### **201** Created
-##### **204** No Content
-
-#### Client Errors
-
-##### **401** Unauthorized
-
-You do not have authorization to access the requested resource.
-
-##### **402** Payment Required
-
-You are trying to access a resource which is delinquent on billing.
-Please contact the owner of the resource so that they can update their billing information.
-
-##### **403** Forbidden
-
-You are attempting to use the system in a way which is not allowed.
-There could be required request parameters that are missing, or one of the parameters is invalid.
-Please check the response `errors` key, and double-check the examples below for any discrepancies.
-
-##### **404** Not Found
-
-The resource you are trying to access does not exist. This may also be returned if you attempt to access a private resource that you don't have authorization to view.
-
-##### **422** Unprocessable Entity
-
-##### **429** Too Many Requests
-
-You are currently being rate-limited. Please decrease your frequency of usage, or contact us at [support+vagrantcloud@hashicorp.com](mailto:support+vagrantcloud@hashicorp.com) with a description of your use case so that we can consider creating an exception.
-
-#### Server Errors
-
-##### **500** Internal Server Error
-
-The server failed to respond to the request for an unknown reason.
-Please contact [support+vagrantcloud@hashicorp.com](mailto:support+vagrantcloud@hashicorp.com) with a description of the problem so that we can investigate.
-
-##### **503** Service Unavailable
-
-Vagrant Cloud is temporarily in maintenance mode.
-Please check the [HashiCorp Status Site](http://status.hashicorp.com) for more information.
-
-## Creating a usable box from scratch
-
--> This assumes that you have a valid Vagrant Cloud authentication token. You can [create one via the API](#create-a-token), or [create one on the Vagrant Cloud website](https://app.vagrantup.com/settings/security).
-
-In order to create a usable box on Vagrant Cloud, perform the following steps:
-
-1. [Create a new box](#create-a-box)
-1. [Create a new version](#create-a-version)
-1. [Create a new provider](#create-a-provider)
-1. [Upload a box image for that provider](#upload-a-provider)
-1. [Release the version](#release-a-version)
-
-#### Example Requests
-
-
- ```shell
- # Create a new box
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/boxes \
- --data '{ "box": { "username": "myuser", "name": "test" } }'
-
- # Create a new version
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/versions \
- --data '{ "version": { "version": "1.2.3" } }'
-
- # Create a new provider
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/providers \
- --data '{ "provider": { "name": "virtualbox" } }'
-
- # Prepare the provider for upload/get an upload URL
- response=$(curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox/upload)
-
- # Extract the upload URL from the response (requires the jq command)
- upload_path=$(echo "$response" | jq .upload_path)
-
- # Perform the upload
- curl $upload_path --request PUT --upload-file virtualbox-1.2.3.box
-
- # Release the version
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/release \
- --request PUT
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Content-Type" => "application/json",
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- # Create a new box
- api.post "/api/v1/boxes",
- json: { box: { username: "myuser", name: "test" } }
-
- # Create a new version
- api.post "/api/v1/box/myuser/test/versions",
- json: { version: { version: "1.2.3" } }
-
- # Create a new provider
- api.post "/api/v1/box/myuser/test/version/1.2.3/providers",
- json: { provider: { name: "virtualbox" } }
-
- # Prepare the provider for upload
- response = api.get("/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox/upload")
-
- # Extract the upload URL
- upload_path = response.parse['upload_path']
-
- # Upload the box image
- HTTP.put upload_path, body: File.open("virtualbox-1.2.3.box")
-
- # Release the version
- api.put("/api/v1/box/myuser/test/version/1.2.3/release")
- ```
-
-
-
-## Authentication
-
-### Create a token
-
-`POST /api/v1/authenticate`
-
-Creates a new token for the given user.
-
-#### Arguments
-
-* `token`
- * `description` (Optional) - A description of the token.
-* `two_factor`
- * `code` - A two-factor authentication code. Required to use this API method if 2FA is enabled. See [Request a 2FA code](#request-a-2fa-code) if not using a TOTP application.
-* `user`
- * `login` - Username or email address of the user authenticating.
- * `password` - The user's password.
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- --request DELETE \
- https://app.vagrantup.com/api/v1/authenticate
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.delete("/api/v1/authenticate")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-### Request a 2FA code
-
-`POST /api/v1/two-factor/request-code`
-
-Sends a 2FA code to the requested delivery method.
-
-#### Arguments
-
-* `two_factor`
- * `delivery_method` - A valid 2FA delivery method. Currently only `sms` is supported.
-* `user`
- * `login` - Username or email address of the user authenticating.
- * `password` - The user's password.
-
-#### Example Request
-
-
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\n",
- "profile_markdown": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.",
- "boxes": []
-}
-```
-
-## Search
-
-### Search for boxes
-
-`GET /api/v1/search`
-
-#### Arguments
-
-* `q` - (Optional) The search query. Results will match the `username`, `name`, or `short_description` fields for a box. If omitted, the top boxes based on `sort` and `order` will be returned (defaults to "downloads desc").
-* `provider` - (Optional) Filter results to boxes supporting for a specific provider.
-* `sort` - (Optional, default: `"downloads"`) The field to sort results on. Can be one of `"downloads"`, `"created"`, or `"updated"`.
-* `order` - (Optional, default: `"desc"`) The order to return the sorted field in. Can be `"desc"` os `"asc"`.
-* `limit` - (Optional, default: `10`) The number of results to return (max of 100).
-* `page` - (Optional, default: `1`)
-
-#### Example Request
-
-
\n",
- "description_markdown": "A new version",
- "created_at": "2017-10-20T15:23:17.184Z",
- "updated_at": "2017-10-20T15:23:53.355Z",
- "number": "1.2.3",
- "release_url": "https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/release",
- "revoke_url": "https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/revoke",
- "providers": [
- {
- "name": "virtualbox",
- "hosted": false,
- "hosted_token": null,
- "original_url": "https://example.com/virtualbox-1.2.3.box",
- "created_at": "2017-10-20T15:23:35.718Z",
- "updated_at": "2017-10-20T15:23:35.718Z",
- "download_url": "https://vagrantcloud.com/myuser/boxes/test/versions/1.2.3/providers/virtualbox.box"
- }
- ]
- }
- ]
-}
-```
-
-### Create a box
-
-`POST /api/v1/boxes`
-
-#### Arguments
-
-* `box`
- * `username` - The username of the organization that will own this box.
- * `name` - The name of the box.
- * `short_description` - A short summary of the box.
- * `description` - A longer description of the box. Can be formatted with [Markdown][markdown].
- * `is_private` (Optional, default: `true`) - Whether or not this box is private.
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/boxes \
- --data '
- {
- "box": {
- "username": "myuser",
- "name": "test",
- "short_description": "My dev box",
- "description": "My development Vagrant box",
- "is_private": true
- }
- }
- '
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Content-Type" => "application/json",
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.post("/api/v1/boxes", json: {
- box: {
- username: "myuser",
- name: "test",
- short_description: "My dev box",
- description: "My development Vagrant box",
- is_private: true
- }
- })
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a box](#read-a-box).
-
-### Update a box
-
-`PUT /api/v1/box/:username/:name`
-
-#### Arguments
-
-* `box`
- * `name` - The name of the box.
- * `short_description` - A short summary of the box.
- * `description` - A longer description of the box. Can be formatted with [Markdown](https://daringfireball.net/projects/markdown/syntax).
- * `is_private` (Optional, default: `true`) - Whether or not this box is private.
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- --request DELETE \
- https://app.vagrantup.com/api/v1/box/myuser/test
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.delete("/api/v1/box/myuser/test")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a box](#read-a-box).
-
-## Versions
-
-### Read a version
-
-`GET /api/v1/box/:username/:name/version/:version`
-
-#### Example Request
-
-
\n",
- "description_markdown": "A new version",
- "created_at": "2017-10-20T15:23:17.184Z",
- "updated_at": "2017-10-20T15:23:53.355Z",
- "number": "1.2.3",
- "release_url": "https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/release",
- "revoke_url": "https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/revoke",
- "providers": [
- {
- "name": "virtualbox",
- "hosted": false,
- "hosted_token": null,
- "original_url": "https://example.com/virtualbox-1.2.3.box",
- "created_at": "2017-10-20T15:23:35.718Z",
- "updated_at": "2017-10-20T15:23:35.718Z",
- "download_url": "https://vagrantcloud.com/myuser/boxes/test/versions/1.2.3/providers/virtualbox.box"
- }
- ]
-}
-```
-
-### Create a version
-
-`POST /api/v1/box/:username/:name/versions`
-
--> New versions start as `unreleased`. You must create a valid provider before releasing a new version.
-
-#### Arguments
-
-* `version`
- * `version` - The version number of this version.
- * `description` - A description for this version. Can be formatted with [Markdown](https://daringfireball.net/projects/markdown/syntax).
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/versions \
- --data '
- {
- "version": {
- "version": "1.2.3",
- "description": "A new version"
- }
- }
- '
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Content-Type" => "application/json",
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.post("/api/v1/box/myuser/test/versions", json: {
- version: {
- version: "1.2.3",
- description: "A new version"
- }
- })
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a version](#read-a-version).
-
-### Update a version
-
-`PUT /api/v1/box/:username/:name/version/1.2.3`
-
-#### Arguments
-
-* `version`
- * `version` - The version number of this version.
- * `description` - A description for this version. Can be formatted with [Markdown][markdown].
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3 \
- --request PUT \
- --data '
- {
- "version": {
- "version": "1.2.3",
- "description": "A new version"
- }
- }
- '
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Content-Type" => "application/json",
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.put("/api/v1/box/myuser/test/version/1.2.3", json: {
- version: {
- name: "1.2.3",
- description: "A new version"
- }
- })
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a version](#read-a-version).
-
-### Delete a version
-
-`DELETE /api/v1/box/:username/:name/version/:version`
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- --request DELETE \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.delete("/api/v1/box/myuser/test/version/1.2.3")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a version](#read-a-version).
-
-### Release a version
-
-`PUT /api/v1/box/:username/:name/version/1.2.3/release`
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/release \
- --request PUT
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.put("/api/v1/box/myuser/test/version/1.2.3/release")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a version](#read-a-version).
-
-### Revoke a version
-
-`PUT /api/v1/box/:username/:name/version/1.2.3/revoke`
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/revoke \
- --request PUT
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.put("/api/v1/box/myuser/test/version/1.2.3/revoke")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a version](#read-a-version).
-
-## Providers
-
-### Read a provider
-
-`GET /api/v1/box/:username/:name/version/:version/provider/:provider`
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.get("/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-
-#### Example Response
-
-```json
-{
- "name": "virtualbox",
- "hosted": false,
- "hosted_token": null,
- "original_url": "https://example.com/virtualbox-1.2.3.box",
- "created_at": "2017-10-20T15:23:35.718Z",
- "updated_at": "2017-10-20T15:23:35.718Z",
- "download_url": "https://vagrantcloud.com/myuser/boxes/test/versions/1.2.3/providers/virtualbox.box"
-}
-```
-
-### Create a provider
-
-`POST /api/v1/box/:username/:name/version/:version/providers`
-
-#### Arguments
-
-* `provider`
- * `name` - The name of the provider.
- * `url` - A valid URL to download this provider. If omitted, you must [upload](#upload-a-provider) the Vagrant box image for this provider to Vagrant Cloud before the provider can be used.
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/providers \
- --data '
- {
- "provider": {
- "name": "virtualbox",
- "url": "https://example.com/virtualbox-1.2.3.box"
- }
- }
- '
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Content-Type" => "application/json",
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.post("/api/v1/box/myuser/test/version/1.2.3/providers", json: {
- provider: {
- name: "virtualbox",
- url: "https://example.com/virtualbox-1.2.3.box"
- }
- })
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a provider](#read-a-provider).
-
-### Update a provider
-
-`PUT /api/v1/box/:username/:name/version/:version/provider/:provider`
-
-#### Arguments
-
-* `provider`
- * `name` - The name of the provider.
- * `url` - A valid URL to download this provider. If omitted, you must [upload](#upload-a-provider) the Vagrant box image for this provider to Vagrant Cloud before the provider can be used.
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Content-Type: application/json" \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox \
- --request PUT \
- --data '
- {
- "provider": {
- "name": "virtualbox",
- "url": "https://example.com/virtualbox-1.2.3.box"
- }
- }
- '
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Content-Type" => "application/json",
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.put("/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox", json: {
- provider: {
- name: "virtualbox",
- url: "https://example.com/virtualbox-1.2.3.box"
- }
- })
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a provider](#read-a-provider).
-
-### Delete a provider
-
-`DELETE /api/v1/box/:username/:name/version/:version/provider/:provider`
-
-#### Example Request
-
-
- ```shell
- curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- --request DELETE \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.delete("/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox")
-
- if response.status.success?
- # Success, the response attributes are available here.
- p response.parse
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-Response body is identical to [Reading a provider](#read-a-provider).
-
-### Upload a provider
-
-`GET /api/v1/box/:username/:name/version/:version/provider/:provider/upload`
-
-Prepares the provider for upload, and returns a JSON blob containing an `upload_path`.
-
-~> The upload must begin shortly after the response is returned, otherwise the URL will expire. If the URL expires, you can request this same API method again for a new upload URL.
-
-#### Example Request
-
-
- ```shell
- response=$(curl \
- --header "Authorization: Bearer $VAGRANT_CLOUD_TOKEN" \
- https://app.vagrantup.com/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox/upload)
-
- # Requires the jq command
- upload_path=$(echo "$response" | jq .upload_path)
-
- curl \
- $upload_path \
- --request PUT \
- --upload-file virtualbox-1.2.3.box
- ```
-
- ```ruby
- # gem install http, or add `gem "http"` to your Gemfile
- require "http"
-
- api = HTTP.persistent("https://app.vagrantup.com").headers(
- "Authorization" => "Bearer #{ENV['VAGRANT_CLOUD_TOKEN']}"
- )
-
- response = api.get("/api/v1/box/myuser/test/version/1.2.3/provider/virtualbox/upload")
-
- if response.status.success?
- # Success, you can now upload the box image to the returned URL
- upload_path = response.parse['upload_path']
- HTTP.post upload_path, body: File.open("virtualbox-1.2.3.box")
- else
- # Error, inspect the `errors` key for more information.
- p response.code, response.body
- end
- ```
-
-
-
-#### Example Response
-
-```json
-{
- "upload_path": "https://archivist.hashicorp.com/v1/object/630e42d9-2364-2412-4121-18266770468e"
-}
-```
-
-[markdown]: https://daringfireball.net/projects/markdown/syntax
diff --git a/website/source/docs/vagrant-cloud/boxes/create-version.html.md b/website/source/docs/vagrant-cloud/boxes/create-version.html.md
deleted file mode 100644
index 27ed8f8df..000000000
--- a/website/source/docs/vagrant-cloud/boxes/create-version.html.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-layout: "vagrant-cloud"
-page_title: "Create a New Box Version"
-sidebar_current: "vagrant-cloud-boxes-create-version"
----
-
-# Create a New Box Version
-
-To release a new version of a box to the public or to your team:
-
- 1. Click on the name of the box you want to release a new version for.
-
- 2. To the right of the box name, there is a dropdown of all the available
- versions. Click this, and click "Create a New Version"
-
- 3. Enter details for your new version and click "Create Version." Note that
- after clicking create version, the version is not yet _released_.
-
- 4. Click "Create new provider" on this next page to add at least one
- provider to the version. Specify the name of the provider (this is the
- same value you specify to `--provider` when using Vagrant). Then
- enter the URL to a self-hosted box file or upload a box to us.
-
- 5. Once the provider is created, you now have the option to release the
- version by clicking "Release now," or you can add more providers.
-
-Once you click "Release now," that version will be available for installation
-with Vagrant. Before clicking this, Vagrant does not know the version even
-exists.
-
-## Note About Public Boxes
-
-Be aware, when you create and upload a new version artifact on a public box in
-Vagrant Cloud, even if that specific version has not been marked for "release",
-it can be accessible if a user knows the box URL with the new version. Releasing
-a box simply makes it publicly accessible through search, or through reference
-using the `organization/box-name` syntax.
diff --git a/website/source/docs/vagrant-cloud/index.html.md b/website/source/docs/vagrant-cloud/index.html.md
deleted file mode 100644
index 194bbff41..000000000
--- a/website/source/docs/vagrant-cloud/index.html.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-layout: "vagrant-cloud"
-page_title: "Vagrant Cloud"
-sidebar_current: "vagrant-cloud"
----
-
-# Vagrant Cloud
-
-## Support
-
-For Vagrant Cloud questions, feedback, or feature requests, please email
-HashiCorp Support at
-
-support+vagrantcloud@hashicorp.com
-.
-
-[Click here](/docs/vagrant-cloud/support.html) for more support information.
-
-## Features
-
-Vagrant Cloud provides the following features for Vagrant:
-
-- [Vagrant Box Catalog](/docs/vagrant-cloud/boxes/catalog.html)
-- [Vagrant Box Creation](/docs/vagrant-cloud/boxes/create.html)
-- [Vagrant Box Versioning](/docs/vagrant-cloud/boxes/lifecycle.html)
diff --git a/website/source/docs/vagrant-cloud/organizations/create.html.md b/website/source/docs/vagrant-cloud/organizations/create.html.md
deleted file mode 100755
index efdffac63..000000000
--- a/website/source/docs/vagrant-cloud/organizations/create.html.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-layout: "vagrant-cloud"
-page_title: "Create an Organization"
-sidebar_current: "vagrant-cloud-organizations-create"
----
-
-# Create an Organization
-
-To create an organization:
-
-1. Create a personal account. You'll use this to create and administrate the
-organization. You'll be able to add other users as owners of the organization,
-so it won't be tied solely to your account.
-
-1. Visit your new organization page to create the organization.
diff --git a/website/source/docs/vagrantfile/machine_settings.html.md b/website/source/docs/vagrantfile/machine_settings.html.md
deleted file mode 100644
index cdc56817f..000000000
--- a/website/source/docs/vagrantfile/machine_settings.html.md
+++ /dev/null
@@ -1,143 +0,0 @@
----
-layout: "docs"
-page_title: "config.vm - Vagrantfile"
-sidebar_current: "vagrantfile-machine"
-description: |-
- The settings within "config.vm" modify the configuration of the
- machine that Vagrant manages.
----
-
-# Machine Settings
-
-**Config namespace: `config.vm`**
-
-The settings within `config.vm` modify the configuration of the
-machine that Vagrant manages.
-
-## Available Settings
-
-* `config.vm.base_mac` (string) - The MAC address to be assigned to the default
-NAT interface on the guest. _Support for this option is provider dependent._
-
-* `config.vm.base_address` (string) - The IP address to be assigned to the default
-NAT interface on the guest. _Support for this option is provider dependent._
-
-* `config.vm.boot_timeout` (integer) - The time in seconds that Vagrant will wait
-for the machine to boot and be accessible. By default this is 300 seconds.
-
-* `config.vm.box` (string) - This configures what [box](/docs/boxes.html) the
-machine will be brought up against. The value here should be the name
-of an installed box or a shorthand name of a box in
-[HashiCorp's Vagrant Cloud](/docs/vagrant-cloud).
-
-* `config.vm.box_check_update` (boolean) - If true, Vagrant will check for updates to
-the configured box on every `vagrant up`. If an update is found, Vagrant
-will tell the user. By default this is true. Updates will only be checked
-for boxes that properly support updates (boxes from
-[HashiCorp's Vagrant Cloud](/docs/vagrant-cloud)
-or some other versioned box).
-
-* `config.vm.box_download_checksum` (string) - The checksum of the box specified by
-`config.vm.box_url`. If not specified, no checksum comparison will be done.
-If specified, Vagrant will compare the checksum of the downloaded box to
-this value and error if they do not match. Checksum checking is only done
-when Vagrant must download the box. If this is specified, then
-`config.vm.box_download_checksum_type` must also be specified.
-
-* `config.vm.box_download_checksum_type` (string) - The type of checksum specified
-by `config.vm.box_download_checksum` (if any). Supported values are
-currently "md5", "sha1", "sha256", "sha384", and "sha512".
-
-* `config.vm.box_download_client_cert` (string) - Path to a client certificate to
-use when downloading the box, if it is necessary. By default, no client
-certificate is used to download the box.
-
-* `config.vm.box_download_ca_cert` (string) - Path to a CA cert bundle to use when
-downloading a box directly. By default, Vagrant will use the Mozilla CA cert
-bundle.
-
-* `config.vm.box_download_ca_path` (string) - Path to a directory containing
-CA certificates for downloading a box directly. By default, Vagrant will
-use the Mozilla CA cert bundle.
-
-* `config.vm.box_download_options` (map) - A map of extra download options
-to pass to the downloader. For example, a path to a key that the downloader
-should use could be specified as `{key: ""}`. The keys should
-be options supported by `curl` using the unshortened form of the flag. For
-example, use `append` instead of `a`.
-
-* `config.vm.box_download_insecure` (boolean) - If true, then SSL certificates
-from the server will not be verified. By default, if the URL is an HTTPS
-URL, then SSL certs will be verified.
-
-* `config.vm.box_download_location_trusted` (boolean) - If true, then all HTTP redirects will be
-treated as trusted. That means credentials used for initial URL will be used for
-all subsequent redirects. By default, redirect locations are untrusted so credentials
-(if specified) used only for initial HTTP request.
-
-* `config.vm.box_url` (string, array of strings) - The URL that the configured box can be found at.
-If `config.vm.box` is a shorthand to a box in [HashiCorp's Vagrant Cloud](/docs/vagrant-cloud)
-then this value does not need to be specified. Otherwise, it should
-point to the proper place where the box can be found if it is not
-installed. This can also be an array of multiple URLs. The URLs will be tried in
-order.
-
- Note that any client certificates, insecure download settings, and
- so on will apply to all URLs in this list. The URLs can also be local files
- by using the `file://` scheme. For example: "file:///tmp/test.box".
-
-* `config.vm.box_version` (string) - The version of the box to use. This defaults to
-">= 0" (the latest version available). This can contain an arbitrary list
-of constraints, separated by commas, such as: `>= 1.0, < 1.5`. When constraints
-are given, Vagrant will use the latest available box satisfying these
-constraints.
-
-* `config.vm.communicator` (string) - The communicator type to use to connect to the
-guest box. By default this is `"ssh"`, but should be changed to `"winrm"` for
-Windows guests.
-
-* `config.vm.graceful_halt_timeout` (integer) - The time in seconds that Vagrant will
-wait for the machine to gracefully halt when `vagrant halt` is called.
-Defaults to 60 seconds.
-
-* `config.vm.guest` (string, symbol) - The guest OS that will be running within this
-machine. This defaults to `:linux`, and Vagrant will auto-detect the
-proper distro. However, this should be changed to `:windows` for Windows guests.
-Vagrant needs to know this information to perform some guest OS-specific things
-such as mounting folders and configuring networks.
-
-* `config.vm.hostname` (string) - The hostname the machine should have. Defaults
-to nil. If nil, Vagrant will not manage the hostname. If set to a string,
-the hostname will be set on boot. If set, Vagrant will update `/etc/hosts`
-on the guest with the configured hostname.
-
-* `config.vm.ignore_box_vagrantfile` (boolean) - If true, Vagrant will not load the the
-settings found inside a boxes Vagrantfile, if present. Defaults to `false`.
-
-* `config.vm.network` - Configures [networks](/docs/networking/) on
-the machine. Please see the networking page for more information.
-
-* `config.vm.post_up_message` (string) - A message to show after `vagrant up`. This
-will be shown to the user and is useful for containing instructions
-such as how to access various components of the development environment.
-
-* `config.vm.provider` - Configures [provider-specific configuration](/docs/providers/configuration.html),
-which is used to modify settings which are specific to a certain
-[provider](/docs/providers/). If the provider you are configuring
-does not exist or is not setup on the system of the person who runs
-`vagrant up`, Vagrant will ignore this configuration block. This allows
-a Vagrantfile that is configured for many providers to be shared among
-a group of people who may not have all the same providers installed.
-
-* `config.vm.provision` - Configures [provisioners](/docs/provisioning/)
-on the machine, so that software can be automatically installed and configured
-when the machine is created. Please see the page on provisioners for more
-information on how this setting works.
-
-* `config.vm.synced_folder` - Configures [synced folders](/docs/synced-folders/)
-on the machine, so that folders on your host machine can be synced to
-and from the guest machine. Please see the page on synced folders for
-more information on how this setting works.
-
-* `config.vm.usable_port_range` (range) - A range of ports Vagrant can use for
-handling port collisions and such. Defaults to `2200..2250`.
diff --git a/website/source/docs/vagrantfile/ssh_settings.html.md b/website/source/docs/vagrantfile/ssh_settings.html.md
deleted file mode 100644
index 6760848c2..000000000
--- a/website/source/docs/vagrantfile/ssh_settings.html.md
+++ /dev/null
@@ -1,146 +0,0 @@
----
-layout: "docs"
-page_title: "config.ssh - Vagrantfile"
-sidebar_current: "vagrantfile-ssh"
-description: |-
- The settings within "config.ssh" relate to configuring how Vagrant
- will access your machine over SSH. As with most Vagrant settings, the
- defaults are typically fine, but you can fine tune whatever you would like.
----
-
-# SSH Settings
-
-**Config namespace: `config.ssh`**
-
-The settings within `config.ssh` relate to configuring how Vagrant
-will access your machine over SSH. As with most Vagrant settings, the
-defaults are typically fine, but you can fine tune whatever you would like.
-
-## Available Settings
-
-* `config.ssh.compression` (boolean) - If `false`, this setting will not include the
-compression setting when ssh'ing into a machine. If this is not set, it will
-default to `true` and `Compression=yes` will be enabled with ssh.
-
-* `config.ssh.connect_timeout` (integer) - Number of seconds to wait for establishing
-an SSH connection to the guest. Defaults to `15`.
-
-* `config.ssh.config` (string) - Path to a custom ssh_config file to use for configuring
-the SSH connections.
-
-* `config.ssh.dsa_authentication` (boolean) - If `false`, this setting will not include
-`DSAAuthentication` when ssh'ing into a machine. If this is not set, it will
-default to `true` and `DSAAuthentication=yes` will be used with ssh.
-
-* `config.ssh.export_command_template` (string) - The template used to generate
-exported environment variables in the active session. This can be useful
-when using a Bourne incompatible shell like C shell. The template supports
-two variables which are replaced with the desired environment variable key and
-environment variable value: `%ENV_KEY%` and `%ENV_VALUE%`. The default template
-is:
-
- ```ruby
- config.ssh.export_command_template = 'export %ENV_KEY%="%ENV_VALUE%"'
- ```
-
-* `config.ssh.extra_args` (array of strings) - This settings value is passed directly
-into the ssh executable. This allows you to pass any arbitrary commands to do things such
-as reverse tunneling down into the ssh program. These options can either be
-single flags set as strings such as `"-6"` for IPV6 or an array of arguments
-such as `["-L", "8008:localhost:80"]` for enabling a tunnel from host port 8008
-to port 80 on guest.
-
-* `config.ssh.forward_agent` (boolean) - If `true`, agent forwarding over SSH
-connections is enabled. Defaults to false.
-
-* `config.ssh.forward_env` (array of strings) - An array of host environment variables to
-forward to the guest. If you are familiar with OpenSSH, this corresponds to the `SendEnv`
-parameter.
-
- ```ruby
- config.ssh.forward_env = ["CUSTOM_VAR"]
- ```
-
-* `config.ssh.forward_x11` (boolean) - If `true`, X11 forwarding over SSH connections
-is enabled. Defaults to false.
-
-* `config.ssh.guest_port` (integer) - The port on the guest that SSH is running on. This
-is used by some providers to detect forwarded ports for SSH. For example, if
-this is set to 22 (the default), and Vagrant detects a forwarded port to
-port 22 on the guest from port 4567 on the host, Vagrant will attempt
-to use port 4567 to talk to the guest if there is no other option.
-
-* `config.ssh.host` (string) - The hostname or IP to SSH into. By default this is
-empty, because the provider usually figures this out for you.
-
-* `config.ssh.insert_key` (boolean) - By default or if set to `true`, Vagrant will automatically insert
-a keypair to use for SSH, replacing Vagrant's default insecure key inside the machine
-if detected. If you already use private keys for authentication to your guest, or are relying
-on the default insecure key, this option will not be used. If set to `false`,
-Vagrant will not automatically add a keypair to the guest.
-
-* `config.ssh.keep_alive` (boolean) - If `true`, this setting SSH will send keep-alive packets
-every 5 seconds by default to keep connections alive.
-
-* `config.ssh.keys_only` (boolean) - Only use Vagrant-provided SSH private keys (do not use
-any keys stored in ssh-agent). The default value is `true`.
-
-* `config.ssh.paranoid` (boolean) - Perform strict host-key verification. The default value is
-`false`.
-
- __Deprecation:__ The `config.ssh.paranoid` option is deprecated and will be removed
- in a future release. Please use the `config.ssh.verify_host_key` option instead.
-
-* `config.ssh.password` (string) - This sets a password that Vagrant will use to
-authenticate the SSH user. Note that Vagrant recommends you use key-based
-authentication rather than a password (see `private_key_path`) below. If
-you use a password, Vagrant will automatically insert a keypair if
-`insert_key` is true.
-
-* `config.ssh.port` (integer) - The port to SSH into. By default this is port 22.
-
-* `config.ssh.private_key_path` (string, array of strings) - The path to the private
-key to use to SSH into the guest machine. By default this is the insecure private key
-that ships with Vagrant, since that is what public boxes use. If you make
-your own custom box with a custom SSH key, this should point to that
-private key. You can also specify multiple private keys by setting this to be an array.
-This is useful, for example, if you use the default private key to bootstrap
-the machine, but replace it with perhaps a more secure key later.
-
-* `config.ssh.proxy_command` (string) - A command-line command to execute that receives
-the data to send to SSH on stdin. This can be used to proxy the SSH connection.
-`%h` in the command is replaced with the host and `%p` is replaced with
-the port.
-
-* `config.ssh.pty` (boolean) - If `true`, pty will be used for provisioning. Defaults to false.
-
- This setting is an _advanced feature_ that should not be enabled unless
- absolutely necessary. It breaks some other features of Vagrant, and is
- really only exposed for cases where it is absolutely necessary. If you can find
- a way to not use a pty, that is recommended instead.
-
- When pty is enabled, it is important to note that command output will _not_ be
- streamed to the UI. Instead, the output will be delivered in full to the UI
- once the command has completed.
-
-* `config.ssh.remote_user` (string) - The "remote user" value used to replace the `%r`
-character(s) used within a configured `ProxyCommand`. This value is only used by the
-net-ssh library (ignored by the `ssh` executable) and should not be used in general.
-This defaults to the value of `config.ssh.username`.
-
-* `config.ssh.shell` (string) - The shell to use when executing SSH commands from
-Vagrant. By default this is `bash -l`.
-
-* `config.ssh.sudo_command` (string) - The command to use when executing a command
-with `sudo`. This defaults to `sudo -E -H %c`. The `%c` will be replaced by
-the command that is being executed.
-
-* `config.ssh.username` (string) - This sets the username that Vagrant will SSH
-as by default. Providers are free to override this if they detect a more
-appropriate user. By default this is "vagrant", since that is what most
-public boxes are made as.
-
-* `config.ssh.verify_host_key` (string, symbol) - Perform strict host-key verification. The
-default value is `:never`. The other options are `:accept_new_or_local_tunnel`,
-`:accept_new`, or `:always`, which each refer to one of
-[net-ssh](https://net-ssh.github.io/net-ssh/)'s `Net::SSH::Verifiers` subclasses.
diff --git a/website/source/docs/vagrantfile/vagrant_settings.html.md b/website/source/docs/vagrantfile/vagrant_settings.html.md
deleted file mode 100644
index 10b3aa2b6..000000000
--- a/website/source/docs/vagrantfile/vagrant_settings.html.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-layout: "docs"
-page_title: "config.vagrant - Vagrantfile"
-sidebar_current: "vagrantfile-vagrant"
-description: |-
- The settings within "config.vagrant" modify the behavior of Vagrant
- itself.
----
-
-# Vagrant Settings
-
-**Config namespace: `config.vagrant`**
-
-The settings within `config.vagrant` modify the behavior of Vagrant
-itself.
-
-## Available Settings
-
-* `config.vagrant.host` (string, symbol) - This sets the type of host machine
-that is running Vagrant. By default this is `:detect`, which causes Vagrant to
-auto-detect the host. Vagrant needs to know this information in order to perform
-some host-specific things, such as preparing NFS folders if they're enabled.
-You should only manually set this if auto-detection fails.
-
-* `config.vagrant.plugins` - (string, array, hash) - Define plugin, list of
-plugins, or definition of plugins to install for the local project. Vagrant
-will require these plugins be installed and available for the project. If
-the plugins are not available, it will attempt to automatically install
-them into the local project. When requiring a single plugin, a string can
-be provided:
-
- ```ruby
- config.vagrant.plugins = "vagrant-plugin"
- ```
-
- If multiple plugins are required, they can be provided as an array:
-
- ```ruby
- config.vagrant.plugins = ["vagrant-plugin", "vagrant-other-plugin"]
- ```
-
- Plugins can also be defined as a Hash, which supports setting extra options
- for the plugins. When a Hash is used, the key is the name of the plugin, and
- the value is a Hash of options for the plugin. For example, to set an explicit
- version of a plugin to install:
-
- ```ruby
- config.vagrant.plugins = {"vagrant-scp" => {"version" => "1.0.0"}}
- ```
-
- Supported options are:
-
- * `entry_point` - Path for Vagrant to load plugin
- * `sources` - Custom sources for downloading plugin
- * `version` - Version constraint for plugin
-
-* `config.vagrant.sensitive` - (string, array) - Value or list of values that
-should not be displayed in Vagrant's output. Value(s) will be removed from
-Vagrant's normal UI output as well as logger output.
-
- ```ruby
- config.vagrant.sensitive = ["MySecretPassword", ENV["MY_TOKEN"]]
- ```
diff --git a/website/source/docs/vagrantfile/winrm_settings.html.md b/website/source/docs/vagrantfile/winrm_settings.html.md
deleted file mode 100644
index 2edb281f6..000000000
--- a/website/source/docs/vagrantfile/winrm_settings.html.md
+++ /dev/null
@@ -1,79 +0,0 @@
----
-layout: "docs"
-page_title: "config.winrm - Vagrantfile"
-sidebar_current: "vagrantfile-winrm"
-description: |-
- The settings within "config.winrm" relate to configuring how Vagrant
- will access your Windows guest over WinRM. As with most Vagrant settings, the
- defaults are typically fine, but you can fine tune whatever you would like.
----
-
-# WinRM Settings
-
-**Config namespace: `config.winrm`**
-
-The settings within `config.winrm` relate to configuring how Vagrant
-will access your Windows guest over WinRM. As with most Vagrant settings, the
-defaults are typically fine, but you can fine tune whatever you would like.
-
-These settings are only used if you've set your communicator type to `:winrm`.
-
-## Available Settings
-
-* `config.winrm.username` (string) - This sets the username that Vagrant will use
-to login to the WinRM web service by default. Providers are free to override
-this if they detect a more appropriate user. By default this is "vagrant,"
-since that is what most public boxes are made as.
-
-* `config.winrm.password` (string) - This sets a password that Vagrant will use to
-authenticate the WinRM user. By default this is "vagrant," since that is
-what most public boxes are made as.
-
-* `config.winrm.host` (string) - The hostname or IP to connect to the WinRM service.
-By default this is empty, because the provider usually figures this out for
-you.
-
-* `config.winrm.port` (integer) - The WinRM port to connect to, by default 5985. If ssl
-is enabled, the default port is 5986.
-
-* `config.winrm.guest_port` (integer) - The port on the guest that WinRM is running on.
-This is used by some providers to detect forwarded ports for WinRM. For
-example, if this is set to 5985 (the default), and Vagrant detects a forwarded
-port to port 5985 on the guest from port 4567 on the host, Vagrant will attempt
-to use port 4567 to talk to the guest if there is no other option.
-
-* `config.winrm.transport` (symbol)- The transport used for WinRM communication.
-Valid settings include: `:negotiate`, `:ssl`, and `:plaintext`. The default is `:negotiate`.
-
-* `config.winrm.basic_auth_only` (boolean) - Whether to use Basic Authentication. Defaults
-to `false`. If set to `true` you should also use the `:plaintext` transport setting and
-the Windows machine must be configured appropriately.
-
- **Note:** It is strongly recommended that you only use basic authentication for
- debugging purposes. Credentials will be transferred in plain text.
-
-* `config.winrm.execution_time_limit` (string) - The amount of time that is allowed to
-complete task. This defaults to "PT2H", that is 2 hours.
-
-* `config.winrm.ssl_peer_verification` (boolean) - When set to `false` ssl certificate
-validation is not performed. By default this is true.
-
-* `config.winrm.timeout` (integer) - The maximum amount of time to wait for a response
-from the endpoint. This defaults to 1800 seconds. Note that this will not "timeout"
-commands that exceed this amount of time to process, it just requires the endpoint to
-report the status of the command before the given amount of time passes.
-
-* `config.winrm.max_tries` (integer) - The maximum number of times to retry opening
-a shell after failure. This defaults to 20.
-
-* `config.winrm.retry_delay` (integer) - The amount of time to wait between retries and
-defaults to 2 seconds.
-
-* `config.winrm.codepage` (string) - The WINRS_CODEPAGE which is the client's console
-output code page. By default this is not set by Vagrant.
-
- **Note:** Versions of Windows older than Windows 7/Server 2008 R2 may exhibit
- undesirable behavior using the default UTF-8 codepage. When using these older
- versions of Windows, its best to use the native code page of the server's locale.
- For example, en-US servers will have a codepage of 437. The Windows `chcp` command
- can be used to determine the value of the native codepage.
diff --git a/website/source/docs/vagrantfile/winssh_settings.html.md b/website/source/docs/vagrantfile/winssh_settings.html.md
deleted file mode 100644
index a155ef2e9..000000000
--- a/website/source/docs/vagrantfile/winssh_settings.html.md
+++ /dev/null
@@ -1,77 +0,0 @@
----
-layout: "docs"
-page_title: "config.winssh - Vagrantfile"
-sidebar_current: "vagrantfile-winssh"
-description: |-
- The settings within "config.winssh" relate to configuring how Vagrant
- will access your machine over Windows OpenSSH. As with most Vagrant settings, the
- defaults are typically fine, but you can fine tune whatever you would like.
----
-
-# WinSSH
-
-The WinSSH communicator is built specifically for the Windows native
-port of OpenSSH. It does not rely on a POSIX-like environment which
-removes the requirement of extra software installation (like cygwin)
-for proper functionality.
-
-For more information, see the [Win32-OpenSSH project page](https://github.com/PowerShell/Win32-OpenSSH/).
-
-# WinSSH Settings
-
-The WinSSH communicator uses the same connection configuration options
-as the SSH communicator. These settings provide the information for the
-communicator to establish a connection to the VM.
-
-The configuration options below are specific to the WinSSH communicator.
-
-**Config namespace: `config.winssh`**
-
-## Available Settings
-
-* `config.winssh.forward_agent` (boolean) - If `true`, agent forwarding over SSH
-connections is enabled. Defaults to false.
-
-* `config.winssh.forward_env` (array of strings) - An array of host environment
-variables to forward to the guest. If you are familiar with OpenSSH, this corresponds
-to the `SendEnv` parameter.
-
- ```ruby
- config.winssh.forward_env = ["CUSTOM_VAR"]
- ```
-* `config.winssh.proxy_command` (string) - A command-line command to execute that
-receives the data to send to SSH on stdin. This can be used to proxy the SSH connection.
-`%h` in the command is replaced with the host and `%p` is replaced with the port.
-
-* `config.winssh.keep_alive` (boolean) - If `true`, this setting SSH will send keep-alive
-packets every 5 seconds by default to keep connections alive.
-
-* `config.winssh.shell` (string) - The shell to use when executing SSH commands from
-Vagrant. By default this is `powershell`. Valid values are `"cmd"` or `"powershell"`.
-When the WinSSH provider is enabled, this shell will only be used internally. When
-running `vagrant ssh` you will be provided the shell configured by the guest.
-
-* `config.winssh.export_command_template` (string) - The template used to generate
-exported environment variables in the active session. This can be useful
-when using a Bourne incompatible shell like C shell. The template supports
-two variables which are replaced with the desired environment variable key and
-environment variable value: `%ENV_KEY%` and `%ENV_VALUE%`. The default template
-for a `cmd` configured shell is:
-
- ```ruby
- config.winssh.export_command_template = 'set %ENV_KEY%="%ENV_VALUE%"'
- ```
-
- The default template for a `powershell` configured shell is:
-
- ```ruby
- config.winssh.export_command_template = '$env:%ENV_KEY%="%ENV_VALUE%"'
- ```
-
-* `config.winssh.sudo_command` (string) - The command to use when executing a command
-with `sudo`. This defaults to `%c` (assumes vagrant user is an administrator
-and needs no escalation). The `%c` will be replaced by the command that is
-being executed.
-
-* `config.winssh.upload_directory` (string) - The upload directory used on the guest
-to store scripts for execute. This is set to `C:\Windows\Temp` by default.
diff --git a/website/source/downloads.html.erb b/website/source/downloads.html.erb
deleted file mode 100644
index a94767e5e..000000000
--- a/website/source/downloads.html.erb
+++ /dev/null
@@ -1,62 +0,0 @@
----
-layout: "downloads"
-sidebar_current: "downloads"
-page_title: "Download"
-description: |-
- This page lists all the available downloads for Vagrant.
----
-
-
Download Vagrant
-
-
-
-
-
- Below are the available downloads for the latest version of Vagrant
- (<%= latest_version %>). Please download the proper package for your
- operating system and architecture.
-
- HashiCorp Vagrant provides the same, easy workflow regardless of your role as
- a developer, operator, or designer. It leverages a declarative
- configuration file which describes all your software requirements,
- packages, operating system configuration, users, and more.
-
-
-
-
-
-
-
-
- $ vagrant init hashicorp/bionic64
-
- $ vagrant up
- Bringing machine 'default' up with 'virtualbox' provider...
- ==> default: Importing base box 'hashicorp/bionic64'...
- ==> default: Forwarding ports...
- default: 22 (guest) => 2222 (host) (adapter 1)
- ==> default: Waiting for machine to boot...
-
- $ vagrant ssh
- vagrant@bionic64:~$ _
-
-
-
-
-
-
-
-
-
-
-
-
- <%= inline_svg "parity.svg" %>
-
-
-
- Enforce Consistency
-
Production Parity
-
- The cost of fixing a bug exponentially increases the closer it gets to
- production. Vagrant aims to mirror production environments by
- providing the same operating system, packages, users, and
- configurations, all while giving users the flexibility to use their
- favorite editor, IDE, and browser. Vagrant also integrates with your
- existing configuration management tooling like Ansible, Chef, Docker, Puppet
- or Salt, so you can use the same scripts to configure Vagrant as
- production.
-
-
-
-
-
-
-
-
-
-
- Cross-Platform
-
Works where you work
-
- Vagrant works on Mac, Linux, Windows, and more. Remote development
- environments force users to give up their favorite editors and
- programs. Vagrant works on your local system with the tools you're
- already familiar with. Easily code in your favorite text editor, edit
- images in your favorite manipulation program, and debug using your
- favorite tools, all from the comfort of your local laptop.
-
- Vagrant is trusted by thousands of developers, operators, and
- designers everyday. Here are just a few of the organizations that
- choose Vagrant to automate their development environments, in
- lightweight and reproducible ways.
-
- <% end %>
-
- <%= yield %>
-<% end %>
diff --git a/website/source/microsoft-tile.xml.builder b/website/source/microsoft-tile.xml.builder
deleted file mode 100644
index d51f1273f..000000000
--- a/website/source/microsoft-tile.xml.builder
+++ /dev/null
@@ -1,14 +0,0 @@
----
-layout: false
-noindex: true
----
-
-xml.instruct!
-xml.browserconfig do
- xml.msapplication do
- xml.tile do
- xml.square150x150logo src: image_path("favicons/mstile-150x150.png")
- xml.TileColor "#2D89EF"
- end
- end
-end
diff --git a/website/source/robots.txt b/website/source/robots.txt
deleted file mode 100644
index 190c6ce04..000000000
--- a/website/source/robots.txt
+++ /dev/null
@@ -1,8 +0,0 @@
----
-layout: false
-noindex: true
----
-
-User-agent: *
-Disallow: /404
-Disallow: /500
diff --git a/website/source/security.html.erb b/website/source/security.html.erb
deleted file mode 100644
index c3342dc31..000000000
--- a/website/source/security.html.erb
+++ /dev/null
@@ -1,33 +0,0 @@
----
-layout: inner
-sidebar_current: "about-security"
-page_title: "Security"
-description: |-
- Vagrant takes security very seriously. Please responsibly disclose any security vulnerabilities found and we'll handle it quickly.
----
-
-
Vagrant Security
-
-
- We understand that many users place a high level of trust in HashiCorp
- and the tools we build. We apply best practices and focus on security to
- make sure we can maintain the trust of the community.
-
-
-
- We deeply appreciate any effort to disclose vulnerabilities responsibly.
-
-
-
- If you would like to report a vulnerability, please see the HashiCorp security
- page, which has the proper email to communicate with as well as our
- PGP key. Please do not create a GitHub issue for security
- concerns.
-
-
-
- If you need to report a non-security related bug, please open and issue
- on the Vagrant
- GitHub repository.
-
diff --git a/website/source/sitemap.xml.builder b/website/source/sitemap.xml.builder
deleted file mode 100644
index a08b5b0e3..000000000
--- a/website/source/sitemap.xml.builder
+++ /dev/null
@@ -1,19 +0,0 @@
----
-layout: false
----
-
-xml.instruct!
-xml.urlset 'xmlns' => "http://www.sitemaps.org/schemas/sitemap/0.9" do
- sitemap
- .resources
- .select { |page| page.path =~ /\.html/ }
- .select { |page| !page.data.noindex }
- .each do |page|
- xml.url do
- xml.loc File.join(base_url, page.url)
- xml.lastmod Date.today.to_time.iso8601
- xml.changefreq page.data.changefreq || "monthly"
- xml.priority page.data.priority || "0.5"
- end
- end
-end
diff --git a/website/source/vmware/downloads.html.erb b/website/source/vmware/downloads.html.erb
deleted file mode 100644
index 7956e5442..000000000
--- a/website/source/vmware/downloads.html.erb
+++ /dev/null
@@ -1,60 +0,0 @@
----
-layout: "downloads"
-sidebar_current: "vmware"
-page_title: "Vagrant VMware Utility Download"
-description: |-
- This page lists all the available downloads for the Vagrant VMware Utility.
----
-
-
Download Vagrant VMware Utility
-
-
-
-
-
- Below are the available downloads for the latest version of the Vagrant
- VMware Utility (<%= vmware_utility_version %>). Please download the proper package
- for your operating system and architecture.
-
diff --git a/website/source/vmware/eula.html.md b/website/source/vmware/eula.html.md
deleted file mode 100644
index 77edd565b..000000000
--- a/website/source/vmware/eula.html.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-layout: "vmware"
-sidebar_current: "vmware-eula"
-page_title: "End User License Agreement (EULA) - VMware Plugin"
-description: |-
- This page documents the End User License Agreement (EULA) for the Vagrant
- VMware plugin.
----
-
-# EULA
-
-
-1\. Grant of License and Restrictions. Subject to the terms hereof, payment of all fees, and any applicable user/use limitations, Company grants Licensee a nonsublicensable, nonexclusive, right to use the current version of the licensed product in object code form only. ("Product") only in accordance with Company's applicable user documentation and only for up to the number of developers ("Developers") specified on the order form and/or download page, provided each Developer may use the Product on two (2) machines. Except for one copy solely for back-up purposes, Licensee may possess only the number of copies of any Product as has been expressly authorized by Company); Company retains ownership of all copies and Licensee will maintain the copyright notice and any other notices that appear on the Product on any copies and any media. Licensee will not (and will not allow any third party to) (i) reverse engineer or attempt to discover any source code or underlying ideas or algorithms of any Product (except to the extent that applicable law prohibits reverse engineering restrictions), (ii) provide, lease, lend, disclose, use for timesharing or service bureau purposes, or otherwise use or allow others to use for the benefit of any third party, any Product (except as expressly and specifically authorized by Company), (iii) possess or use any Product, or allow the transfer, transmission, export, or re-export of any Product or portion thereof in violation of any export control laws or regulations administered by the U.S. Commerce Department, U.S. Treasury Department's Office of Foreign Assets Control, or any other government agency, (iv) disclose to any third party any benchmarking or comparative study involving any Product or (v) modify any Product. Prior to disposing of any media or apparatus containing any part of the Product, Licensee shall completely destroy any Product contained therein. All the limitations and restrictions on Products in this Agreement also apply to documentation and screens. Further, a license granted on an evaluation basis may be used for purposes of evaluation for a full license only, and not for any productive use. LICENSEE ACKNOWLEDGES THAT THE PRODUCT MAY INCLUDE FEATURES TO PREVENT USE AFTER THE APPLICABLE LICENSE PERIOD AND/OR USE INCONSISTENT HEREWITH. Licensee acknowledges that Product may be distributed alongside or contain or use certain third party software ("Third Party Software"). THIRD PARTY SOFTWARE IS (IN ADDITION TO THE TERMS AND CONDITIONS OF THIS AGREEMENT), SUBJECT TO AND GOVERNED BY (AND LICENSEE AGREES TO, AND WILL INDEMNIFY COMPANY FOR NONCOMPLIANCE WITH) THE RESPECTIVE LICENSES FOR THE THIRD PARTY SOFTWARE AVAILABLE AT https://www.vagrantup.com.
-
-2\. Fees and Payment. Within thirty days after first receipt of the Product or the date(s) otherwise expressly agreed by Company, Licensee shall pay Company all applicable fees for any authorized copies or uses of Product (if any) and/or such other fees as have been expressly agreed to by Company ("License Fees"). In addition, without limiting Company's remedies, if Licensee makes or uses copies, or has users/uses, that are not authorized hereunder, it will so report to Company and will pay any applicable additional license equal to Company's then current standard fees for the license of such extra copies and users/uses (from time to time upon request, Company will be entitled to audit or have audited all systems and records relevant to assure compliance with the foregoing; any audit showing noncompliance will be at Licensee's expense). Licensee shall pay Company any upgrade fees as required by the Company in connection with major version releases. Any payments more than thirty (30) days overdue will bear a late payment fee of 1.5% per month, or, if lower, the maximum rate allowed by law. In addition, Licensee will pay all taxes, shipping, duties, withholdings, backup withholding and the like; when Company has the legal obligation to pay or collect such taxes, the appropriate amount shall paid by Licensee directly to Company.
-
-3\. Termination. All licenses will terminate thirty days (ten in the case of non-payment and immediately in the case of a breach of Section 1) after notice of any breach of this Agreement by Licensee that remains uncured at the end of such notice period. A license will also terminate upon the expiration of any applicable license period specified for the applicable Product on the Company price list or such other license period as have been expressly agreed to by Company, provided that in any case a free evaluation license will have a license period of not more than ninety (90) days. Upon any termination, Licensee shall immediately cease all use of all affected Products and return or destroy all copies of all affected Products and all portions thereof and so certify to Company. Except as otherwise expressly provided herein, the terms hereof shall survive any termination. Termination is not an exclusive remedy and all other remedies will be available whether or not termination occurs.
-
-4\. Embedded Reporting / Compliance Routine; Data Access and Use. Licensee acknowledges that Products may contain automated reporting routines that will automatically identify and analyze certain aspects of use and performance of Products and/or the systems on which they are installed, as well as the operator and operating environment (including problems and issues that arise in connection therewith), and provide reporting to Company. Provided it does not identify Licensee, Company will be free to use for development, diagnostic and corrective purposes any data and information it so collects relating to diagnosis, problems, systems, performance, use or functionality, and may allow others to do so.
-
-5\. Indemnification. Except in the case of a free evaluation license, Company shall hold Licensee harmless from liability to third parties resulting from infringement by a Product of any United States patent issued sixty (60) days or more before delivery of such Product or any copyright or misappropriation of any trade secret, provided Company is promptly notified of any and all threats, claims and proceedings related thereto and given reasonable assistance and the opportunity to assume sole control over defense and settlement; Company will not be responsible for any settlement it does not approve. The foregoing obligations do not apply with respect to a Product or portions or components thereof (i) not created by Company (e.g., Third Party Software), (ii) made in whole or in part in accordance to Licensee specifications, (iii) that are modified after delivery by Company, (iv) combined with other products, processes or materials where the alleged infringement relates to such combination, (v) where Licensee continues allegedly infringing activity after being notified thereof or after being informed of modifications that would have avoided the alleged infringement, or (vi) where Licensee's use of such Product is not strictly in accordance herewith. Licensee will indemnify Company from all damages, costs, settlements, attorneys' fees and expenses related to (I) any claim of infringement or misappropriation excluded from Company's indemnity obligation by the preceding sentence, or (II) any other claim in connection with the Product or the use or distribution thereof.
-
-6\. Warranty Disclaimer. ALL PRODUCTS ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND FROM ANYONE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT. FURTHER, COMPANY DOES NOT WARRANT RESULTS OF USE OR THAT THE PRODUCTS ARE BUG FREE OR THAT THE PRODUCT'S USE WILL BE UNINTERRUPTED. SOME STATES DO NOT ALLOW LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY LASTS, SO THE ABOVE LIMITATION MAY NOT APPLY TO YOU.
-
-7\. Limitation of Liability. NOTWITHSTANDING ANYTHING ELSE HEREIN OR OTHERWISE, AND EXCEPT FOR BODILY INJURY, NEITHER COMPANY NOR ANY LICENSOR SHALL BE LIABLE OR OBLIGATED WITH RESPECT TO THE SUBJECT MATTER HEREOF OR UNDER ANY CONTRACT, NEGLIGENCE, STRICT LIABILITY OR OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY AMOUNTS IN EXCESS IN THE AGGREGATE OF THE FEES PAID TO IT HERE¬UNDER WITH RESPECT TO THE APPLICABLE PRODUCT DURING THE SIX MONTH PERIOD PRIOR TO THE CAUSE OF ACTION OR (II) FOR ANY COST OF PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY, SERVICES OR RIGHTS; (III) FOR ANY INCIDENTAL OR CONSEQUENTIAL DAMAGES; (IV) FOR INTERRUPTION OF USE OR LOSS OR CORRUPTION OF DATA; OR (V) FOR ANY MATTER BEYOND ITS REASONABLE CONTROL. THE PRODUCT IS NOT DESIGNED, MANUFACTURED, OR INTENDED FOR USE IN HAZARDOUS ENVIRONMENTS REQUIRING FAIL-SAFE PERFORMANCE WHERE THE FAILURE OF THE PRODUCT COULD LEAD DIRECTLY TO DEATH, PERSONAL INJURY, OR SIGNIFICANT PHYSICAL OR ENVIRONMENTAL DAMAGE ("HIGH RISK ACTIVITIES"). USE OF THE PRODUCT IN HIGH RISK ACTIVITIES IS NOT AUTHORIZED. THE PARTIES AGREE THAT THIS SECTION 7 REPRESENTS A REASONABLE ALLOCATION OF RISK AND THAT LICENSOR WOULD NOT PROCEED IN THE ABSENCE OF SUCH ALLOCATION. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATION AND EXCLUSION MAY NOT APPLY TO YOU.
-
-8\. Miscellaneous. Neither this arrangement nor the licenses granted hereunder are assignable or transferable by Licensee (and any attempt to do so shall be void). Company may assign this Agreement and/or any of its rights and obligations hereunder without consent. The provisions hereof are for the benefit of the parties only and not for any other person or entity. Any notice, report, approval, authorization, agreement or consent required or permitted hereunder shall be in writing; notices shall be sent to the address the applicable party has or may provide by written notice or, if there is no such address, the most recent address the party giving notice can locate using reasonable efforts. No failure or delay in exercising any right hereunder will operate as a waiver thereof, nor will any partial exercise of any right or power hereunder preclude further exercise. If any provision shall be adjudged by any court of competent jurisdiction to be unenforceable or invalid, that provision shall be limited or eliminated to the minimum extent necessary so that this arrangement shall otherwise remain in full force and effect and enforceable. This agreement shall be deemed to have been made in, and shall be construed pursuant to the laws of the State of California and the United States without regard to conflicts of laws provisions thereof, and without regard to the United Nations Convention on the International Sale of Goods or the Uniform Computer Information Transactions Act. This is the complete and exclusive statement of the mutual understanding of the parties and supersedes and cancels all previous written and oral agreements and communications relating to the subject matter hereof and any waivers or amendments shall be effective only if made in writing; however, any pre-printed or standard terms of any purchase order, confirmation, or similar form, even if signed by the parties after the effectiveness hereof, shall have no force or effect. The substantially prevailing party in any action to enforce this agreement will be entitled to recover its attorney's fees and costs in connection with such action. As defined in FAR section 2.101, DFAR section 252.227-7014(a)(1) and DFAR section 252.227-7014(a)(5) or otherwise, all Products and accompanying documentation provided by Company are "commercial items," "commercial computer software" and/or "commercial computer software documentation." Consistent with DFAR section 227.7202 and FAR section 12.212, any use, modification, reproduction, release, performance, display, disclosure or distribution thereof by or for the U.S. Government shall be governed solely by these terms and shall be prohibited except to the extent expressly permitted by these terms.
-
-
-Download as [PDF](https://s3.amazonaws.com/hc-public/sales/EULA_standalone.pdf).
diff --git a/website/source/vmware/index.html.erb b/website/source/vmware/index.html.erb
deleted file mode 100644
index 617073665..000000000
--- a/website/source/vmware/index.html.erb
+++ /dev/null
@@ -1,329 +0,0 @@
----
-page_title: "VMware Integration"
-description: |-
- The Vagrant VMware plugin provides rock-solid stability, improved performance,
- and dedicated support for using VMware and Vagrant.
----
-
-
-
-
- Use Vagrant with VMware for improved stability, performance, and support.
-
-
- Buy Now
- Learn More
-
-
-
-
-
-
-
-
-
- Benefits
-
VMware Makes Your Life Better
-
-
-
-
-
Same Vagrant Workflow
-
- vagrant up, vagrant ssh, vagrant destroy -
- the same Vagrant workflow you know and love. Vastly improve your
- work environments without having to re-educate your team.
-
-
-
-
Unparalleled Performance
-
- VMware screams, with industry-leading performance1
- based on the same hypervisor technology in use by 98% of the Fortune 500.
- Get all the performance gains paired with the ease of use of Vagrant.
-
-
-
-
-
-
Rock Solid Stability
-
- The VMware hypervisor has been in production use since 1999.
- All their products share the same, robust core that powers
- the world's largest organizations. With the VMware provider, Vagrant
- now runs on the strength of the same foundation.
-
-
-
-
-
Uncompromised Portability
-
- VMware virtual machines run on Mac OS X, Windows, and Linux.
- Vagrant provides support for both VMware Fusion (Mac OS X) and
- VMware Workstation (Linux and Windows), which are able to run
- the same virtual machines across multiple platforms.
-
-
-
-
-
-
Professional Support
-
- Every purchase of the Vagrant VMware provider comes with
- direct email support. VMware products themselves are eligible for
- professional support from VMware. Someone always has your back
- in case things are not working as well as they should be.
-
-
-
-
-
Vagrant ♥ Open Source
-
- Vagrant is free and open source. While the VMware providers
- are not, the revenue is used to continue to develop, support,
- and grow Vagrant and the community around it.
-
- A single seat can be used on two computers (such as a desktop
- and a laptop) for a single person. The license is valid forever
- with access to free maintenance updates. Future major updates may
- require an upgrade fee.
-
-
- Enter the number of seats you wish to purchase below. Then,
- click the buy button and complete the order. Instructions to
- install and download the software will be emailed to you.
-
-
-
-
-
-
-
-
-
-
-
-
-
- The provider license does not include a license to the VMware
- software, which must be purchased separately. If you are buying over
- 150 licenses, contact sales@hashicorp.com for volume
- pricing. By purchasing this license, you agree to the
- EULA and the
- HashiCorp Privacy Policy and
- Terms of Service.
-
-
- Previous plugin versions may not support the latest VMware products.
- Please visit the license
- upgrade center to check if your license requires an upgrade before
- you upgrade your VMware products.
-
Do you offer a trial for the Vagrant VMware plugins?
-
- We do not offer a trial mechanism at this time, but we do offer a
- 30-day, no questions asked, 100% money-back guarantee. If you are
- not satisfied with the product, contact us within 30 days and you
- will receive a full refund.
-
-
-
-
-
-
Do you offer educational discounts on the Vagrant VMware plugins?
-
- We offer an academic discount of 10% for the Vagrant VMware plugins.
- However, we require proof that you are a current student or employee
- in academia. Please contact support with any one of
- the following forms of proof:
-
-
-
A picture of your current university ID
-
An email from your official .edu school email address
-
A copy of something on university letterhead indicating you are currently enrolled as a student
-
-
-
-
-
-
-
I already own a license, am I eligible for an upgrade?
-
- Existing license holders may check their upgrade eligibility by
- visiting the license upgrade center.
- If you are eligible for an upgrade, the system will generate a
- unique discount code that may be used when purchasing the new
- license.
-
-
-
-
-
-
Do I need to pay for upgrades to my license?
-
- The Vagrant VMware plugin licenses are valid for specific VMware
- product versions at the time of purchase. When new versions of
- VMware products are released, significant changes to the plugin code
- are often required to support this new version. For this reason, you
- may need to upgrade your current license to work with the new
- version of the VMware product. Customers can check their license
- upgrade eligibility by visiting the
- License Upgrade Center
- and entering the email address with which they made the original
- purchase.
-
-
- Please note: your existing license will continue to work with all
- previous versions of the VMware products. If you do not wish to
- update at this time, you can rollback your VMware installation to an
- older version.
-
-
-
-
-
-
Where can I find the EULA for the Vagrant VMware Plugins?
- All our reseller information can be found on the
- Reseller Information page.
-
-
-
-
-
-
Do you offer bulk/volume discounts for the Vagrant VMware plugins?
-
- We certainly do! Email support
- with the number of licenses you need and we can give you bulk pricing
- information. Please note that bulk pricing requires the purchase of
- at least 150 seats.
-
-
-
-
-
-
Does this include the VMware software?
-
- The Vagrant VMware Plugin requires the separate purchase of VMware
- Fusion/Workstation from VMware. The VMware product is not bundled
- with the plugin.
-
-
-
-
-
-
Why is the Vagrant VMware plugin not working with my trial version of VMware Fusion/Workstation?
-
- While we have not been able to isolate to a specific issue or cause,
- the Vagrant VMware Fusion and Vagrant VMware Workstation plugins are
- sometimes incompatible with the trial versions of the VMware
- products.
-
-
- Please try restarting your computer and running the VMware software
- manually. Occasionally you must accept the license agreement before
- VMware will run. If you do not see any errors when opening the
- VMware GUI, you may need to purchase the full version to use the
- plugin. We apologize for the inconvenience.
-
-
-
-
-
-
Can I use VMware Workstation Player?
-
- Some features of the Vagrant VMware Workstation plugin will
- work with VMware Player, but it is not officially supported. Vagrant
- interacts with VMware via the VMware API, and some versions of
- VMware Workstation Player do not support those APIs. When in doubt,
- please purchase VMware Workstation Pro to use all the features
- supported by the integration.
-
-
-
-
-
-
Do I need VMware Fusion/Workstation Pro or just the regular version?
-
- The Vagrant VMware plugin is compatible with both the regular and
- Pro versions of VMware Fusion and VMware Workstation. However, some
- advanced features (such as linked clones), are only supported by the
- Pro versions of the VMware software.
-
-
- Please consult the VMware documentation to determine which features
- are supported by the Pro and non-Pro versions to determine which
- product you need to purchase.
-
-We at HashiCorp, Inc. ("Company," "we," "us," "our") know that our users ("you," "your") care about how your personal information is used and shared, and we take your privacy seriously. Please read the following to learn more about our Privacy Policy. By visiting or using the Website or Services in any manner, you acknowledge that you accept the practices and policies outlined in this Privacy Policy, and you hereby consent that we will collect, use, and share your information in the following ways. Any capitalized terms used herein without definition shall have the meaning given to them in the Company Terms of Use.
-
-I. WHAT DOES THIS PRIVACY POLICY COVER?
-
-This Privacy Policy covers our treatment of personally identifiable information ("Personal Information") that we gather when you are accessing or using our Services. This policy does not apply to the practices of companies that we do not own or control, or to individuals that we do not employ or manage.
-
-We do not knowingly collect or solicit personal information from anyone under the age of 13 or knowingly allow such persons to register for the Services (as that term is defined in our Terms of Use). If you are under 13, please do not attempt to register for the Services or send any information about yourself to us, including your name, address, telephone number, or email address. No one under age 13 may provide any personal information to us or on the Services. In the event that we learn that we have collected personal information from a child under age 13 without verification of parental consent, we will delete that information as quickly as possible. If you believe that we might have any information from or about a child under 13, please contact us at support@hashicorp.com.
-
-We gather various types of Personal Information from our users, as explained more fully below. We may use this Personal Information to personalize and improve our services, to allow our users to set up a user account and profile, to contact users, to fulfill your requests for certain products and services, to analyze how users utilize the Services, and as otherwise set forth in this Privacy Policy. We may share certain types of Personal Information with third parties, as described below.
-
-II. WHAT INFORMATION DOES COMPANY COLLECT?
-
-A. Information You Provide to Us:
-
-We receive and store any information you knowingly provide to us. For example, we collect Personal Information such as your name, email address, and browser information,. You can choose not to provide us with certain information, but then you may not be able to register with us or to take advantage of some of our features. We may anonymize your Personal Information so that you cannot be individually identified, and provide that information to our partners.
-
-If you have provided us with a means of contacting you, we may use such means to communicate with you. For example, we may send you promotional offers on behalf of other businesses, or communicate with you about your use of the Services. Also, we may receive a confirmation when you open a message from us. This confirmation helps us make our communications with you more interesting and improve our services. If you do not want to receive communications from us, please indicate your preference by emailing us at support@hashicorp.com. Please note that if you do not want to receive legal notices from us, those legal notices will still govern your use of the Services, and you are responsible for reviewing such legal notices for changes.
-
-B. Information Collected Automatically:
-
-• Whenever you interact with our Services, we automatically receive and record information on our server logs from your browser including your IP address, "cookie" information, and the page you requested. "Cookies" are identifiers we transfer to your computer or mobile device that allow us to recognize your browser or mobile device and tell us how and when pages and features in our Services are visited and by how many people. You may be able to change the preferences on your browser or mobile device to prevent or limit your computer or device's acceptance of cookies, but this may prevent you from taking advantage of some of our features. Our advertising partners may also transmit cookies to your computer or device, when you click on ads that appear on the Services. Also, if you click on a link to a third party website, such third party may also transmit cookies to you. This Privacy Policy does not cover the use of cookies by any third parties.
-
-• When we collect usage information (such as the numbers and frequency of visitors to the Website), we only use this data in aggregate form, and not in a manner that would identify you personally. For example, this aggregate data tells us how often users use parts of the Services, so that we can make the Services appealing to as many users as possible. We may also provide this aggregate information to our partners; our partners may use such information to understand how often and in what ways people use our Services, so that they, too, can provide you with an optimal experience. We never disclose aggregate information to a partner in a manner that would identify you personally.
-
-III. WILL COMPANY SHARE ANY OF THE PERSONAL INFORMATION IT RECEIVES?
-
-We neither rent nor sell your Personal Information in personally identifiable form to anyone. However, we do share your Personal Information with third parties as described in Section II and in this Section:
-
-A. Affiliated Businesses and Third Party Websites We Do Not Control: In certain situations, businesses or third party websites we're affiliated with may sell items or provide services to you through the Services (either alone or jointly with us). You can recognize when an affiliated business is associated with such a transaction or service, and we will share your Personal Information with that affiliated business only to the extent that it is related to such transaction or service. One such service may include the ability for you to automatically transmit Third Party Account Information to your Services profile or to automatically transmit information in your Services profile to your third party account. We have no control over the policies and practices of third party websites or businesses as to privacy or anything else, so if you choose to take part in any transaction or service relating to an affiliated website or business, please review all such business' or websites' policies.
-
-B. Agents: We employ other companies and people to perform tasks on our behalf and need to share your information with them to provide products or services to you. Unless we tell you differently, our agents do not have any right to use the Personal Information we share with them beyond what is necessary to assist us.
-
-C. User Profiles and Submissions: Certain user profile information, including without limitation a user's name, location, and any video or image content that such user has uploaded to the Services, may be displayed to other users to facilitate user interaction within the Services or address your request for Company's services. Your account privacy settings allow you to limit the other users who can see the Personal Information in your user profile and/or what information in your user profile is visible to others. Any content you upload to your public user profile, along with any Personal Information or content that you voluntarily disclose online in a manner other users can view (on discussion boards, in messages and chat areas, etc.) becomes publicly available, and can be collected and used by others. Your user name may also be displayed to other users if and when you send messages or comments or upload images or videos through the Services and other users can contact you through messages and comments.
-
-D. Business Transfers: We may choose to buy or sell assets. In these types of transactions, customer information is typically one of the business assets that would be transferred. Also, if we (or our assets) are acquired, or if we go out of business, enter bankruptcy, or go through some other change of control, Personal Information would be one of the assets transferred to or acquired by a third party.
-
-E. Protection of Company and Others: We reserve the right to access, read, preserve, and disclose any information that we reasonably believe is necessary to comply with law or court order; enforce or apply our conditions of use and other agreements; or protect the rights, property, or safety of Company, our employees, our users, or others. This includes exchanging information with other companies and organizations for fraud protection and credit risk reduction.
-
-F. With Your Consent: Except as set forth above, you will be notified when your Personal Information may be shared with third parties in personally identifiable form, and will be able to prevent the sharing of this information.
-
-IV. IS PERSONAL INFORMATION ABOUT ME SECURE?
-
-Your account is protected by a password for your privacy and security. You must prevent unauthorized access to your account and Personal Information by selecting and protecting your password appropriately and limiting access to your computer or device and browser by signing off after you have finished accessing your account.
-
-We endeavor to protect the privacy of your account and other Personal Information we hold in our records, but we cannot guarantee complete security. Unauthorized entry or use, hardware or software failure, and other factors, may compromise the security of user information at any time.
-The Services may contain links to other sites. We are not responsible for the privacy policies and/or practices on other sites. When following a link to another site you should read that site's privacy policy.
-
-V. WHAT PERSONAL INFORMATION CAN I ACCESS?
-
-You may access, edit, or delete account information by emailing us at support@hashicorp.com.
-
-The information you can view, update, and delete may change as the Services change. If you have any questions about viewing or updating information we have on file about you, please contact us at support@hashicorp.com. Under California Civil Code Sections 1798.83-1798.84, California residents are entitled to ask us for a notice identifying the categories of Personal Information which we share with our affiliates and/or third parties for marketing purposes, and providing contact information for such affiliates and/or third parties. If you are a California resident and would like a copy of this notice, please submit a written request to: support@hashicorp.com.
-
-VI. WHAT CHOICES DO I HAVE?
-
-• You can always opt not to disclose information to use, but keep in mind some information may be needed to register with us or to take advantage of some of our special features.
-• You may be able to add, update, or delete information as explained in Section V above. When you update information, however, we may maintain a copy of the unrevised information in our records. You may request deletion of your account by emailing support@hashicorp.com. Please note that some information may remain in our records after your deletion of such information from your account. We may use any aggregated data derived from or incorporating your Personal Information after you update or delete it, but not in a manner that would identify you personally.
-
-VII. CHANGES TO THIS PRIVACY POLICY
-We may amend this Privacy Policy from time to time. Use of information we collect now is subject to the Privacy Policy in effect at the time such information is used. If we make changes in the way we use Personal Information, we will notify you by posting an announcement on our Website or sending you a message. You are bound by any changes to the Privacy Policy when you use the Services after such changes have been first posted.
-
-VIII. QUESTIONS OR CONCERNS
-If you have any questions or concerns regarding our privacy policies, please send us a detailed message to support@hashicorp.com, and we will try to resolve your concerns.
-
-Effective Date: March, 1 2013
-
diff --git a/website/source/vmware/terms-of-service.html.md b/website/source/vmware/terms-of-service.html.md
deleted file mode 100644
index b770feee7..000000000
--- a/website/source/vmware/terms-of-service.html.md
+++ /dev/null
@@ -1,55 +0,0 @@
----
-layout: "vmware"
-sidebar_current: "vmware-tos"
-page_title: "Terms of Service - VMware Plugin"
-description: |-
- This page documents the Terms of Service (TOS) for the Vagrant VMware plugin.
----
-
-# TERMS OF USE
-
-
-PLEASE READ THESE TERMS OF USE ("AGREEMENT") CAREFULLY BEFORE USING THE SERVICES OFFERED BY HASHICORP, INC. ("COMPANY"). BY VISITING THE WEBSITES OR USING THE SERVICES IN ANY MANNER, YOU AGREE THAT YOU HAVE READ AND AGREE TO BE BOUND BY AND A PARTY TO THE TERMS AND CONDITIONS OF THIS AGREEMENT TO THE EXCLUSION OF ALL OTHER TERMS. IF THE TERMS OF THIS AGREEMENT ARE CONSIDERED AN OFFER, ACCEPTANCE IS EXPRESSLY LIMITED TO SUCH TERMS. IF YOU DO NOT UNCONDITIONALLY AGREE TO ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT, YOU HAVE NO RIGHT TO USE THE WEBSITE OR SERVICES. USE OF COMPANY'S SERVICES IS EXPRESSLY CONDITIONED UPON YOUR ASSENT TO ALL THE TERMS AND CONDITIONS OF THIS AGREEMENT, TO THE EXCLUSION OF ALL OTHER TERMS.
-
-1\. ACCESS TO THE SERVICES. The hashicorp.com and vagrantup.com website and domain name and any other linked pages, features, content, or application services (including without limitation any mobile application services) offered from time to time by Company in connection therewith (collectively, the "Website") are owned and operated by Company. Subject to the terms and conditions of this Agreement, Company may offer to provide certain services, as described more fully on the Website, and that have been selected by you (together with the Website, the "Services"), solely for your own use, and not for the use or benefit of any third party. The term "Services" includes, without limitation, use of the Website, any service Company performs for you and the Content (as defined below) offered by Company on the Website. Company may change, suspend or discontinue the Services at any time, including the availability of any feature, database, or Content. Company may also impose limits on certain features and services or restrict your access to parts or all of the Services without notice or liability. Company reserves the right, in its sole discretion, to modify this Agreement at any time by posting a notice on the Website, or by sending you a notice. You shall be responsible for reviewing and becoming familiar with any such modifications. Your use of the Services following such notification constitutes your acceptance of the terms and conditions of this Agreement as modified.
-
-Company does not knowingly collect or solicit personal information from anyone under the age of 13 or knowingly allow such persons to register for the Services. If you are under 13, please do not attempt to register for the Services or send any information about yourself to us, including your name, address, telephone number, or email address. No one under age 13 may provide any personal information to Company or on the Services. In the event that we learn that we have collected personal information from a child under age 13 without verification of parental consent, we will delete that information as quickly as possible. If you believe that we might have any information from or about a child under 13, please contact us at support@hashicorp.com.
-
-You represent and warrant to Company that: (i) you are an individual (i.e., not a corporation) and you are of legal age to form a binding contract or have your parent's permission to do so, and you are at least 13 years or age or older; (ii) all registration information you submit is accurate and truthful; and (iii) you will maintain the accuracy of such information. You also certify that you are legally permitted to use and access the Services and take full responsibility for the selection and use of and access to the Services. This Agreement is void where prohibited by law, and the right to access the Services is revoked in such jurisdictions.
-
-2\. SERVICES CONTENT. The Services and its contents may only be used in accordance with the terms of this Agreement. All materials displayed or performed on the Services (including, but not limited to text, graphics, articles, photographs, images, illustrations (also known as the "Content,")) are protected by copyright. You shall abide by all copyright notices, trademark rules, information, and restrictions contained in any Content accessed through the Services, and shall not use, copy, reproduce, modify, translate, publish, broadcast, transmit, distribute, perform, upload, display, license, sell or otherwise exploit for any purposes whatsoever any Content or third party submissions or other proprietary rights not owned by you: (i) without the express prior written consent of the respective owners, and (ii) in any way that violates any third party right.
-The Services are protected by copyright as a collective work and/or compilation, pursuant to U.S. copyright laws, international conventions, and other intellectual property laws. You may not modify, publish, transmit, participate in the transfer or sale of, reproduce (except as expressly provided in this Section 2), create derivative works based on, distribute, perform, display, or in any way exploit, any of the Content, software, materials, or Services in whole or in part.
-
-You may download or copy the Content (and other items displayed on the Services for download) for personal non-commercial use only, provided that you maintain all copyright and other notices contained in such Content. You shall not store any significant portion of any Content in any form. Copying or storing of any Content other than personal, noncommercial use is expressly prohibited without prior written permission from Company or from the copyright holder identified in such Content's copyright notice. If you link to the Website, Company may revoke your right to so link at any time, at Company's sole discretion. Company reserves the right to require prior written consent before linking to the Website.
-Under no circumstances will Company be liable in any way for any Content, including, but not limited to, any errors or omissions in any Content, or any loss or damage of any kind incurred in connection with use of or exposure to any Content posted, emailed, accessed, transmitted, or otherwise made available via the Services.
-
-3\. RESTRICTIONS. You warrant, represent and agree that you will not contribute any Content or otherwise use the Services in a manner that (i) infringes or violates the intellectual property rights or proprietary rights, rights of publicity or privacy, or other rights of any third party; (ii) violates any law, statute, ordinance or regulation; (iii) is harmful, fraudulent, deceptive, threatening, abusive, harassing, tortious, defamatory, vulgar, obscene, libelous, or otherwise objectionable; (iv) involves commercial activities and/or sales without Company's prior written consent such as contests, sweepstakes, barter, advertising, or pyramid schemes; (v) impersonates any person or entity, including without limitation any employee or representative of Company; or (vi) contains a virus, trojan horse, worm, time bomb, or other harmful computer code, file, or program. Company reserves the right to remove any Content from the Services at any time, for any reason (including, but not limited to, upon receipt of claims or allegations from third parties or authorities relating to such Content or if Company is concerned that you may have breached the immediately preceding sentence), or for no reason at all. You, not Company, remain solely responsible for all Content that you upload, post, email, transmit, or otherwise disseminate using, or in connection with, the Services, and you warrant that you possess all rights necessary to provide such content to Company and to grant Company the rights to use such information in connection with the Services and as otherwise provided herein.
-You are responsible for all of your activity in connection with the Services. Any fraudulent, abusive, or otherwise illegal activity may be grounds for termination of your right to access or use the Services. You may not post or transmit, or cause to be posted or transmitted, any communication or solicitation designed or intended to obtain password, account, or private information from any other user of the Services. Use of the Services to violate the security of any computer network, crack passwords or security encryption codes, transfer or store illegal material (including material that may be considered threatening or obscene), or engage in any kind of illegal activity is expressly prohibited. You will not run Maillist, Listserv, any form of auto-responder, or "spam" on the Services, or any processes that run or are activated while you are not logged on to the Services, or that otherwise interfere with the proper working of or place an unreasonable load on the Services' infrastructure. Further, the use of manual or automated software, devices, or other processes to "crawl," "scrape," or "spider" any portion of the Services is strictly prohibited. You will not decompile, reverse engineer, or otherwise attempt to obtain the source code of the Services. You will be responsible for withholding, filing, and reporting all taxes, duties and other governmental assessments associated with your activity in connection with the Services.
-
-You understand and agree that Company shall have the sole right to decide whether you are in violation of any of the restrictions set forth in this Section, and shall have sole discretion regarding the course of action to take in connection therewith.
-
-4\. WARRANTY DISCLAIMER. Company has no special relationship with or fiduciary duty to you. You acknowledge that Company has no control over, and no duty to take any action regarding: which users gain access to the Services; what Content you access via the Services; what effects the Content may have on you; how you may interpret or use the Content; or what actions you may take as a result of having been exposed to the Content. You release Company from all liability for you having acquired or not acquired Content through the Services. The Services may contain, or direct you to websites containing, information that some people may find offensive or inappropriate. Company makes no representations concerning any content contained in or accessed through the Services, and Company will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Services. Company makes no representations or warranties regarding the accuracy of descriptions anywhere on the Services, or regarding suggestions or recommendations of services or products offered or purchased through the Services. Products and services purchased (whether or not following such recommendations and suggestions) are provided "AS IS" without any warranty of any kind from Company or others unless, with respect to others (only), otherwise made expressly and unambiguously in writing by a designated third party for a specific product or service.THE SERVICES, CONTENT, WEBSITE AND ANY SOFTWARE ARE PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, WITHOUT LIMITATION, IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, OR THAT USE OF THE SERVICES WILL BE UNINTERRUPTED OR ERROR-FREE. SOME STATES DO NOT ALLOW LIMITATIONS ON HOW LONG AN IMPLIED WARRANTY LASTS, SO THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU.
-
-5\. PRIVACY POLICY. For information regarding Company's treatment of personally identifiable information, please review Company's current Privacy Policy, which is hereby incorporated by reference; your acceptance of this Agreement constitutes your acceptance and agreement to be bound by Company's Privacy Policy.
-
-6\. REGISTRATION AND SECURITY. As a condition to using some aspects of the Services, you may be required to register with Company and select a password and user name ("Company User ID"). You shall provide Company with accurate, complete, and updated registration information. Failure to do so shall constitute a breach of this Agreement, which may result in immediate termination of your account. You may not (i) select or use as a Company User ID a name of another person with the intent to impersonate that person; or (ii) use as a Company User ID a name subject to any rights of a person other than you without appropriate authorization. Company reserves the right to refuse registration of or cancel a Company User ID in its discretion. You shall be responsible for maintaining the confidentiality of your password.
-
-7\. INDEMNITY. You will indemnify and hold Company, its parents, subsidiaries, affiliates, officers, and employees harmless (including, without limitation, from all damages, liabilities, settlements, costs and attorneys' fees) from any claim or demand made by any third party due to or arising out of your access to the Services, use of the Services, your violation of this Agreement, or the infringement by you or any third party using your account of any intellectual property or other right of any person or entity.
-
-8\. LIMITATION OF LIABILITY. TO THE FULLEST EXTENT ALLOWED BY APPLICABLE LAW, IN NO EVENT SHALL COMPANY OR ITS SUPPLIERS, OR THEIR RESPECTIVE OFFICERS, DIRECTORS, EMPLOYEES, OR AGENTS BE LIABLE WITH RESPECT TO THE WEBSITE OR THE SERVICES OR THE SUBJECT MATTER OF THIS AGREEMENT UNDER ANY CONTRACT, NEGLIGENCE, TORT, STRICT LIABILITY OR OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY AMOUNT IN THE AGGREGATE IN EXCESS OF THE GREATER OF $100 OR THE FEES PAID BY YOU FOR THE SERVICES AND ANY PRODUCTS OR SERVICES PURCHASED THROUGH THE SERVICES DURING THE 12-MONTH PERIOD PRECEDING THE APPLICABLE CLAIM; (II) FOR ANY INDIRECT, INCIDENTAL, PUNITIVE, OR CONSEQUENTIAL DAMAGES OF ANY KIND WHATSOEVER; (III) FOR DATA LOSS OR COST OF PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; OR (IV) FOR ANY MATTER BEYOND COMPANY'S REASONABLE CONTROL. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THE ABOVE LIMITATIONS AND EXCLUSIONS MAY NOT APPLY TO YOU.
-
-9\. FEES AND PAYMENT. Although some of our Services are currently free to users, Company reserves the right to require payment of fees for certain or all Services or products. You shall pay all applicable fees, as described on the Website in connection with such Services or products selected by you. Company reserves the right to change its price list and to institute new charges at any time, upon notice to you, which may be sent by email or posted on the Website. Any fees paid hereunder are non-refundable.
-
-10\. INTERACTION WITH THIRD PARTIES. The Services may contain links to third party websites or services ("Third Party Services") that are not owned or controlled by Company. When you access Third Party Services, you do so at your own risk. You hereby represent and warrant that you have read and agree to be bound by all applicable policies of any Third Party Services relating to your use of the Services and that you will act in accordance with those policies, in addition to your obligations under this Agreement. Company has no control over, and assumes no responsibility for, the content, accuracy, privacy policies, or practices of or opinions expressed in any Third Party Services. In addition, Company will not and cannot monitor, verify, censor or edit the content of any Third Party Service. By using the Services, you expressly relieve and hold harmless Company from any and all liability arising from your use of any Third Party Service.
-Your interactions with organizations and/or individuals found on or through the Services, including payment and delivery of goods or services, and any other terms, conditions, warranties or representations associated with such dealings, are solely between you and such organizations and/or individuals. You should make whatever investigation you feel necessary or appropriate before proceeding with any online or offline transaction with any of these third parties. You agree that Company shall not be responsible or liable for any loss or damage of any sort incurred as the result of any such dealings. If there is a dispute between participants on this site, or between users and any third party, you understand and agree that Company is under no obligation to become involved. In the event that you have a dispute with one or more other users or third parties, you hereby release Company, its officers, employees, agents, and successors in rights from claims, demands, and damages (actual and consequential) of every kind or nature, known or unknown, suspected or unsuspected, disclosed or undisclosed, arising out of or in any way related to such disputes. If you are a California resident, you shall and hereby do waive California Civil Code Section 1542, which says: "A general release does not extend to claims which the creditor does not know or suspect to exist in his favor at the time of executing the release, which, if known by him must have materially affected his settlement with the debtor."
-
-11\. TERMINATION. This Agreement shall remain in full force and effect while you use the Services. You may terminate your use of the Services at any time. Company may terminate or suspend your access to the Services or your membership at any time, for any reason, and without warning, which may result in the forfeiture and destruction of all information associated with your membership. Company may also terminate or suspend any and all Services and access to the Website immediately, without prior notice or liability, if you breach any of the terms or conditions of this Agreement. Upon termination of your account, your right to use the Services, access the Website, and any Content will immediately cease. All provisions of this Agreement which, by their nature, should survive termination, shall survive termination, including, without limitation, ownership provisions, warranty disclaimers, and limitations of liability.
-
-12\. MISCELLANEOUS. The failure of either party to exercise, in any respect, any right provided for herein shall not be deemed a waiver of any further rights hereunder. Company shall not be liable for any failure to perform its obligations hereunder where such failure results from any cause beyond Company's reasonable control, including, without limitation, mechanical, electronic or communications failure or degradation (including "line-noise" interference). If any provision of this Agreement is found to be unenforceable or invalid, that provision shall be limited or eliminated to the minimum extent necessary so that this Agreement shall otherwise remain in full force and effect and enforceable. This Agreement is not assignable, transferable or sublicensable by you except with Company's prior written consent. Company may transfer, assign or delegate this Agreement and its rights and obligations without consent. Both parties agree that this Agreement is the complete and exclusive statement of the mutual understanding of the parties and supersedes and cancels all previous written and oral agreements, communications and other understandings relating to the subject matter of this Agreement, and that all modifications must be in a writing signed by both parties, except as otherwise provided herein. No agency, partnership, joint venture, or employment is created as a result of this Agreement and you do not have any authority of any kind to bind Company in any respect whatsoever. Headings for each section have been included above for your convenience, but such headings do not have any legal meaning, and may not accurately reflect the content of the provisions they precede. You and Company agree there are no third party beneficiaries intended under this Agreement.
-
-13\. ARBITRATION; GOVERNING LAW. This Agreement shall be governed by and construed in accordance with the laws of the State of California without regard to the conflict of laws provisions thereof. Any dispute arising from or relating to the subject matter of this Agreement shall be finally settled by arbitration in San Francisco County, California, using the English language in accordance with the Streamlined Arbitration Rules and Procedures of Judicial Arbitration and Mediation Services, Inc. ("JAMS") then in effect, by one commercial arbitrator with substantial experience in resolving intellectual property and commercial contract disputes, who shall be selected from the appropriate list of JAMS arbitrators in accordance with the Streamlined Arbitration Rules and Procedures of JAMS. Judgment upon the award so rendered may be entered in a court having jurisdiction, or application may be made to such court for judicial acceptance of any award and an order of enforcement, as the case may be. Notwithstanding the foregoing, each party shall have the right to institute an action in a court of proper jurisdiction for injunctive or other equitable relief pending a final decision by the arbitrator. For all purposes of this Agreement, the parties consent to exclusive jurisdiction and venue in the United States Federal Courts located in the Northern District of California.
-
-14\. CONTACT. If you have any questions, complaints, or claims with respect to the Services, you may contact us at support@hashicorp.com.
-
-Effective: March 1, 2013
-