mirror of https://github.com/hashicorp/packer
Add the ability to create Google vagrant boxes using the vagrant post-processor. The Google plugin for vagrant is linked below. https://github.com/mitchellh/vagrant-googlepull/5732/head
parent
a67d4024b3
commit
e47bd65986
@ -0,0 +1,42 @@
|
||||
package vagrant
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"text/template"
|
||||
|
||||
"github.com/hashicorp/packer/packer"
|
||||
)
|
||||
|
||||
type googleVagrantfileTemplate struct {
|
||||
Image string ""
|
||||
}
|
||||
|
||||
type GoogleProvider struct{}
|
||||
|
||||
func (p *GoogleProvider) KeepInputArtifact() bool {
|
||||
return true
|
||||
}
|
||||
|
||||
func (p *GoogleProvider) Process(ui packer.Ui, artifact packer.Artifact, dir string) (vagrantfile string, metadata map[string]interface{}, err error) {
|
||||
// Create the metadata
|
||||
metadata = map[string]interface{}{"provider": "google"}
|
||||
|
||||
// Build up the template data to build our Vagrantfile
|
||||
tplData := &googleVagrantfileTemplate{}
|
||||
tplData.Image = artifact.Id()
|
||||
|
||||
// Build up the Vagrantfile
|
||||
var contents bytes.Buffer
|
||||
t := template.Must(template.New("vf").Parse(defaultGoogleVagrantfile))
|
||||
err = t.Execute(&contents, tplData)
|
||||
vagrantfile = contents.String()
|
||||
return
|
||||
}
|
||||
|
||||
var defaultGoogleVagrantfile = `
|
||||
Vagrant.configure("2") do |config|
|
||||
config.vm.provider :google do |google|
|
||||
google.image = "{{ .Image }}"
|
||||
end
|
||||
end
|
||||
`
|
||||
Loading…
Reference in new issue