func (p *ResourceProvisioner) Apply(s *terraform.ResourceState, c *terraform.ResourceConfig) error { // Ensure the connection type is SSH if err := helper.VerifySSH(s); err != nil { return err } // Get the SSH configuration conf, err := helper.ParseSSHConfig(s) if err != nil { return err } // Collect the scripts scripts, err := p.collectScripts(c) if err != nil { return err } for _, s := range scripts { defer s.Close() } // Copy and execute each script if err := p.runScripts(conf, scripts); err != nil { return err } return nil }
func (p *ResourceProvisioner) Apply( o terraform.UIOutput, s *terraform.InstanceState, c *terraform.ResourceConfig) error { // Ensure the connection type is SSH if err := helper.VerifySSH(s); err != nil { return err } // Get the SSH configuration conf, err := helper.ParseSSHConfig(s) if err != nil { return err } // Get the source and destination sRaw := c.Config["source"] src, ok := sRaw.(string) if !ok { return fmt.Errorf("Unsupported 'source' type! Must be string.") } dRaw := c.Config["destination"] dst, ok := dRaw.(string) if !ok { return fmt.Errorf("Unsupported 'destination' type! Must be string.") } return p.copyFiles(conf, src, dst) }