## File: README.md

# Vagrant

> [!IMPORTANT]
> **HCP Vagrant** is in the process of being deprecated and limited features will be available from the community edition effective March 15, 2027. Click [here](https://developer.hashicorp.com/hcp/docs/vagrant/hcp-vagrant-eol) for more information.
> 
> **This change is only for HCP Vagrant and does not apply to Vagrant CLI.**

- 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.

Development environments managed by Vagrant can run on local virtualized
platforms such as VirtualBox or VMware, in the cloud via AWS or OpenStack,
or in containers such as with Docker or raw LXC.

Vagrant provides the framework and configuration format to create and
manage complete portable development environments. These development
environments can live on your computer or in the cloud, and are portable
between Windows, Mac OS X, and Linux.

## Quick Start

Package dependencies: Vagrant requires `bsdtar` and `curl` to be available on
your system PATH to run successfully.

For the quick-start, we'll bring up a development machine on
[VirtualBox](https://www.virtualbox.org/) because it is free and works
on all major platforms. Vagrant can, however, work with almost any
system such as [OpenStack](https://www.openstack.org/), [VMware](https://www.vmware.com/), [Docker](https://docs.docker.com/), etc.

First, make sure your development machine has
[VirtualBox](https://www.virtualbox.org/)
installed. After this,
[download and install the appropriate Vagrant package for your OS](https://www.vagrantup.com/downloads.html).

To build your first virtual environment:

    vagrant init hashicorp/bionic64
    vagrant up

Note: The above `vagrant up` command will also trigger Vagrant to download the
`bionic64` box via the specified URL. Vagrant only does this if it detects that
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).

## Installing from Source

If you want the bleeding edge version of Vagrant, we try to keep main pretty stable
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

Please take time to read the [HashiCorp Community Guidelines](https://www.hashicorp.com/community-guidelines) and the [Vagrant Contributing Guide](https://github.com/hashicorp/vagrant/blob/main/.github/CONTRIBUTING.md).

Then you're good to go!

---

## File: builtin/README.md

# Built-in Plugins

This directory contains all the "built-in" plugins. These are real plugins,
they dogfood the full plugin SDK, do not depend on any internal packages,
and they are executed via subprocess just like a real plugin would be.

The difference is that these plugins are linked directly into the single
command binary. We do this currently for ease of development of the project.
In the future we will split these out into standalone repositories and
binaries.

---

## File: contrib/README.md

# Vagrant Contrib

Miscellaneous contributions which assist people in using Vagrant will
make their way into this directory. An up-to-date list of short descriptions
for each item will be kept below.

## List of Contrib Items

* `bash` - Contains a bash script for improving autocompletion with bash.
* `emacs` - Contains a file for enabling Ruby syntax highlighting for `Vagrantfile`s in `emacs`.
* `st` - Contains a `.sublime-settings` file for enabling Ruby syntax highlighting
  for `Vagrantfile`s in Sublime Text.
* `sudoers` - Contains the pieces of `/etc/sudoers` configuration to avoid password entry when
  starting machines.
* `vim` - Contains a `.vim` file for enabling Ruby syntax highlighting
  for `Vagrantfile`s in `vim`.
* `zsh` - Contains a zsh script for improving autocompletion with zsh.

---

## File: keys/README.md

# Insecure Keypairs

These keys are the "insecure" public/private keypair we offer to
[base box creators](https://www.vagrantup.com/docs/boxes/base.html) for use in their base boxes so that
vagrant installations can automatically SSH into the boxes.

# Vagrant Keypairs

There are currently two "insecure" public/private keypairs for 
Vagrant. One keypair was generated using the older RSA algorithm
and the other keypair was generated using the more recent ED25519
algorithm. 

The `vagrant.pub` file includes the public key for both keypairs. It 
is important for box creators to include both keypairs as versions of 
Vagrant prior to 2.3.8 will only use the RSA private key.

# Custom Keys

If you're working with a team or company or with a custom box and
you want more secure SSH, you should create your own keypair
and configure the private key in the Vagrantfile with
`config.ssh.private_key_path`

---

## File: plugins/README.md

# Vagrant Core Plugins

These are plugins that ship with Vagrant. Vagrant core uses its own
plugin system to power a lot of the core pieces that ship with Vagrant.
Each plugin will have its own README which explains its specific role.

## Generate proto

```
grpc_tools_ruby_protoc -I . --ruby_out=gen/plugin --grpc_out=gen/plugin ./plugin_server.proto
```