<commit_before># grull-vagrant

Vagrantfile and Chef recipes for setting up ROS and GRULL Verdino ROS packages
in a Vagrant virtual machine.

## About Vagrant and Chef

Vagrant is a tool to create and configure reproducible and portable development
environments using virtual machines. These are specified through Vagrantfiles,
in a similar manner as ```make``` uses Makefiles.

The created virtual machines must be provisioned with all the software that
we need. So here is where we need Chef, a configuration management tool written
in Ruby.

Chef is a tool used to streamline the task of configuring and maintaining
company's servers, so the same recipes can be used to automatically provision
and configure real machines, no only virtual machinen used in development.

## Requirements

Mainly, you need Vagrant and some additional plugins:

 * Virtualbox (our Vagrantfile has only been tested with this VM provider)
 * Vagrant >= 1.5
 * Vagrant-librarian-chef
 * Vagrant-omnibus (optional, if we are to use a Vagrant box with Chef
pre-installed. That is not the case with the default box in our Vagrantfile)

Vagrant-librarin-chef and vagrant-omnibus plugins could be easily installed from
Vagrant running:

    $ vagrant plugin install vagrant-omnibus
    $ vagrant plugin install vagrant-librarian-chef

from command line.

## Software provisioned

By default, the next lines in the Vagrantfile will install and configure
Ubuntu Desktop and ROS:

```ruby
    chef.add_recipe "apt"
    ...
    chef.add_recipe "ubuntu-desktop"
    chef.add_recipe "vim-default-editor"
    # install ROS packages
    chef.add_recipe "ros"
```

If you want a ROS development environment with Kdevelop and a workspace
initilized at ```/vagrant/ROS/isaatc-ULL```, we have to uncomment the next line
to add the role ```devel```:

```ruby
    chef.add_role "devel"
```

Finally, if you want a full GRULL Verdino ROS development environment, with all
Verdino ROS packages downloaded to the workspace, you have to add the recipe
```grull-verdino```:

```ruby
    chef.add_recipe "grull-verdino"
```

The ```rosinstall``` file used will be:

 * ```.rosinstall```, if only the recipe ```grull-verdino``` was added.
 * ```devel.rosinstall```, if both the recipe ```grull-verdino``` and the role
```devel``` were added.

but you can override that behavior adding:

```ruby
    "grull-verdino" => {
      "rosinstall_path" => ".rosinstall"
    }
```

to ````chef.json```` in the Vagrantfile.

## Downloads from private repositories on Github

The recipe ```grull-verdino``` use SSH to download GRULL Verdino packages from
Github. Because provisioning is a non-interactive task, you must have configured<commit_msg>Fix markdown<commit_after># grull-vagrant

Vagrantfile and Chef recipes for setting up ROS and GRULL Verdino ROS packages
in a Vagrant virtual machine.

## About Vagrant and Chef

Vagrant is a tool to create and configure reproducible and portable development
environments using virtual machines. These are specified through Vagrantfiles,
in a similar manner as ```make``` uses Makefiles.

The created virtual machines must be provisioned with all the software that
we need. So here is where we need Chef, a configuration management tool written
in Ruby.

Chef is a tool used to streamline the task of configuring and maintaining
company's servers, so the same recipes can be used to automatically provision
and configure real machines, no only virtual machinen used in development.

## Requirements

Mainly, you need Vagrant and some additional plugins:

 * Virtualbox (our Vagrantfile has only been tested with this VM provider)
 * Vagrant >= 1.5
 * Vagrant-librarian-chef
 * Vagrant-omnibus (optional, if we are to use a Vagrant box with Chef
pre-installed. That is not the case with the default box in our Vagrantfile)

Vagrant-librarin-chef and vagrant-omnibus plugins could be easily installed from
Vagrant running:

    $ vagrant plugin install vagrant-omnibus
    $ vagrant plugin install vagrant-librarian-chef

from command line.

## Software provisioned

By default, the next lines in the Vagrantfile will install and configure
Ubuntu Desktop and ROS:

```ruby
    chef.add_recipe "apt"
    ...
    chef.add_recipe "ubuntu-desktop"
    chef.add_recipe "vim-default-editor"
    # install ROS packages
    chef.add_recipe "ros"
```

If you want a ROS development environment with Kdevelop and a workspace
initilized at ```/vagrant/ROS/isaatc-ULL```, we have to uncomment the next line
to add the role ```devel```:

```ruby
    chef.add_role "devel"
```

Finally, if you want a full GRULL Verdino ROS development environment, with all
Verdino ROS packages downloaded to the workspace, you have to add the recipe ```grull-verdino```:

```ruby
    chef.add_recipe "grull-verdino"
```

The ```rosinstall``` file used will be:

 * ```.rosinstall```, if only the recipe ```grull-verdino``` was added.
 * ```devel.rosinstall```, if both the recipe ```grull-verdino``` and the role
```devel``` were added.

but you can override that behavior adding:

```ruby
    "grull-verdino" => {
      "rosinstall_path" => ".rosinstall"
    }
```

to ````chef.json```` in the Vagrantfile.

## Downloads from private repositories on Github

The recipe ```grull-verdino``` use SSH to download GRULL Verdino packages from
Github. Because provisioning is a non-interactive task, you must have configured
{'fraction_non_alphanumeric': 0.08257392598103032, 'fraction_numerical': 0.0007439092430723452, 'mean_word_length': 4.3142292490118574, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '995635', 'n_tokens_mistral': 1663, 'n_tokens_neox': 1562, 'n_words': 694}