// Module included in the following assemblies: // // * virt/virtual_machines/virtual_disks/virt-configuring-local-storage-for-vms.adoc [id="virt-using-hostpath-provisioner_{context}"] = Using the hostpath provisioner to enable local storage To deploy the hostpath provisioner and enable your virtual machines to use local storage, first create a HostPathProvisioner custom resource. .Prerequisites * Create a backing directory on each node for the PersistentVolumes (PVs) that the hostpath provisioner creates. * Apply the SELinux context `container_file_t` to the PV backing directory on each node. For example: + [source,terminal] ---- $ sudo chcon -t container_file_t -R ---- + [NOTE] ==== If you use Red Hat Enterprise Linux CoreOS 8 workers, you must configure SELinux by using a MachineConfig manifest instead. ==== .Procedure . Create the HostPathProvisioner custom resource file. For example: + [source,terminal] ---- $ touch hostpathprovisioner_cr.yaml ---- . Edit the file, ensuring that the `spec.pathConfig.path` value is the directory where you want the hostpath provisioner to create PVs. For example: + [source,yaml] ---- apiVersion: hostpathprovisioner.kubevirt.io/v1beta1 kind: HostPathProvisioner metadata: name: hostpath-provisioner spec: imagePullPolicy: IfNotPresent pathConfig: path: "" <1> useNamingPrefix: "false" <2> ---- <1> Specify the backing directory where you want the provisioner to create PVs. <2> Change this value to `true` if you want to use the name of the PersistentVolumeClaim (PVC) that is bound to the created PV as the prefix of the directory name. + [NOTE] ==== If you did not create the backing directory, the provisioner attempts to create it for you. If you did not apply the `container_file_t` SELinux context, this can cause `Permission denied` errors. ==== . Create the custom resource in the `openshift-cnv` namespace: + [source,terminal] ---- $ oc create -f hostpathprovisioner_cr.yaml -n openshift-cnv ----