From d0251f9741cf4d7659ecb4496d103f99a0e4184a Mon Sep 17 00:00:00 2001 From: Matthew Patton Date: Tue, 31 Jan 2017 05:09:04 -0500 Subject: [PATCH] reorder terms and define an intermediate variable --- provisioner/puppet-masterless/provisioner.go | 20 ++++++++++++++------ provisioner/puppet-server/provisioner.go | 17 ++++++++++++----- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/provisioner/puppet-masterless/provisioner.go b/provisioner/puppet-masterless/provisioner.go index 630c58e11..8ce1589c6 100644 --- a/provisioner/puppet-masterless/provisioner.go +++ b/provisioner/puppet-masterless/provisioner.go @@ -97,12 +97,12 @@ func (p *Provisioner) Prepare(raws ...interface{}) error { // Set some defaults if p.config.ExecuteCommand == "" { p.config.ExecuteCommand = "cd {{.WorkingDir}} && " + - "{{.FacterVars}} {{if .Sudo}} sudo -E {{end}}" + + "{{.FacterVars}} {{if .Sudo}} sudo -iE {{end}}" + "{{if ne .PuppetBinDir \"\"}}{{.PuppetBinDir}}/{{end}}puppet apply " + - "--verbose --modulepath='{{.ModulePath}}' " + + "--detailed-exitcodes " + + "--modulepath='{{.ModulePath}}' " + "{{if ne .HieraConfigPath \"\"}}--hiera_config='{{.HieraConfigPath}}' {{end}}" + "{{if ne .ManifestDir \"\"}}--manifestdir='{{.ManifestDir}}' {{end}}" + - "--detailed-exitcodes " + "{{if ne .ExtraArguments \"\"}}{{.ExtraArguments}} {{end}}" + "{{.ManifestFile}}" } @@ -227,8 +227,7 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error { facterVars = append(facterVars, fmt.Sprintf("FACTER_%s='%s'", k, v)) } - // Execute Puppet - p.config.ctx.Data = &ExecuteTemplate{ + data := ExecuteTemplate{ FacterVars: strings.Join(facterVars, " "), HieraConfigPath: remoteHieraConfigPath, ManifestDir: remoteManifestDir, @@ -237,13 +236,22 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error { PuppetBinDir: p.config.PuppetBinDir, Sudo: !p.config.PreventSudo, WorkingDir: p.config.WorkingDir, - ExtraArguments: strings.Join(p.config.ExtraArguments, " "), + ExtraArguments: "", } + + p.config.ctx.Data = &data + _ExtraArguments, err := interpolate.Render(strings.Join(p.config.ExtraArguments, " "), &p.config.ctx) + if err != nil { + return err + } + data.ExtraArguments = _ExtraArguments + command, err := interpolate.Render(p.config.ExecuteCommand, &p.config.ctx) if err != nil { return err } + // Execute command cmd := &packer.RemoteCmd{ Command: command, } diff --git a/provisioner/puppet-server/provisioner.go b/provisioner/puppet-server/provisioner.go index d071979f1..60940ce6a 100644 --- a/provisioner/puppet-server/provisioner.go +++ b/provisioner/puppet-server/provisioner.go @@ -168,8 +168,7 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error { facterVars = append(facterVars, fmt.Sprintf("FACTER_%s='%s'", k, v)) } - // Execute Puppet - p.config.ctx.Data = &ExecuteTemplate{ + data := ExecuteTemplate{ FacterVars: strings.Join(facterVars, " "), ClientCertPath: remoteClientCertPath, ClientPrivateKeyPath: remoteClientPrivateKeyPath, @@ -178,14 +177,22 @@ func (p *Provisioner) Provision(ui packer.Ui, comm packer.Communicator) error { Options: p.config.Options, PuppetBinDir: p.config.PuppetBinDir, Sudo: !p.config.PreventSudo, - ExtraArguments: strings.Join(p.config.ExtraArguments, " "), + ExtraArguments: "", + } + + p.config.ctx.Data = &data + _ExtraArguments, err := interpolate.Render(strings.Join(p.config.ExtraArguments, " "), &p.config.ctx) + if err != nil { + return err } + data.ExtraArguments = _ExtraArguments command, err := interpolate.Render(p.config.ExecuteCommand, &p.config.ctx) if err != nil { return err } + // Execute Puppet cmd := &packer.RemoteCmd{ Command: command, } @@ -239,14 +246,14 @@ func (p *Provisioner) uploadDirectory(ui packer.Ui, comm packer.Communicator, ds } func (p *Provisioner) commandTemplate() string { - return "{{.FacterVars}} {{if .Sudo}} sudo -E {{end}}" + + return "{{.FacterVars}} {{if .Sudo}} sudo -iE {{end}}" + "{{if ne .PuppetBinDir \"\"}}{{.PuppetBinDir}}/{{end}}puppet agent " + "--onetime --no-daemonize " + + "--detailed-exitcodes " + "{{if ne .PuppetServer \"\"}}--server='{{.PuppetServer}}' {{end}}" + "{{if ne .Options \"\"}}{{.Options}} {{end}}" + "{{if ne .PuppetNode \"\"}}--certname={{.PuppetNode}} {{end}}" + "{{if ne .ClientCertPath \"\"}}--certdir='{{.ClientCertPath}}' {{end}}" + "{{if ne .ClientPrivateKeyPath \"\"}}--privatekeydir='{{.ClientPrivateKeyPath}}' {{end}}" + - "--detailed-exitcodes " + "{{if ne .ExtraArguments \"\"}}{{.ExtraArguments}} {{end}}" }