diff --git a/pkg/machine/hyperv/machine.go b/pkg/machine/hyperv/machine.go
index 8b71a38e28..18802cc6e1 100644
--- a/pkg/machine/hyperv/machine.go
+++ b/pkg/machine/hyperv/machine.go
@@ -202,6 +202,20 @@ method=auto
 	return ign.Write()
 }
 
+func (m *HyperVMachine) readAndSplitIgnition() error {
+	ignFile, err := m.IgnitionFile.Read()
+	if err != nil {
+		return err
+	}
+	reader := bytes.NewReader(ignFile)
+
+	vm, err := hypervctl.NewVirtualMachineManager().GetMachine(m.Name)
+	if err != nil {
+		return err
+	}
+	return vm.SplitAndAddIgnition("ignition.config.", reader)
+}
+
 func (m *HyperVMachine) Init(opts machine.InitOptions) (bool, error) {
 	var (
 		key string
@@ -273,17 +287,7 @@ func (m *HyperVMachine) Init(opts machine.InitOptions) (bool, error) {
 	}
 	// The ignition file has been written. We now need to
 	// read it so that we can put it into key-value pairs
-	ignFile, err := m.IgnitionFile.Read()
-	if err != nil {
-		return false, err
-	}
-	reader := bytes.NewReader(ignFile)
-
-	vm, err := hypervctl.NewVirtualMachineManager().GetMachine(m.Name)
-	if err != nil {
-		return false, err
-	}
-	err = vm.SplitAndAddIgnition("ignition.config.", reader)
+	err = m.readAndSplitIgnition()
 	return err == nil, err
 }