The built in vagrant push
command allows you to post your boxes publicly to Atlas. However, what if you want to publish boxes to an internal or private server over ssh
?
Fortunately, the push command can be redefined. Out of the box it is possible to use other methods that allow publishing boxes to both Heroku and via FTP/SFTP. Vagrant also allows using a custom shell script with local-exec to publish your boxes.
Local-Exec enables us to write a simple script to publish boxes with rsync or scp. This will enable you to vagrant push
to an internal webserver via rsync.
Simply add the following example to you project’s Vagrantfile
:
config.push.define "local-exec" do |push|
push.inline: <<-UPLOAD
rsync -Pav tmp/*.box user@boxhost.example.com:/var/www/boxes/
UPLOAD
end
Now, when you run vagrant push
in your project, vagrant will rsync all of the box files in tmp/
to /var/www/boxes/
on your web server, boxhost.example.com
.