website/www: push post
This commit is contained in:
parent
09cc1f1d73
commit
1be7529b17
|
@ -0,0 +1,122 @@
|
||||||
|
---
|
||||||
|
page_title: "Vagrant Push: One Command to Deploy Any Application"
|
||||||
|
title: "Vagrant Push: One Command to Deploy Any Application"
|
||||||
|
author: "Mitchell Hashimoto"
|
||||||
|
author_url: https://github.com/mitchellh
|
||||||
|
---
|
||||||
|
|
||||||
|
Vagrant 1.7 comes with a new command: `vagrant push`. Just as "vagrant up"
|
||||||
|
creates a development environment for any application, `vagrant push` is
|
||||||
|
a single command to _deploy_ any application.
|
||||||
|
|
||||||
|
The goal of Vagrant is to give developers a single workflow to develop
|
||||||
|
applications effectively. "vagrant up" creates a development for any
|
||||||
|
applications, "vagrant share" enables collaboration for any application.
|
||||||
|
Deploying was the next logical step for Vagrant, now possible with
|
||||||
|
"vagrant push".
|
||||||
|
|
||||||
|
Like every other component of Vagrant, push can be configured using multiple
|
||||||
|
strategies. "vagrant push" can deploy via FTP, Heroku,
|
||||||
|
[Atlas](https://atlas.hashicorp.com), or by executing any local script.
|
||||||
|
Other strategies can be added via plugins and more will be added to core
|
||||||
|
as time goes on.
|
||||||
|
|
||||||
|
Read on to learn more.
|
||||||
|
|
||||||
|
READMORE
|
||||||
|
|
||||||
|
### Demo
|
||||||
|
|
||||||
|
We've prepared a short video showing Vagrant Push in action.
|
||||||
|
|
||||||
|
<iframe src="//player.vimeo.com/video/114328000" width="680" height="382" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
|
||||||
|
|
||||||
|
### Push to Deploy
|
||||||
|
|
||||||
|
`vagrant push` works like anything else in Vagrant: configure it in the
|
||||||
|
Vagrantfile, and it is immediately available to every developer. Push
|
||||||
|
configuration is simple and easy to understand:
|
||||||
|
|
||||||
|
```
|
||||||
|
config.push.define "ftp" do |push|
|
||||||
|
push.host = "ftp.company.com"
|
||||||
|
push.username = "username"
|
||||||
|
push.password = "mypassword"
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
And then to push the application to the FTP or SFTP server:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ vagrant push
|
||||||
|
...
|
||||||
|
```
|
||||||
|
|
||||||
|
Multiple `config.push.define` declarations can be in a Vagrantfile to
|
||||||
|
define multiple pushes, perhaps one to staging and one to production, for
|
||||||
|
example.
|
||||||
|
|
||||||
|
### A Single Command
|
||||||
|
|
||||||
|
The biggest benefit of Vagrant Push is defining a single command
|
||||||
|
to deploy any application. Whether the deploy process is complex or
|
||||||
|
is just a simple push to Heroku, developers only need to know that any
|
||||||
|
application within their organizations can be deployed with `vagrant push`.
|
||||||
|
|
||||||
|
For complicated deploys, the benefit is obvious. For simpler deploys, such
|
||||||
|
as a push to Heroku, Vagrant Push is still useful. Besides not having
|
||||||
|
to know that Heroku is being used under the hood, Vagrant Push will
|
||||||
|
automatically configure your Git remote so the push works. Prior to this,
|
||||||
|
you'd at least have to know the Heroku application name and configure
|
||||||
|
your local repository to be able to push to it.
|
||||||
|
|
||||||
|
Of course, not applications stay that simple, and if your application
|
||||||
|
outgrows Heroku, then the deploy process doesn't change with Vagrant:
|
||||||
|
`vagrant push`, to deploy any application.
|
||||||
|
|
||||||
|
### Push Strategies
|
||||||
|
|
||||||
|
Like providers, provisioners, and other features in Vagrant, pushes can
|
||||||
|
be configured with multiple _strategies_. Vagrant 1.7 ships with four
|
||||||
|
strategies:
|
||||||
|
|
||||||
|
* [Atlas](https://docs.vagrantup.com/v2/push/atlas.html) - Push application
|
||||||
|
to [Atlas](https://atlas.hashicorp.com), a commercial
|
||||||
|
product from HashiCorp.
|
||||||
|
|
||||||
|
* [FTP/SFTP](https://docs.vagrantup.com/v2/push/ftp.html) - Upload files
|
||||||
|
via FTP or SFTP to a remote server. This is great for static sites,
|
||||||
|
PHP, etc.
|
||||||
|
|
||||||
|
* [Heroku](https://docs.vagrantup.com/v2/push/heroku.html) - Push your
|
||||||
|
Git repository to Heroku, and configure the Git remote for you if
|
||||||
|
it doesn't already exist.
|
||||||
|
|
||||||
|
* [Local Exec](https://docs.vagrantup.com/v2/push/local-exec.html) -
|
||||||
|
Executes a local script on the system using a shell, deferring deployment
|
||||||
|
logic to the user. This is for custom behavior or more complicated
|
||||||
|
interactions with systems.
|
||||||
|
|
||||||
|
In addition to these built-in strategies, new strategies can be
|
||||||
|
[built just like any other Vagrant plugin](https://docs.vagrantup.com/v2/plugins/development-basics.html).
|
||||||
|
This allows 3rd parties to extend the capabilities of `vagrant push`, and
|
||||||
|
will surely result in future versions of Vagrant shipping with more push
|
||||||
|
strategies.
|
||||||
|
|
||||||
|
### Next
|
||||||
|
|
||||||
|
This is a historic day for Vagrant. Vagrant 0.1 came out and defined
|
||||||
|
"vagrant up" to build a development environment for any application.
|
||||||
|
Vagrant 1.1 made it possible to have development environments on top of
|
||||||
|
any provider (VMware, Docker, etc.). Vagrant 1.5 introduced the "share"
|
||||||
|
command to collaborate. And now, Vagrant 1.7 completes the development
|
||||||
|
process with "push" to deploy.
|
||||||
|
|
||||||
|
The mission of Vagrant has been the same since day one: development
|
||||||
|
environments made easy. This mission spans any language choice, any
|
||||||
|
provider choice, and likewise any choice of how to deploy these
|
||||||
|
applications. Push continues this mission by adding a necessary
|
||||||
|
feature to the development workflow.
|
||||||
|
|
||||||
|
With Vagrant 1.7 available, we'll be blogging about more of the features
|
||||||
|
as well as creeping towards a 2.0!
|
Loading…
Reference in New Issue