|
|
|
|
@ -33,7 +33,7 @@ func (p *AWSBoxPostProcessor) Configure(raw interface{}) error {
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (packer.Artifact, error) {
|
|
|
|
|
func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact) (packer.Artifact, bool, error) {
|
|
|
|
|
// Determine the regions...
|
|
|
|
|
tplData := &AWSVagrantfileTemplate{
|
|
|
|
|
Images: make(map[string]string),
|
|
|
|
|
@ -42,7 +42,7 @@ func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact
|
|
|
|
|
for _, regions := range strings.Split(artifact.Id(), ",") {
|
|
|
|
|
parts := strings.Split(regions, ":")
|
|
|
|
|
if len(parts) != 2 {
|
|
|
|
|
return nil, fmt.Errorf("Poorly formatted artifact ID: %s", artifact.Id())
|
|
|
|
|
return nil, false, fmt.Errorf("Poorly formatted artifact ID: %s", artifact.Id())
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
tplData.Images[parts[0]] = parts[1]
|
|
|
|
|
@ -51,20 +51,20 @@ func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact
|
|
|
|
|
// Compile the output path
|
|
|
|
|
outputPath, err := ProcessOutputPath(p.config.OutputPath, "aws", artifact)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Create a temporary directory for us to build the contents of the box in
|
|
|
|
|
dir, err := ioutil.TempDir("", "packer")
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
defer os.RemoveAll(dir)
|
|
|
|
|
|
|
|
|
|
// Create the Vagrantfile from the template
|
|
|
|
|
vf, err := os.Create(filepath.Join(dir, "Vagrantfile"))
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
defer vf.Close()
|
|
|
|
|
|
|
|
|
|
@ -72,13 +72,13 @@ func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact
|
|
|
|
|
if p.config.VagrantfileTemplate != "" {
|
|
|
|
|
f, err := os.Open(p.config.VagrantfileTemplate)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
defer f.Close()
|
|
|
|
|
|
|
|
|
|
contents, err := ioutil.ReadAll(f)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
vagrantfileContents = string(contents)
|
|
|
|
|
@ -91,15 +91,15 @@ func (p *AWSBoxPostProcessor) PostProcess(ui packer.Ui, artifact packer.Artifact
|
|
|
|
|
// Create the metadata
|
|
|
|
|
metadata := map[string]string{"provider": "aws"}
|
|
|
|
|
if err := WriteMetadata(dir, metadata); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Compress the directory to the given output path
|
|
|
|
|
if err := DirToBox(outputPath, dir); err != nil {
|
|
|
|
|
return nil, err
|
|
|
|
|
return nil, false, err
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return NewArtifact("aws", outputPath), nil
|
|
|
|
|
return NewArtifact("aws", outputPath), true, nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var defaultAWSVagrantfile = `
|
|
|
|
|
|