code: func (p *provisioner) runCommand(o terraform.UIOutput, comm communicator.Communicator, command string) error {
  	// Unless prevented, prefix the command with sudo
  	if p.useSudo {
  		command = "sudo " + command
  	}
  
  	outR, outW := io.Pipe()
  	errR, errW := io.Pipe()
  	go p.copyOutput(o, outR)
  	go p.copyOutput(o, errR)
  	defer outW.Close()
  	defer errW.Close()
  
  	cmd := &remote.Cmd{
  		Command: command,
  		Stdout:  outW,
  		Stderr:  errW,
  	}
  
  	err := comm.Start(cmd)
  	if err != nil {
  		return fmt.Errorf("Error executing command %q: %v", cmd.Command, err)
  	}
  
  	if err := cmd.Wait(); err != nil {
  		return err
  	}
  
  	return nil
  }
docs: // runCommand is used to run already prepared commands