vaguerent/website/source/docs/plugins/action-hooks.html.md
Seth Vargo 5093f3120e Merge docs and www into a single static site
This is a big commit, and I apologize in advance for the future
git-blames all pointing to me. This commit does a few things:

1.  Merges the website/docs and website/www repo into a single website repo
    to be in line with other HashiCorp projects
2.  Updates to use middleman-hashicorp
3.  Converts less to scss to be in line with other projects
4.  Updates page styles to be in line with other projects
5.  Optimizes images
6.  Prepare for S3 + Fastly deployment with scripts, etc.
7.  Removes blog posts (they have been transferred to hashicorp.com with
    redirects in place
8.  Updated sitemap generation script for better SEO
9.  Fixed many broken links
10. Add description to all fields
2016-01-19 14:35:05 -05:00

104 lines
3.0 KiB
Markdown

---
layout: "docs"
page_title: "Plugin Development Basics - Action Hooks"
sidebar_current: "plugins-action-hooks"
description: |-
Action hooks provide ways to interact with Vagrant at a very low level by
injecting middleware in various phases of Vagrant's lifecycle. This is an
advanced option, even for plugin development.
---
# Action Hooks
Action hooks provide ways to interact with Vagrant at a very low level by
injecting middleware in various phases of Vagrant's lifecycle. This is an
advanced option, even for plugin development.
<div class="alert alert-warning">
<strong>Warning: Advanced Topic!</strong> Developing plugins is an
advanced topic that only experienced Vagrant users who are reasonably
comfortable with Ruby should approach.
</div>
## Public Action Hooks
The following action hooks are available in the core of Vagrant. Please note
that this list is not exhaustive and additional hooks can be added via plugins.
- `environment_plugins_loaded` - called after the plugins have been loaded,
but before the configurations, provisioners, providers, etc. are loaded.
- `environment_load` - called after the environment and all configurations are
fully loaded.
- `environment_unload` - called after the environment is done being used. The
environment should not be used in this hook.
- `machine_action_boot` - called after the hypervisor has reported the machine
was booted.
- `machine_action_config_validate` - called after all `Vagrantfile`s have been
loaded, merged, and validated.
- `machine_action_destroy` - called after the hypervisor has reported the
virtual machine is down.
- `machine_action_halt` - called after the hypervision has moved the machine
into a halted state (usually "stopped" but not "terminated").
- `machine_action_package` - called after Vagrant has successfully packaged a
new box.
- `machine_action_provision` - called after all provisioners have executed.
- `machine_action_read_state` - called after Vagrant has loaded state from
disk and the hypervisor.
- `machine_action_reload` - called after a virtual machine is reloaded (varies
by hypervisor).
- `machine_action_resume` - called after a virtual machine is moved from the
halted to up state.
- `machine_action_run_command` - called after a command is executed on the
machine.
- `machine_action_ssh` - called after an SSH connection has been established.
- `machine_action_ssh_run` - called after an SSH command is executed.
- `machine_action_start` - called after the machine has been started.
- `machine_action_suspend` - called after the machine has been suspended.
- `machine_action_sync_folders` - called after synced folders have been set up.
- `machine_action_up` - caled after the machine has entered the up state.
## Private API
You may find additional action hooks if you browse the Vagrant source code, but
only the list of action hooks here are guaranteed to persist between Vagrant
releases. Please do not rely on the internal API as it is subject to change
without notice.