# Vagrant HandBook

##### <span style="color: rgb(53, 152, 219);">Установка Vagrnat </span>

- **[Установка Vagrant](https://developer.hashicorp.com/vagrant/install#linux)**
- [**Plugins**](https://github.com/hashicorp/vagrant/wiki/Available-Vagrant-Plugins)
- [**Boxes**](https://developer.hashicorp.com/vagrant/docs/boxes#official-boxes)
- [**Vagrantfile**](https://github.com/devopsgroup-io/vagrant-digitalocean#install)
- [External **Script**](https://www.vagrantup.com/docs/provisioning/shell#external-script)
- [Vagrant **Host Script**](https://github.com/phinze/vagrant-host-shell#vagrant-host-shell-plugin)
- [Ansible **Provisioner**](https://www.vagrantup.com/docs/provisioning/ansible.html#simplest-configuration)

##### <span style="color: rgb(53, 152, 219);">Digital Ocean Droplet Example</span>

**Предварительная настройка Plugins/BOX**

```ruby
vagrant plugin install vagrant-host-shell
vagrant plugin install vagrant-digitalocean
vagrant box add digital_ocean https://github.com/devopsgroup-io/vagrant-digitalocean/raw/master/box/digital_ocean.box
```

**Vagrantfile**

```ruby
Vagrant.configure('2') do |config|
  config.vm.define "droplet1" do |config|
      config.vm.provider :digital_ocean do |provider, override|
        override.ssh.private_key_path = '~/.ssh/id_rsa'
        override.vm.box = 'digital_ocean'
        override.vm.box_url = "https://github.com/devopsgroup-io/vagrant-digitalocean/raw/master/box/digital_ocean.box"
        override.nfs.functional = false
        override.vm.allowed_synced_folder_types = :rsync
        provider.token = 'YOUR TOKEN'
        provider.image = 'ubuntu-18-04-x64'
        provider.region = 'nyc1'
        provider.size = 's-1vcpu-1gb'
        provider.backups_enabled = false
        provider.private_networking = false
        provider.ipv6 = false
        provider.monitoring = false
      end
  end
```

##### <span style="color: rgb(53, 152, 219);">Vagrant Top Commands</span>

**Режимы работы Vagrant:**

```ruby
vagrant up
vagrant destroy
vagrant ssh
vagrant status
```

**Удаление кэша старых машин:**

```ruby
vagrant global-status --prune
```

**Запуска/rebuild машин с LOGированием:**

```ruby
VAGRANT_LOG=info vagrant up
VAGRANT_LOG=info vagrant rebuild
```