Systems documentation
This commit is contained in:
parent
7648fb1ad5
commit
0ddc6dd5f7
|
@ -14,6 +14,7 @@
|
||||||
</li>
|
</li>
|
||||||
<li><a href="/docs/boxes.html">Boxes</a></li>
|
<li><a href="/docs/boxes.html">Boxes</a></li>
|
||||||
<li><a href="/docs/base_boxes.html">Base Boxes</a></li>
|
<li><a href="/docs/base_boxes.html">Base Boxes</a></li>
|
||||||
|
<li><a href="/docs/systems.html">Systems</a></li>
|
||||||
<li><a href="/docs/rake.html">Rake Integration</a></li>
|
<li><a href="/docs/rake.html">Rake Integration</a></li>
|
||||||
</ol>
|
</ol>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
---
|
||||||
|
layout: documentation
|
||||||
|
title: Documentation - Systems
|
||||||
|
---
|
||||||
|
# Systems
|
||||||
|
|
||||||
|
Systems are an abstraction within Vagrant which describe how various operating system specific
|
||||||
|
tasks are to be run. Systems abstract away tasks such as shutting down, mounting folders, etc.
|
||||||
|
since some operating systems handle this slightly different. This opens the door to supporting
|
||||||
|
more than unix-like systems.
|
||||||
|
|
||||||
|
<div class="info">
|
||||||
|
<h3>This topic is for advanced users</h3>
|
||||||
|
<p>
|
||||||
|
The following topic is for <em>advanced</em> users. The majority of Vagrant users
|
||||||
|
will never have to do this. Therefore, only continue if you want to support a non-linux
|
||||||
|
based operating system.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
## System Tasks
|
||||||
|
|
||||||
|
The following is a list of tasks which are delegated to system classes:
|
||||||
|
|
||||||
|
* **Halting** - Shutting down the machine gracefully
|
||||||
|
* **Mounting Shared Folders** - Creating, mounting, and setting up the permissions
|
||||||
|
for shared folders.
|
||||||
|
|
||||||
|
This list will surely grow as Vagrant grows. For now, to implement a custom operating
|
||||||
|
system implementation, only the above two features need to be implemented.
|
||||||
|
|
||||||
|
## Creating a New System Implementer
|
||||||
|
|
||||||
|
Creating a new system implementer is quite simple: Inherit from `Vagrant::Systems::Base`
|
||||||
|
and implement the stubbed method on that class. Instead of going over each method here,
|
||||||
|
I'll point you to the [base source file](http://github.com/mitchellh/vagrant/blob/master/lib/vagrant/systems/base.rb)
|
||||||
|
which is thoroughly commented to explain each method.
|
||||||
|
|
||||||
|
## Using a New System Implementer
|
||||||
|
|
||||||
|
The new system implementer should be specified as the `config.vm.system` configuration
|
||||||
|
value. By default, this is `:linux`. A symbol represents a built-in system type. For
|
||||||
|
your custom types, you should set the value as the class name for your new implementer.
|
||||||
|
Below is a sample Vagrantfile which does just this:
|
||||||
|
|
||||||
|
{% highlight ruby %}
|
||||||
|
# An example system:
|
||||||
|
require 'bsd_system'
|
||||||
|
|
||||||
|
Vagrant::Config.run do |config|
|
||||||
|
# Set the system to the proper class name:
|
||||||
|
config.vm.system = BSDSystem
|
||||||
|
end
|
||||||
|
{% endhighlight %}
|
||||||
|
|
||||||
|
The configured Vagrant environment will then use the custom system implementation.
|
Loading…
Reference in New Issue