diff --git a/core/installer/name.go b/core/installer/name.go
new file mode 100644
index 0000000..f0ba6a4
--- /dev/null
+++ b/core/installer/name.go
@@ -0,0 +1,29 @@
+package installer
+
+import (
+	"crypto/rand"
+)
+
+type NameGenerator interface {
+	Generate() (string, error)
+}
+
+type fixedLengthRandomNameGenerator struct {
+	len int
+}
+
+func NewFixedLengthRandomNameGenerator(len int) NameGenerator {
+	return &fixedLengthRandomNameGenerator{len}
+}
+
+func (g *fixedLengthRandomNameGenerator) Generate() (string, error) {
+	r := make([]byte, g.len)
+	if _, err := rand.Read(r); err != nil {
+		return "", err
+	}
+	ret := make([]rune, g.len)
+	for i, v := range r {
+		ret[i] += letters[v%26]
+	}
+	return string(ret), nil
+}
