diff --git a/builder/amazon/ebs/acceptance/builder_acceptance.go b/builder/amazon/ebs/acceptance/builder_acceptance.go
index 5956e5c9a2c041164eea09591a21be926b5c24e4..67097fbc3a3c78c1a1f0f53a16e077282556dc28 100644
--- a/builder/amazon/ebs/acceptance/builder_acceptance.go
+++ b/builder/amazon/ebs/acceptance/builder_acceptance.go
@@ -11,7 +11,6 @@ import (
 
 	amazonebsbuilder "github.com/hashicorp/packer/builder/amazon/ebs"
 
-	"github.com/hashicorp/packer/packer"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 
 	testshelper "github.com/hashicorp/packer/helper/tests"
@@ -55,8 +54,8 @@ func (s *AmazonEBSAccTest) CleanUp() error {
 	return helper.CleanUpAmi()
 }
 
-func (s *AmazonEBSAccTest) GetBuilderStore() packer.MapOfBuilder {
-	return packer.MapOfBuilder{
+func (s *AmazonEBSAccTest) GetBuilderStore() packersdk.MapOfBuilder {
+	return packersdk.MapOfBuilder{
 		"amazon-ebs": func() (packersdk.Builder, error) { return &amazonebsbuilder.Builder{}, nil },
 	}
 }
diff --git a/builder/hyperv/iso/builder_test.go b/builder/hyperv/iso/builder_test.go
index 1cdf5cd34ee6bb5338318fd3182ae89da5371f58..b1a18f3a8ca0252586728762c97662a8b3824417 100644
--- a/builder/hyperv/iso/builder_test.go
+++ b/builder/hyperv/iso/builder_test.go
@@ -10,7 +10,7 @@ import (
 	"testing"
 
 	hypervcommon "github.com/hashicorp/packer/builder/hyperv/common"
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	"github.com/hashicorp/packer/packer-plugin-sdk/multistep"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
@@ -26,7 +26,7 @@ func testConfig() map[string]interface{} {
 		"disk_block_size":         1,
 		"guest_additions_mode":    "none",
 		"disk_additional_size":    "50000,40000,30000",
-		packer.BuildNameConfigKey: "foo",
+		common.BuildNameConfigKey: "foo",
 	}
 }
 
@@ -591,7 +591,7 @@ func TestUserVariablesInBootCommand(t *testing.T) {
 	var b Builder
 	config := testConfig()
 
-	config[packer.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
+	config[common.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
 	config["boot_command"] = []string{"blah {{user `test-variable`}} blah"}
 
 	_, warns, err := b.Prepare(config)
diff --git a/builder/hyperv/vmcx/builder_test.go b/builder/hyperv/vmcx/builder_test.go
index edbf9a988eafe3688abfc024b7f77f5153a3d1be..4daec3d7d4dc3bd89df874ff791697133d779359 100644
--- a/builder/hyperv/vmcx/builder_test.go
+++ b/builder/hyperv/vmcx/builder_test.go
@@ -10,7 +10,7 @@ import (
 	"os"
 
 	hypervcommon "github.com/hashicorp/packer/builder/hyperv/common"
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	"github.com/hashicorp/packer/packer-plugin-sdk/multistep"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
@@ -25,7 +25,7 @@ func testConfig() map[string]interface{} {
 		"memory":                  64,
 		"guest_additions_mode":    "none",
 		"clone_from_vmcx_path":    "generated",
-		packer.BuildNameConfigKey: "foo",
+		common.BuildNameConfigKey: "foo",
 	}
 }
 
@@ -483,7 +483,7 @@ func TestUserVariablesInBootCommand(t *testing.T) {
 	defer os.RemoveAll(td)
 	config["clone_from_vmcx_path"] = td
 
-	config[packer.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
+	config[common.UserVariablesConfigKey] = map[string]string{"test-variable": "test"}
 	config["boot_command"] = []string{"blah {{user `test-variable`}} blah"}
 
 	_, warns, err := b.Prepare(config)
diff --git a/builder/parallels/iso/builder_test.go b/builder/parallels/iso/builder_test.go
index b56e57e7d3f98e4810d73cc8dda267f5cec8db07..b29b7db6cd0b9365165485a261ff6d05689ec820 100644
--- a/builder/parallels/iso/builder_test.go
+++ b/builder/parallels/iso/builder_test.go
@@ -5,7 +5,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
 
@@ -17,7 +17,7 @@ func testConfig() map[string]interface{} {
 		"ssh_username":           "foo",
 		"parallels_tools_flavor": "lin",
 
-		packer.BuildNameConfigKey: "foo",
+		common.BuildNameConfigKey: "foo",
 	}
 }
 
diff --git a/builder/qemu/config_test.go b/builder/qemu/config_test.go
index e74c7e3363f51fd523719f43ad0f998392e010aa..9b10e9cdf129ef5141b1e342339360342842758b 100644
--- a/builder/qemu/config_test.go
+++ b/builder/qemu/config_test.go
@@ -9,7 +9,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 	"github.com/stretchr/testify/assert"
 )
@@ -49,7 +49,7 @@ func testConfig() map[string]interface{} {
 		"iso_checksum":            "md5:0B0F137F17AC10944716020B018F8126",
 		"iso_url":                 "http://www.google.com/",
 		"ssh_username":            "foo",
-		packer.BuildNameConfigKey: "foo",
+		common.BuildNameConfigKey: "foo",
 	}
 }
 
diff --git a/builder/virtualbox/iso/acceptance/builder_acceptance.go b/builder/virtualbox/iso/acceptance/builder_acceptance.go
index 08bc889db31af6403d49f6d765aa9f89b03336b1..e394ca6c44b8d48e012c28620282324118fbce72 100644
--- a/builder/virtualbox/iso/acceptance/builder_acceptance.go
+++ b/builder/virtualbox/iso/acceptance/builder_acceptance.go
@@ -11,7 +11,6 @@ import (
 
 	"github.com/hashicorp/packer/builder/virtualbox/iso"
 
-	"github.com/hashicorp/packer/packer"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 
 	testshelper "github.com/hashicorp/packer/helper/tests"
@@ -40,8 +39,8 @@ func (v *VirtualBoxISOAccTest) CleanUp() error {
 	return nil
 }
 
-func (v *VirtualBoxISOAccTest) GetBuilderStore() packer.MapOfBuilder {
-	return packer.MapOfBuilder{
+func (v *VirtualBoxISOAccTest) GetBuilderStore() packersdk.MapOfBuilder {
+	return packersdk.MapOfBuilder{
 		"virtualbox-iso": func() (packersdk.Builder, error) { return &iso.Builder{}, nil },
 	}
 }
diff --git a/builder/virtualbox/iso/builder_test.go b/builder/virtualbox/iso/builder_test.go
index 982cf784bb8734f32946616a5d5768248cacd3f3..fceadf05e16631a9b024773054e35858d4fbb732 100644
--- a/builder/virtualbox/iso/builder_test.go
+++ b/builder/virtualbox/iso/builder_test.go
@@ -6,7 +6,7 @@ import (
 	"testing"
 
 	"github.com/hashicorp/packer/builder/virtualbox/common"
-	"github.com/hashicorp/packer/packer"
+	packercommon "github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
 
@@ -17,7 +17,7 @@ func testConfig() map[string]interface{} {
 		"shutdown_command": "yes",
 		"ssh_username":     "foo",
 
-		packer.BuildNameConfigKey: "foo",
+		packercommon.BuildNameConfigKey: "foo",
 	}
 }
 
diff --git a/builder/vmware/iso/builder_test.go b/builder/vmware/iso/builder_test.go
index 05e1e223d12dc68c5ca0b3ad1c6592e98d2ba4c2..1fb06f673ff2626bddffea471c0ca8a931db0db8 100644
--- a/builder/vmware/iso/builder_test.go
+++ b/builder/vmware/iso/builder_test.go
@@ -7,7 +7,7 @@ import (
 	"reflect"
 	"testing"
 
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
 
@@ -18,7 +18,7 @@ func testConfig() map[string]interface{} {
 		"shutdown_command": "foo",
 		"ssh_username":     "foo",
 
-		packer.BuildNameConfigKey: "foo",
+		common.BuildNameConfigKey: "foo",
 	}
 }
 
diff --git a/builder/vmware/iso/step_create_vmx_test.go b/builder/vmware/iso/step_create_vmx_test.go
index 19c441de58e748ef4a65df5de81dd04c79f8e961..a741edddec173b70a6bfa0a848fc98f0552136f4 100644
--- a/builder/vmware/iso/step_create_vmx_test.go
+++ b/builder/vmware/iso/step_create_vmx_test.go
@@ -138,16 +138,16 @@ func setupVMwareBuild(t *testing.T, builderConfig map[string]string, provisioner
 
 	// create our config to test the vmware-iso builder
 	components := packer.ComponentFinder{
-		BuilderStore: packer.MapOfBuilder{
+		BuilderStore: packersdk.MapOfBuilder{
 			"vmware-iso": func() (packersdk.Builder, error) { return &Builder{}, nil },
 		},
 		Hook: func(n string) (packersdk.Hook, error) {
 			return &packersdk.DispatchHook{}, nil
 		},
-		ProvisionerStore: packer.MapOfProvisioner{
+		ProvisionerStore: packersdk.MapOfProvisioner{
 			"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
 		},
-		PostProcessorStore: packer.MapOfPostProcessor{
+		PostProcessorStore: packersdk.MapOfPostProcessor{
 			"something": func() (packersdk.PostProcessor, error) { return &packer.MockPostProcessor{}, nil },
 		},
 	}
diff --git a/command/build_parallel_test.go b/command/build_parallel_test.go
index 00b43258f98b03805f6e0e27ea12abcee6746ef0..f07b2acd7a5a1b7e2cf1b85039e120c635411e57 100644
--- a/command/build_parallel_test.go
+++ b/command/build_parallel_test.go
@@ -68,12 +68,12 @@ func testMetaParallel(t *testing.T, builder *ParallelTestBuilder, locked *Locked
 	return Meta{
 		CoreConfig: &packer.CoreConfig{
 			Components: packer.ComponentFinder{
-				BuilderStore: packer.MapOfBuilder{
+				BuilderStore: packersdk.MapOfBuilder{
 					"parallel-test": func() (packersdk.Builder, error) { return builder, nil },
 					"file":          func() (packersdk.Builder, error) { return &file.Builder{}, nil },
 					"lock":          func() (packersdk.Builder, error) { return locked, nil },
 				},
-				ProvisionerStore: packer.MapOfProvisioner{
+				ProvisionerStore: packersdk.MapOfProvisioner{
 					"sleep": func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
 				},
 			},
diff --git a/command/build_test.go b/command/build_test.go
index b5d9694c93ca7cf5958bd453698727136e80af29..fef6202036d2ad832aaf26880ef32d1f624d3d0e 100644
--- a/command/build_test.go
+++ b/command/build_test.go
@@ -836,16 +836,16 @@ func fileExists(filename string) bool {
 // available. This allows us to test a builder that writes files to disk.
 func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig {
 	components := packer.ComponentFinder{
-		BuilderStore: packer.MapOfBuilder{
+		BuilderStore: packersdk.MapOfBuilder{
 			"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
 			"null": func() (packersdk.Builder, error) { return &null.Builder{}, nil },
 		},
-		ProvisionerStore: packer.MapOfProvisioner{
+		ProvisionerStore: packersdk.MapOfProvisioner{
 			"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
 			"shell":       func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
 			"file":        func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
 		},
-		PostProcessorStore: packer.MapOfPostProcessor{
+		PostProcessorStore: packersdk.MapOfPostProcessor{
 			"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
 			"manifest":    func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
 		},
diff --git a/command/build_timeout_test.go b/command/build_timeout_test.go
index 59b4c2b3f184188816b4e8d62bdb84b563cf31dd..54cfa72c66546a4d074f05558ae9e8ba109bc8a9 100644
--- a/command/build_timeout_test.go
+++ b/command/build_timeout_test.go
@@ -16,10 +16,10 @@ import (
 // available. This allows us to test a builder that writes files to disk.
 func testCoreConfigSleepBuilder(t *testing.T) *packer.CoreConfig {
 	components := packer.ComponentFinder{
-		BuilderStore: packer.MapOfBuilder{
+		BuilderStore: packersdk.MapOfBuilder{
 			"file": func() (packersdk.Builder, error) { return &file.Builder{}, nil },
 		},
-		ProvisionerStore: packer.MapOfProvisioner{
+		ProvisionerStore: packersdk.MapOfProvisioner{
 			"sleep":       func() (packersdk.Provisioner, error) { return &sleep.Provisioner{}, nil },
 			"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
 		},
diff --git a/command/exec_test.go b/command/exec_test.go
index 8f3d2d345b6ff64dcea179170103717d8ec1af04..400a3fccb6a255b4dcf6ec87191b9f82fb4e3834 100644
--- a/command/exec_test.go
+++ b/command/exec_test.go
@@ -118,17 +118,17 @@ func commandMeta() Meta {
 
 func getBareComponentFinder() packer.ComponentFinder {
 	return packer.ComponentFinder{
-		BuilderStore: packer.MapOfBuilder{
+		BuilderStore: packersdk.MapOfBuilder{
 			"file":       func() (packersdk.Builder, error) { return &file.Builder{}, nil },
 			"null":       func() (packersdk.Builder, error) { return &null.Builder{}, nil },
 			"amazon-ebs": func() (packersdk.Builder, error) { return &ebs.Builder{}, nil },
 		},
-		ProvisionerStore: packer.MapOfProvisioner{
+		ProvisionerStore: packersdk.MapOfProvisioner{
 			"shell-local": func() (packersdk.Provisioner, error) { return &shell_local.Provisioner{}, nil },
 			"shell":       func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
 			"file":        func() (packersdk.Provisioner, error) { return &filep.Provisioner{}, nil },
 		},
-		PostProcessorStore: packer.MapOfPostProcessor{
+		PostProcessorStore: packersdk.MapOfPostProcessor{
 			"shell-local": func() (packersdk.PostProcessor, error) { return &shell_local_pp.PostProcessor{}, nil },
 			"manifest":    func() (packersdk.PostProcessor, error) { return &manifest.PostProcessor{}, nil },
 		},
diff --git a/config.go b/config.go
index d3d345e97bea56e5c0bc5bf5f4cda8c3e370210f..5feab7d6027a495075d3805ccbdcf528515f8bab 100644
--- a/config.go
+++ b/config.go
@@ -12,7 +12,6 @@ import (
 	"strings"
 
 	"github.com/hashicorp/packer/command"
-	"github.com/hashicorp/packer/packer"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 	"github.com/hashicorp/packer/packer/plugin"
 )
@@ -22,14 +21,14 @@ import (
 const PACKERSPACE = "-PACKERSPACE-"
 
 type config struct {
-	DisableCheckpoint          bool                      `json:"disable_checkpoint"`
-	DisableCheckpointSignature bool                      `json:"disable_checkpoint_signature"`
-	RawBuilders                map[string]string         `json:"builders"`
-	RawProvisioners            map[string]string         `json:"provisioners"`
-	RawPostProcessors          map[string]string         `json:"post-processors"`
-	Builders                   packer.MapOfBuilder       `json:"-"`
-	Provisioners               packer.MapOfProvisioner   `json:"-"`
-	PostProcessors             packer.MapOfPostProcessor `json:"-"`
+	DisableCheckpoint          bool                         `json:"disable_checkpoint"`
+	DisableCheckpointSignature bool                         `json:"disable_checkpoint_signature"`
+	RawBuilders                map[string]string            `json:"builders"`
+	RawProvisioners            map[string]string            `json:"provisioners"`
+	RawPostProcessors          map[string]string            `json:"post-processors"`
+	Builders                   packersdk.MapOfBuilder       `json:"-"`
+	Provisioners               packersdk.MapOfProvisioner   `json:"-"`
+	PostProcessors             packersdk.MapOfPostProcessor `json:"-"`
 	Plugins                    plugin.Config
 }
 
diff --git a/config_test.go b/config_test.go
index cf28533cd5c68755947d1027d3c997b6d168b5cd..a1d3e2ca38c2f1dc706dbdb2bf1b9104aacc8716 100644
--- a/config_test.go
+++ b/config_test.go
@@ -11,9 +11,109 @@ import (
 	"strings"
 	"testing"
 
-	"github.com/hashicorp/packer/packer"
+	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
+	"github.com/hashicorp/packer/packer/plugin"
 )
 
+func newConfig() config {
+	var conf config
+	conf.PluginMinPort = 10000
+	conf.PluginMaxPort = 25000
+	conf.Builders = packersdk.MapOfBuilder{}
+	conf.PostProcessors = packersdk.MapOfPostProcessor{}
+	conf.Provisioners = packersdk.MapOfProvisioner{}
+
+	return conf
+}
+func TestDiscoverReturnsIfMagicCookieSet(t *testing.T) {
+	config := newConfig()
+
+	os.Setenv(plugin.MagicCookieKey, plugin.MagicCookieValue)
+	defer os.Unsetenv(plugin.MagicCookieKey)
+
+	err := config.Discover()
+	if err != nil {
+		t.Fatalf("Should not have errored: %s", err)
+	}
+
+	if len(config.Builders) != 0 {
+		t.Fatalf("Should not have tried to find builders")
+	}
+}
+
+func TestEnvVarPackerPluginPath(t *testing.T) {
+	// Create a temporary directory to store plugins in
+	dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir",
+		[]string{"packer-provisioner-partyparrot"})
+	if err != nil {
+		t.Fatalf("Error creating fake custom plugins: %s", err)
+	}
+
+	defer cleanUpFunc()
+
+	// Add temp dir to path.
+	os.Setenv("PACKER_PLUGIN_PATH", dir)
+	defer os.Unsetenv("PACKER_PLUGIN_PATH")
+
+	config := newConfig()
+
+	err = config.Discover()
+	if err != nil {
+		t.Fatalf("Should not have errored: %s", err)
+	}
+
+	if len(config.Provisioners) == 0 {
+		t.Fatalf("Should have found partyparrot provisioner")
+	}
+	if _, ok := config.Provisioners["partyparrot"]; !ok {
+		t.Fatalf("Should have found partyparrot provisioner.")
+	}
+}
+
+func TestEnvVarPackerPluginPath_MultiplePaths(t *testing.T) {
+	// Create a temporary directory to store plugins in
+	dir, _, cleanUpFunc, err := generateFakePlugins("custom_plugin_dir",
+		[]string{"packer-provisioner-partyparrot"})
+	if err != nil {
+		t.Fatalf("Error creating fake custom plugins: %s", err)
+	}
+
+	defer cleanUpFunc()
+
+	pathsep := ":"
+	if runtime.GOOS == "windows" {
+		pathsep = ";"
+	}
+
+	// Create a second dir to look in that will be empty
+	decoyDir, err := ioutil.TempDir("", "decoy")
+	if err != nil {
+		t.Fatalf("Failed to create a temporary test dir.")
+	}
+	defer os.Remove(decoyDir)
+
+	pluginPath := dir + pathsep + decoyDir
+
+	// Add temp dir to path.
+	os.Setenv("PACKER_PLUGIN_PATH", pluginPath)
+	defer os.Unsetenv("PACKER_PLUGIN_PATH")
+
+	config := newConfig()
+
+	err = config.Discover()
+	if err != nil {
+		t.Fatalf("Should not have errored: %s", err)
+	}
+
+	if len(config.Provisioners) == 0 {
+		t.Fatalf("Should have found partyparrot provisioner")
+	}
+	if _, ok := config.Provisioners["partyparrot"]; !ok {
+		t.Fatalf("Should have found partyparrot provisioner.")
+	}
+}
+
+>>>>>>> move packer config constants next to the packer config
 func TestDecodeConfig(t *testing.T) {
 
 	packerConfig := `
@@ -49,9 +149,9 @@ func TestLoadExternalComponentsFromConfig(t *testing.T) {
 	defer cleanUpFunc()
 
 	var cfg config
-	cfg.Builders = packer.MapOfBuilder{}
-	cfg.PostProcessors = packer.MapOfPostProcessor{}
-	cfg.Provisioners = packer.MapOfProvisioner{}
+	cfg.Builders = packersdk.MapOfBuilder{}
+	cfg.PostProcessors = packersdk.MapOfPostProcessor{}
+	cfg.Provisioners = packersdk.MapOfProvisioner{}
 
 	if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
 		t.Fatalf("error encountered decoding configuration: %v", err)
@@ -81,7 +181,7 @@ func TestLoadExternalComponentsFromConfig_onlyProvisioner(t *testing.T) {
 	defer cleanUpFunc()
 
 	var cfg config
-	cfg.Provisioners = packer.MapOfProvisioner{}
+	cfg.Provisioners = packersdk.MapOfProvisioner{}
 
 	if err := decodeConfig(strings.NewReader(packerConfigData), &cfg); err != nil {
 		t.Fatalf("error encountered decoding configuration: %v", err)
@@ -126,9 +226,9 @@ func TestLoadSingleComponent(t *testing.T) {
 	}
 
 	var cfg config
-	cfg.Builders = packer.MapOfBuilder{}
-	cfg.PostProcessors = packer.MapOfPostProcessor{}
-	cfg.Provisioners = packer.MapOfProvisioner{}
+	cfg.Builders = packersdk.MapOfBuilder{}
+	cfg.PostProcessors = packersdk.MapOfPostProcessor{}
+	cfg.Provisioners = packersdk.MapOfProvisioner{}
 
 	for _, tc := range tt {
 		tc := tc
diff --git a/hcl2template/common_test.go b/hcl2template/common_test.go
index b0eb30aa451e9e2b7c7de47e9e662a8a819a5364..26045227897392958a67f09d3cb39cf9afc99843 100644
--- a/hcl2template/common_test.go
+++ b/hcl2template/common_test.go
@@ -20,16 +20,16 @@ import (
 func getBasicParser() *Parser {
 	return &Parser{
 		Parser: hclparse.NewParser(),
-		BuilderSchemas: packer.MapOfBuilder{
+		BuilderSchemas: packersdk.MapOfBuilder{
 			"amazon-ebs":     func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
 			"virtualbox-iso": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
 			"null":           func() (packersdk.Builder, error) { return &null.Builder{}, nil },
 		},
-		ProvisionersSchemas: packer.MapOfProvisioner{
+		ProvisionersSchemas: packersdk.MapOfProvisioner{
 			"shell": func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
 			"file":  func() (packersdk.Provisioner, error) { return &MockProvisioner{}, nil },
 		},
-		PostProcessorsSchemas: packer.MapOfPostProcessor{
+		PostProcessorsSchemas: packersdk.MapOfPostProcessor{
 			"amazon-import": func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
 			"manifest":      func() (packersdk.PostProcessor, error) { return &MockPostProcessor{}, nil },
 		},
diff --git a/helper/tests/acc/provisioners.go b/helper/tests/acc/provisioners.go
index 82c11856c5104a31adfe0a783050082e4a9c8d14..5c7a780c9ec2f4e92e5db25a892ddc17fca9b00c 100644
--- a/helper/tests/acc/provisioners.go
+++ b/helper/tests/acc/provisioners.go
@@ -14,7 +14,7 @@ import (
 	amazonEBS "github.com/hashicorp/packer/builder/amazon/ebs/acceptance"
 	virtualboxISO "github.com/hashicorp/packer/builder/virtualbox/iso/acceptance"
 	"github.com/hashicorp/packer/command"
-	"github.com/hashicorp/packer/packer"
+	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
 
 func TestProvisionersAgainstBuilders(provisionerAcc ProvisionerAcceptance, t *testing.T) {
@@ -133,14 +133,14 @@ func buildCommand(t *testing.T, builder BuilderAcceptance, provisioner Provision
 type ProvisionerAcceptance interface {
 	GetName() string
 	GetConfig() (string, error)
-	GetProvisionerStore() packer.MapOfProvisioner
+	GetProvisionerStore() packersdk.MapOfProvisioner
 	IsCompatible(builder string, vmOS string) bool
 	RunTest(c *command.BuildCommand, args []string) error
 }
 
 type BuilderAcceptance interface {
 	GetConfigs() (map[string]string, error)
-	GetBuilderStore() packer.MapOfBuilder
+	GetBuilderStore() packersdk.MapOfBuilder
 	CleanUp() error
 }
 
diff --git a/helper/tests/core.go b/helper/tests/core.go
index 87b19d0b5753d82d67cc0f5bb15659ba1143d720..5e8e2764fe0c2a9015d76e362b58549e800fb1f1 100644
--- a/helper/tests/core.go
+++ b/helper/tests/core.go
@@ -25,14 +25,14 @@ func FileExists(filename string) bool {
 // available. This allows us to test a builder that writes files to disk.
 func testCoreConfigBuilder(t *testing.T) *packer.CoreConfig {
 	components := packer.ComponentFinder{
-		BuilderStore: packer.MapOfBuilder{
+		BuilderStore: packersdk.MapOfBuilder{
 			"amazon-ebs": func() (packersdk.Builder, error) { return &amazonebsbuilder.Builder{}, nil },
 		},
-		ProvisionerStore: packer.MapOfProvisioner{
+		ProvisionerStore: packersdk.MapOfProvisioner{
 			"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
 			"file":  func() (packersdk.Provisioner, error) { return &fileprovisioner.Provisioner{}, nil },
 		},
-		PostProcessorStore: packer.MapOfPostProcessor{},
+		PostProcessorStore: packersdk.MapOfPostProcessor{},
 	}
 	return &packer.CoreConfig{
 		Components: components,
diff --git a/packer-plugin-sdk/common/packer_config.go b/packer-plugin-sdk/common/packer_config.go
index 2a666bc5df208d9f52da81d2832ed410ccf73d53..34c3091a9ace5a9f61b929af6ffd08494d93cab0 100644
--- a/packer-plugin-sdk/common/packer_config.go
+++ b/packer-plugin-sdk/common/packer_config.go
@@ -1,5 +1,42 @@
 package common
 
+const (
+	// This is the key in configurations that is set to the name of the
+	// build.
+	BuildNameConfigKey = "packer_build_name"
+
+	// This is the key in the configuration that is set to the type
+	// of the builder that is run. This is useful for provisioners and
+	// such who want to make use of this.
+	BuilderTypeConfigKey = "packer_builder_type"
+
+	// this is the key in the configuration that is set to the version of the
+	// Packer Core. This can be used by plugins to set user agents, etc, without
+	// having to import the Core to find out the Packer version.
+	CoreVersionConfigKey = "packer_core_version"
+
+	// This is the key in configurations that is set to "true" when Packer
+	// debugging is enabled.
+	DebugConfigKey = "packer_debug"
+
+	// This is the key in configurations that is set to "true" when Packer
+	// force build is enabled.
+	ForceConfigKey = "packer_force"
+
+	// This key determines what to do when a normal multistep step fails
+	// - "cleanup" - run cleanup steps
+	// - "abort" - exit without cleanup
+	// - "ask" - ask the user
+	OnErrorConfigKey = "packer_on_error"
+
+	// TemplatePathKey is the path to the template that configured this build
+	TemplatePathKey = "packer_template_path"
+
+	// This key contains a map[string]string of the user variables for
+	// template processing.
+	UserVariablesConfigKey = "packer_user_variables"
+)
+
 // PackerConfig is a struct that contains the configuration keys that
 // are sent by packer, properly tagged already so mapstructure can load
 // them. Embed this structure into your configuration class to get access to
diff --git a/packer/maps.go b/packer-plugin-sdk/packer/maps.go
similarity index 67%
rename from packer/maps.go
rename to packer-plugin-sdk/packer/maps.go
index 388aa2381719949eedb3e93c240ed1cfbaad428d..7cad0a0141a05e3cd9f08994610c5f1e65bf921d 100644
--- a/packer/maps.go
+++ b/packer-plugin-sdk/packer/maps.go
@@ -2,18 +2,16 @@ package packer
 
 import (
 	"fmt"
-
-	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
 
-type MapOfProvisioner map[string]func() (packersdk.Provisioner, error)
+type MapOfProvisioner map[string]func() (Provisioner, error)
 
 func (mop MapOfProvisioner) Has(provisioner string) bool {
 	_, res := mop[provisioner]
 	return res
 }
 
-func (mop MapOfProvisioner) Start(provisioner string) (packersdk.Provisioner, error) {
+func (mop MapOfProvisioner) Start(provisioner string) (Provisioner, error) {
 	p, found := mop[provisioner]
 	if !found {
 		return nil, fmt.Errorf("Unknown provisioner %s", provisioner)
@@ -29,14 +27,14 @@ func (mop MapOfProvisioner) List() []string {
 	return res
 }
 
-type MapOfPostProcessor map[string]func() (packersdk.PostProcessor, error)
+type MapOfPostProcessor map[string]func() (PostProcessor, error)
 
 func (mopp MapOfPostProcessor) Has(postProcessor string) bool {
 	_, res := mopp[postProcessor]
 	return res
 }
 
-func (mopp MapOfPostProcessor) Start(postProcessor string) (packersdk.PostProcessor, error) {
+func (mopp MapOfPostProcessor) Start(postProcessor string) (PostProcessor, error) {
 	p, found := mopp[postProcessor]
 	if !found {
 		return nil, fmt.Errorf("Unknown post-processor %s", postProcessor)
@@ -52,14 +50,14 @@ func (mopp MapOfPostProcessor) List() []string {
 	return res
 }
 
-type MapOfBuilder map[string]func() (packersdk.Builder, error)
+type MapOfBuilder map[string]func() (Builder, error)
 
 func (mob MapOfBuilder) Has(builder string) bool {
 	_, res := mob[builder]
 	return res
 }
 
-func (mob MapOfBuilder) Start(builder string) (packersdk.Builder, error) {
+func (mob MapOfBuilder) Start(builder string) (Builder, error) {
 	d, found := mob[builder]
 	if !found {
 		return nil, fmt.Errorf("Unknown builder %s", builder)
diff --git a/packer/build.go b/packer/build.go
index d365034266ec4ff78edcc0ecaa56a7d06462ece6..03da65d0a5c405b7a05aaa38a2a2c47c64efff14 100644
--- a/packer/build.go
+++ b/packer/build.go
@@ -6,48 +6,12 @@ import (
 	"log"
 	"sync"
 
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 	"github.com/hashicorp/packer/packer-plugin-sdk/packerbuilderdata"
 	"github.com/hashicorp/packer/version"
 )
 
-const (
-	// This is the key in configurations that is set to the name of the
-	// build.
-	BuildNameConfigKey = "packer_build_name"
-
-	// This is the key in the configuration that is set to the type
-	// of the builder that is run. This is useful for provisioners and
-	// such who want to make use of this.
-	BuilderTypeConfigKey = "packer_builder_type"
-
-	// this is the key in the configuration that is set to the version of the
-	// Packer Core. This can be used by plugins to set user agents, etc, without
-	// having to import the Core to find out the Packer version.
-	CoreVersionConfigKey = "packer_core_version"
-
-	// This is the key in configurations that is set to "true" when Packer
-	// debugging is enabled.
-	DebugConfigKey = "packer_debug"
-
-	// This is the key in configurations that is set to "true" when Packer
-	// force build is enabled.
-	ForceConfigKey = "packer_force"
-
-	// This key determines what to do when a normal multistep step fails
-	// - "cleanup" - run cleanup steps
-	// - "abort" - exit without cleanup
-	// - "ask" - ask the user
-	OnErrorConfigKey = "packer_on_error"
-
-	// TemplatePathKey is the path to the template that configured this build
-	TemplatePathKey = "packer_template_path"
-
-	// This key contains a map[string]string of the user variables for
-	// template processing.
-	UserVariablesConfigKey = "packer_user_variables"
-)
-
 // A Build represents a single job within Packer that is responsible for
 // building some machine image artifact. Builds are meant to be parallelized.
 type Build interface {
@@ -165,14 +129,14 @@ func (b *CoreBuild) Prepare() (warn []string, err error) {
 	b.prepareCalled = true
 
 	packerConfig := map[string]interface{}{
-		BuildNameConfigKey:     b.Type,
-		BuilderTypeConfigKey:   b.BuilderType,
-		CoreVersionConfigKey:   version.FormattedVersion(),
-		DebugConfigKey:         b.debug,
-		ForceConfigKey:         b.force,
-		OnErrorConfigKey:       b.onError,
-		TemplatePathKey:        b.TemplatePath,
-		UserVariablesConfigKey: b.Variables,
+		common.BuildNameConfigKey:     b.Type,
+		common.BuilderTypeConfigKey:   b.BuilderType,
+		common.CoreVersionConfigKey:   version.FormattedVersion(),
+		common.DebugConfigKey:         b.debug,
+		common.ForceConfigKey:         b.force,
+		common.OnErrorConfigKey:       b.onError,
+		common.TemplatePathKey:        b.TemplatePath,
+		common.UserVariablesConfigKey: b.Variables,
 	}
 
 	// Prepare the builder
diff --git a/packer/build_test.go b/packer/build_test.go
index ce680c9d54cd7dc5f6ced7eed81e28dd39c2719b..987f46366285730bd2c88448e24d2f7cab6b73c0 100644
--- a/packer/build_test.go
+++ b/packer/build_test.go
@@ -5,6 +5,7 @@ import (
 	"reflect"
 	"testing"
 
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 	"github.com/hashicorp/packer/packer-plugin-sdk/packerbuilderdata"
 	"github.com/hashicorp/packer/version"
@@ -41,14 +42,14 @@ func testBuild() *CoreBuild {
 
 func testDefaultPackerConfig() map[string]interface{} {
 	return map[string]interface{}{
-		BuildNameConfigKey:     "test",
-		BuilderTypeConfigKey:   "foo",
-		CoreVersionConfigKey:   version.FormattedVersion(),
-		DebugConfigKey:         false,
-		ForceConfigKey:         false,
-		OnErrorConfigKey:       "cleanup",
-		TemplatePathKey:        "",
-		UserVariablesConfigKey: make(map[string]string),
+		common.BuildNameConfigKey:     "test",
+		common.BuilderTypeConfigKey:   "foo",
+		common.CoreVersionConfigKey:   version.FormattedVersion(),
+		common.DebugConfigKey:         false,
+		common.ForceConfigKey:         false,
+		common.OnErrorConfigKey:       "cleanup",
+		common.TemplatePathKey:        "",
+		common.UserVariablesConfigKey: make(map[string]string),
 	}
 }
 func TestBuild_Name(t *testing.T) {
@@ -144,7 +145,7 @@ func TestBuildPrepare_BuilderWarnings(t *testing.T) {
 
 func TestBuild_Prepare_Debug(t *testing.T) {
 	packerConfig := testDefaultPackerConfig()
-	packerConfig[DebugConfigKey] = true
+	packerConfig[common.DebugConfigKey] = true
 
 	build := testBuild()
 	builder := build.Builder.(*MockBuilder)
@@ -170,7 +171,7 @@ func TestBuild_Prepare_Debug(t *testing.T) {
 
 func TestBuildPrepare_variables_default(t *testing.T) {
 	packerConfig := testDefaultPackerConfig()
-	packerConfig[UserVariablesConfigKey] = map[string]string{
+	packerConfig[common.UserVariablesConfigKey] = map[string]string{
 		"foo": "bar",
 	}
 
diff --git a/packer/core_test.go b/packer/core_test.go
index 813c58d181bd39d05732bcd816c18f72944cc00a..d73c0b03691fc85402e112c50e3d8d6fea055f09 100644
--- a/packer/core_test.go
+++ b/packer/core_test.go
@@ -800,7 +800,7 @@ func TestCoreBuild_provRetry(t *testing.T) {
 	b := TestBuilder(t, config, "test")
 	pString := new(MockProvisioner)
 	pInt := new(MockProvisioner)
-	config.Components.ProvisionerStore = MapOfProvisioner{
+	config.Components.ProvisionerStore = packersdk.MapOfProvisioner{
 		"test-string": func() (packersdk.Provisioner, error) { return pString, nil },
 		// backwards compatibility
 		"test-integer": func() (packersdk.Provisioner, error) { return pInt, nil },
diff --git a/packer/testing.go b/packer/testing.go
index b6162093a016c0f98bd9665fa81d0797f0b48214..aaed749db8ef106642603d6a04fc5ef2e7e1e655 100644
--- a/packer/testing.go
+++ b/packer/testing.go
@@ -11,7 +11,7 @@ import (
 func TestCoreConfig(t *testing.T) *CoreConfig {
 	// Create some test components
 	components := ComponentFinder{
-		BuilderStore: MapOfBuilder{
+		BuilderStore: packersdk.MapOfBuilder{
 			"test": func() (packersdk.Builder, error) { return &MockBuilder{}, nil },
 		},
 	}
@@ -45,7 +45,7 @@ func TestUi(t *testing.T) packersdk.Ui {
 func TestBuilder(t *testing.T, c *CoreConfig, n string) *MockBuilder {
 	var b MockBuilder
 
-	c.Components.BuilderStore = MapOfBuilder{
+	c.Components.BuilderStore = packersdk.MapOfBuilder{
 		n: func() (packersdk.Builder, error) { return &b, nil },
 	}
 
@@ -57,7 +57,7 @@ func TestBuilder(t *testing.T, c *CoreConfig, n string) *MockBuilder {
 func TestProvisioner(t *testing.T, c *CoreConfig, n string) *MockProvisioner {
 	var b MockProvisioner
 
-	c.Components.ProvisionerStore = MapOfProvisioner{
+	c.Components.ProvisionerStore = packersdk.MapOfProvisioner{
 		n: func() (packersdk.Provisioner, error) { return &b, nil },
 	}
 
@@ -69,7 +69,7 @@ func TestProvisioner(t *testing.T, c *CoreConfig, n string) *MockProvisioner {
 func TestPostProcessor(t *testing.T, c *CoreConfig, n string) *MockPostProcessor {
 	var b MockPostProcessor
 
-	c.Components.PostProcessorStore = MapOfPostProcessor{
+	c.Components.PostProcessorStore = packersdk.MapOfPostProcessor{
 		n: func() (packersdk.PostProcessor, error) { return &b, nil },
 	}
 
diff --git a/provisioner/chef-solo/provisioner_test.go b/provisioner/chef-solo/provisioner_test.go
index 9a378efc041e19b9ac557c07865530df00cd69ed..132cb36de0f0042b0f7a8c1ec7bc9dd4b1908db2 100644
--- a/provisioner/chef-solo/provisioner_test.go
+++ b/provisioner/chef-solo/provisioner_test.go
@@ -5,7 +5,7 @@ import (
 	"os"
 	"testing"
 
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 )
 
@@ -303,7 +303,7 @@ func TestProvisionerPrepare_json(t *testing.T) {
 		"foo": "{{ user `foo` }}",
 	}
 
-	config[packer.UserVariablesConfigKey] = map[string]string{
+	config[common.UserVariablesConfigKey] = map[string]string{
 		"foo": `"bar\baz"`,
 	}
 
diff --git a/provisioner/powershell/provisioner_acc_test.go b/provisioner/powershell/provisioner_acc_test.go
index baad86fad10080819317bb63bbe39ae7860d22dc..62837e992fec87aa355ba4a90d602517554d7c0c 100644
--- a/provisioner/powershell/provisioner_acc_test.go
+++ b/provisioner/powershell/provisioner_acc_test.go
@@ -11,7 +11,6 @@ import (
 	"github.com/hashicorp/go-uuid"
 	"github.com/hashicorp/packer/command"
 	"github.com/hashicorp/packer/helper/tests/acc"
-	"github.com/hashicorp/packer/packer"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 	"github.com/hashicorp/packer/provisioner/powershell"
 	windowsshellprovisioner "github.com/hashicorp/packer/provisioner/windows-shell"
@@ -63,8 +62,8 @@ func (s *PowershellProvisionerAccTest) GetConfig() (string, error) {
 	return string(file), nil
 }
 
-func (s *PowershellProvisionerAccTest) GetProvisionerStore() packer.MapOfProvisioner {
-	return packer.MapOfProvisioner{
+func (s *PowershellProvisionerAccTest) GetProvisionerStore() packersdk.MapOfProvisioner {
+	return packersdk.MapOfProvisioner{
 		TestProvisionerName: func() (packersdk.Provisioner, error) { return &powershell.Provisioner{}, nil },
 		"windows-shell":     func() (packersdk.Provisioner, error) { return &windowsshellprovisioner.Provisioner{}, nil },
 	}
diff --git a/provisioner/powershell/provisioner_test.go b/provisioner/powershell/provisioner_test.go
index feb14c2f18d72a41fca80ea7335d048293a462e3..a14e219102cc71bd353344455b1af3d498f6fe66 100644
--- a/provisioner/powershell/provisioner_test.go
+++ b/provisioner/powershell/provisioner_test.go
@@ -11,7 +11,7 @@ import (
 	"testing"
 	"time"
 
-	"github.com/hashicorp/packer/packer"
+	"github.com/hashicorp/packer/packer-plugin-sdk/common"
 	"github.com/hashicorp/packer/packer-plugin-sdk/multistep/commonsteps"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 	"github.com/stretchr/testify/assert"
@@ -89,7 +89,7 @@ func TestProvisionerPrepare_Config(t *testing.T) {
 	config := testConfig()
 	config["elevated_user"] = "{{user `user`}}"
 	config["elevated_password"] = "{{user `password`}}"
-	config[packer.UserVariablesConfigKey] = map[string]string{
+	config[common.UserVariablesConfigKey] = map[string]string{
 		"user":     "myusername",
 		"password": "mypassword",
 	}
diff --git a/provisioner/shell-local/provisioner_acc_test.go b/provisioner/shell-local/provisioner_acc_test.go
index 0b2e608a17c7a85412f485d0abbbc3b55c9c3ac4..91c58534b514754a8e781396095174bffccfe44e 100644
--- a/provisioner/shell-local/provisioner_acc_test.go
+++ b/provisioner/shell-local/provisioner_acc_test.go
@@ -11,7 +11,6 @@ import (
 	"github.com/hashicorp/packer/helper/tests/acc"
 	"github.com/hashicorp/packer/provisioner/shell"
 
-	"github.com/hashicorp/packer/packer"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 
 	"github.com/hashicorp/packer/command"
@@ -40,8 +39,8 @@ func (s *ShellLocalProvisionerAccTest) GetConfig() (string, error) {
 	return string(file), err
 }
 
-func (s *ShellLocalProvisionerAccTest) GetProvisionerStore() packer.MapOfProvisioner {
-	return packer.MapOfProvisioner{
+func (s *ShellLocalProvisionerAccTest) GetProvisionerStore() packersdk.MapOfProvisioner {
+	return packersdk.MapOfProvisioner{
 		"shell-local": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
 	}
 }
diff --git a/provisioner/shell/provisioner_acc_test.go b/provisioner/shell/provisioner_acc_test.go
index 5ba6ac42f623595896b76d5a05a3cae577db09d5..4cde4db80715b818a70419cebbeaa7ec257ebc2e 100644
--- a/provisioner/shell/provisioner_acc_test.go
+++ b/provisioner/shell/provisioner_acc_test.go
@@ -12,7 +12,6 @@ import (
 	"github.com/hashicorp/packer/provisioner/file"
 	"github.com/hashicorp/packer/provisioner/shell"
 
-	"github.com/hashicorp/packer/packer"
 	packersdk "github.com/hashicorp/packer/packer-plugin-sdk/packer"
 
 	"github.com/hashicorp/go-uuid"
@@ -43,8 +42,8 @@ func (s *ShellProvisionerAccTest) GetConfig() (string, error) {
 	return string(file), err
 }
 
-func (s *ShellProvisionerAccTest) GetProvisionerStore() packer.MapOfProvisioner {
-	return packer.MapOfProvisioner{
+func (s *ShellProvisionerAccTest) GetProvisionerStore() packersdk.MapOfProvisioner {
+	return packersdk.MapOfProvisioner{
 		"shell": func() (packersdk.Provisioner, error) { return &shell.Provisioner{}, nil },
 		"file":  func() (packersdk.Provisioner, error) { return &file.Provisioner{}, nil },
 	}