6.13. Exporting and Importing Virtual Machines and Templates
The export storage domain is deprecated. Storage data domains can be unattached from a data center and imported to another data center in the same environment, or in a different environment. Virtual machines, floating virtual disks, and templates can then be uploaded from the imported storage domain to the attached data center. See the Importing Existing Storage Domains section in the Red Hat Virtualization Administration Guide for information on importing storage domains.
You can export virtual machines and templates from, and import them to, data centers in the same or different Red Hat Virtualization environment. You can export or import virtual machines by using an export domain, a data domain, or by using a Red Hat Virtualization host.
When you export or import a virtual machine or template, properties including basic details such as the name and description, resource allocation, and high availability settings of that virtual machine or template are preserved.
The permissions and user roles of virtual machines and templates are included in the OVF files, so that when a storage domain is detached from one data center and attached to another, the virtual machines and templates can be imported with their original permissions and user roles. In order for permissions to be registered successfully, the users and roles related to the permissions of the virtual machines or templates must exist in the data center before the registration process.
You can also use the V2V feature to import virtual machines from other virtualization providers, such as RHEL 5 Xen or VMware, or import Windows virtual machines. V2V converts virtual machines so that they can be hosted by Red Hat Virtualization. For more information on installing and using V2V, see Converting Virtual Machines from Other Hypervisors to KVM with virt-v2v.
Virtual machines must be shut down before being imported.
6.13.1. Exporting a Virtual Machine to the Export Domain
Export a virtual machine to the export domain so that it can be imported into a different data center. Before you begin, the export domain must be attached to the data center that contains the virtual machine to be exported.
Exporting a Virtual Machine to the Export Domain
-
Click
and select a virtual machine. - Click More Actions ( ), then click Export to Export Domain.
Optionally, select the following check boxes in the Export Virtual Machine window:
- Force Override: overrides existing images of the virtual machine on the export domain.
Collapse Snapshots: creates a single export volume per disk. This option removes snapshot restore points and includes the template in a template-based virtual machine, and removes any dependencies a virtual machine has on a template. For a virtual machine that is dependent on a template, either select this option, export the template with the virtual machine, or make sure the template exists in the destination data center.
NoteWhen you create a virtual machine from a template by clicking
and clicking , you wll see two storage allocation options in the Storage Allocation section in the Resource Allocation tab: - If Clone is selected, the virtual machine is not dependent on the template. The template does not have to exist in the destination data center.
- If Thin is selected, the virtual machine is dependent on the template, so the template must exist in the destination data center or be exported with the virtual machine. Alternatively, select the Collapse Snapshots check box to collapse the template disk and virtual disk into a single disk.
To check which option was selected, click a virtual machine’s name and click the General tab in the details view.
- Click .
The export of the virtual machine begins. The virtual machine displays in Image Locked
status while it is exported. Depending on the size of your virtual machine hard disk images, and your storage hardware, this can take up to an hour. Click the Events tab to view progress. When complete, the virtual machine has been exported to the export domain and displays in the VM Import tab of the export domain’s details view.
6.13.2. Exporting a Virtual Machine to a Data Domain
You can export a virtual machine to a data domain to store a clone of the virtual machine as a backup.
When you export a virtual machine that is dependent on a template, the target storage domain should include that template.
When you create a virtual machine from a template, you can choose from either of two storage allocation options:
- Clone: The virtual machine is not dependent on the template. The template does not have to exist in the destination storage domain.
- Thin: The virtual machine is dependent on the template, so the template must exist in the destination storage domain.
To check which option is selected, click a virtual machine’s name and click the General tab in the details view.
Prerequisites
- The data domain is attached to a data center.
The virtual machine is powered off.
Procedure
-
Click
and select a virtual machine. - Click .
- Specify a name for the exported virtual machine.
- Select a target storage domain from the Storage domain pop-up menu.
- (Optional) Check Collapse snapshots to export the virtual machine without any snapshots.
- Click .
-
Click
The Manager clones the virtual machine, including all its disks, to the target domain.
When you move a disk from one type of data domain another, the disk format changes accordingly. For example, if the disk is on an NFS data domain, and it is in sparse format, then if you move the disk to an iSCSI domain its format changes to preallocated. This is different from using an export domain, because an export domain is NFS.
The virtual machine appears with an Image Locked status while it is exported. Depending on the size of your virtual machine hard disk images, and your storage hardware, this can take up to an hour. Click the Events tab to view progress. When complete, the virtual machine has been exported to the data domain and appears in the list of virtual machines.
Additional resources
- Creating a Virtual Machine Based on a Template in the Virtual Machine Management Guide
6.13.3. Importing a Virtual Machine from the Export Domain
You have a virtual machine on an export domain. Before the virtual machine can be imported to a new data center, the export domain must be attached to the destination data center.
Importing a Virtual Machine into the Destination Data Center
-
Click
and select the export domain. The export domain must have a status of Active
. - Click the export domain’s name to go to the details view.
- Click the VM Import tab to list the available virtual machines to import.
- Select one or more virtual machines to import and click .
- Select the Target Cluster.
- Select the Collapse Snapshots check box to remove snapshot restore points and include templates in template-based virtual machines.
- Click the virtual machine to be imported and click the Disks sub-tab. From this tab, you can use the Allocation Policy and Storage Domain drop-down lists to select whether the disk used by the virtual machine will be thinly provisioned or preallocated, and can also select the storage domain on which the disk will be stored. An icon is also displayed to indicate which of the disks to be imported acts as the boot disk for that virtual machine.
Click
to import the virtual machines.The Import Virtual Machine Conflict window opens if the virtual machine exists in the virtualized environment.
Choose one of the following radio buttons:
- Don’t import
- Import as cloned and enter a unique name for the virtual machine in the New Name field.
- Optionally select the Apply to all check box to import all duplicated virtual machines with the same suffix, and then enter a suffix in the Suffix to add to the cloned VMs field.
- Click .
During a single import operation, you can only import virtual machines that share the same architecture. If any of the virtual machines to be imported have a different architecture to that of the other virtual machines to be imported, a warning will display and you will be prompted to change your selection so that only virtual machines with the same architecture will be imported.
6.13.4. Importing a Virtual Machine from a Data Domain
You can import a virtual machine into one or more clusters from a data storage domain.
Prerequisite
- If you are importing a virtual machine from an imported data storage domain, the imported storage domain must be attached to a data center and activated.
Procedure
-
Click
. - Click the imported storage domain’s name. This opens the details view.
- Click the VM Import tab.
- Select one or more virtual machines to import.
- Click Import.
- For each virtual machine in the Import Virtual Machine(s) window, ensure the correct target cluster is selected in the Cluster list.
Map external virtual machine vNIC profiles to profiles that are present on the target cluster(s):
- Click vNic Profiles Mapping.
- Select the vNIC profile to use from the Target vNic Profile drop-down list.
- If multiple target clusters are selected in the Import Virtual Machine(s) window, select each target cluster in the Target Cluster drop-down list and ensure the mappings are correct.
- Click .
If a MAC address conflict is detected, an exclamation mark appears next to the name of the virtual machine. Mouse over the icon to view a tooltip displaying the type of error that occurred.
Select the Reassign Bad MACs check box to reassign new MAC addresses to all problematic virtual machines. Alternatively, you can select the Reassign check box per virtual machine.
NoteIf there are no available addresses to assign, the import operation will fail. However, in the case of MAC addresses that are outside the cluster’s MAC address pool range, it is possible to import the virtual machine without reassigning a new MAC address.
- Click .
The imported virtual machines no longer appear in the list under the VM Import tab.
6.13.5. Importing a Virtual Machine from a VMware Provider
Import virtual machines from a VMware vCenter provider to your Red Hat Virtualization environment. You can import from a VMware provider by entering its details in the Import Virtual Machine(s) window during each import operation, or you can add the VMware provider as an external provider, and select the preconfigured provider during import operations. To add an external provider, see Adding a VMware Instance as a Virtual Machine Provider.
Red Hat Virtualization uses V2V to import VMware virtual machines. For OVA files, the only disk format Red Hat Virtualization supports is VMDK.
The virt-v2v
package is not available on the ppc64le architecture and these hosts cannot be used as proxy hosts.
If the import fails, refer to the relevant log file in /var/log/vdsm/import/
and to /var/log/vdsm/vdsm.log
on the proxy host for details.
Prerequisites
-
The
virt-v2v
package must be installed on at least one host, referred to in this procedure as the proxy host. Thevirt-v2v
package is available by default on Red Hat Virtualization Hosts and is installed on Red Hat Enterprise Linux hosts as a dependency of VDSM when added to the Red Hat Virtualization environment. - Red Hat Enterprise Linux hosts must be Red Hat Enterprise Linux 7.2 or later.
At least one data and one ISO storage domain are connected to the data center.
NoteYou can only migrate to shared storage, such as NFS, iSCSI, or FCP. Local storage is not supported.
Although the ISO storage domain has been deprecated, it is required for migration.
-
The
virtio-win_version.iso
image file for Windows virtual machines is uploaded to the ISO storage domain. This image includes the guest tools that are required for migrating Windows virtual machines. - The virtual machine must be shut down before being imported. Starting the virtual machine through VMware during the import process can result in data corruption.
- An import operation can only include virtual machines that share the same architecture. If any virtual machine to be imported has a different architecture, a warning appears and you are prompted to change your selection to include only virtual machines with the same architecture.
Procedure
-
Click
. - Click More Actions ( ) and select Import. This opens the Import Virtual Machine(s) window.
- Select VMware from the Source list.
- If you have configured a VMware provider as an external provider, select it from the External Provider list. Verify that the provider credentials are correct. If you did not specify a destination data center or proxy host when configuring the external provider, select those options now.
If you have not configured a VMware provider, or want to import from a new VMware provider, provide the following details:
- Select from the list the Data Center in which the virtual machine will be available.
- Enter the IP address or fully qualified domain name of the VMware vCenter instance in the vCenter field.
- Enter the IP address or fully qualified domain name of the host from which the virtual machines will be imported in the ESXi field.
- Enter the name of the data center and the cluster in which the specified ESXi host resides in the Data Center field.
- If you have exchanged the SSL certificate between the ESXi host and the Manager, leave Verify server’s SSL certificate checked to verify the ESXi host’s certificate. If not, clear the option.
- Enter the Username and Password for the VMware vCenter instance. The user must have access to the VMware data center and ESXi host on which the virtual machines reside.
-
Select a host in the chosen data center with
virt-v2v
installed to serve as the Proxy Host during virtual machine import operations. This host must also be able to connect to the network of the VMware vCenter external provider.
- Click Load to list the virtual machines on the VMware provider that can be imported.
Select one or more virtual machines from the Virtual Machines on Source list, and use the arrows to move them to the Virtual Machines to Import list. Click .
NoteIf a virtual machine’s network device uses the driver type e1000 or rtl8139, the virtual machine will use the same driver type after it has been imported to Red Hat Virtualization.
If required, you can change the driver type to VirtIO manually after the import. To change the driver type after a virtual machine has been imported, see Editing network interfaces. If the network device uses driver types other than e1000 or rtl8139, the driver type is changed to VirtIO automatically during the import. The Attach VirtIO-drivers option allows the VirtIO drivers to be injected to the imported virtual machine files so that when the driver is changed to VirtIO, the device will be properly detected by the operating system.
- Select the Cluster in which the virtual machines will reside.
- Select a CPU Profile for the virtual machines.
- Select the Collapse Snapshots check box to remove snapshot restore points and include templates in template-based virtual machines.
- Select the Clone check box to change the virtual machine name and MAC addresses, and clone all disks, removing all snapshots. If a virtual machine appears with a warning symbol beside its name or has a tick in the VM in System column, you must clone the virtual machine and change its name.
- Click each virtual machine to be imported and click the Disks sub-tab. Use the Allocation Policy and Storage Domain lists to select whether the disk used by the virtual machine will be thinly provisioned or preallocated, and select the storage domain on which the disk will be stored. An icon is also displayed to indicate which of the disks to be imported acts as the boot disk for that virtual machine.
- If you selected the Clone check box, change the name of the virtual machine in the General sub-tab.
- Click to import the virtual machines.
The CPU type of the virtual machine must be the same as the CPU type of the cluster into which it is being imported. To view the cluster’s CPU Type in the Administration Portal:
-
Click
. - Select a cluster.
- Click .
- Click the General tab.
If the CPU type of the virtual machine is different, configure the imported virtual machine’s CPU type:
-
Click
. - Select the virtual machine.
- Click .
- Click the System tab.
- Click the Advanced Parameters arrow.
- Specify the Custom CPU Type and click .
6.13.6. Exporting a Virtual Machine to a Host
You can export a virtual machine to a specific path or mounted NFS shared storage on a host in the Red Hat Virtualization data center. The export will produce an Open Virtual Appliance (OVA) package.
Exporting a Virtual Machine to a Host
-
Click
and select a virtual machine. - Click More Actions ( ), then click Export to OVA.
- Select the host from the Host drop-down list.
-
Enter the absolute path to the export directory in the Directory field, including the trailing slash. For example:
/images2/ova/
- Optionally change the default name of the file in the Name field.
- Click
The status of the export can be viewed in the Events tab.
6.13.7. Importing a Virtual Machine from a Host
Import an Open Virtual Appliance (OVA) file into your Red Hat Virtualization environment. You can import the file from any Red Hat Virtualization Host in the data center.
Currently, only Red Hat Virtualization and OVAs created by VMware can be imported. KVM and Xen are not supported.
The import process uses virt-v2v
. Only virtual machines running operating systems compatible with virt-v2v
can be successfully imported. See Converting virtual machines from other hypervisors to KVM with virt-v2v in RHEL 7 and RHEL 8 for a current list of compatible operating systems.
Importing an OVA File
Copy the OVA file to a host in your cluster, in a file system location such as /var/tmp.
NoteThe location can be a local directory or a remote NFS mount, as long as it is not in the`/root` directory or subdirectories. Ensure that it has sufficient space.
Ensure that the OVA file has permissions allowing read/write access to the qemu user (UID 36) and the kvm group (GID 36):
# chown 36:36 path_to_OVA_file/file.OVA
-
Click
. Click More Actions ( ) and select Import. This opens the Import Virtual Machine(s) window.
- Select Virtual Appliance (OVA) from the Source list.
- Select a host from the Host list.
- In the Path field, specify the absolute path of the OVA file.
- Click Load to list the virtual machine to be imported.
- Select the virtual machine from the Virtual Machines on Source list, and use the arrows to move it to the Virtual Machines to Import list.
Click
.- Select the Storage Domain for the virtual machine.
- Select the Target Cluster where the virtual machines will reside.
- Select the CPU Profile for the virtual machines.
- Select the Allocation Policy for the virtual machines.
- Optionally, select the Attach VirtIO-Drivers check box and select the appropriate image on the list to add VirtIO drivers.
- Select the Allocation Policy for the virtual machines.
- Select the virtual machine, and on the General tab select the Operating System.
- On the Network Interfaces tab, select the Network Name and Profile Name.
- Click the Disks tab to view the Alias, Virtual Size, and Actual Size of the virtual machine.
- Click to import the virtual machines.
6.13.8. Importing a virtual machine from a RHEL 5 Xen host
Import virtual machines from Xen on Red Hat Enterprise Linux 5 to your Red Hat Virtualization environment. Red Hat Virtualization uses V2V to import QCOW2 or raw virtual machine disk formats.
The virt-v2v
package must be installed on at least one host (referred to in this procedure as the proxy host). The virt-v2v
package is available by default on Red Hat Virtualization Hosts (RHVH) and is installed on Red Hat Enterprise Linux hosts as a dependency of VDSM when added to the Red Hat Virtualization environment. Red Hat Enterprise Linux hosts must be Red Hat Enterprise Linux 7.2 or later.
If you are importing a Windows virtual machine from a RHEL 5 Xen host and you are using VirtIO devices, install the VirtIO drivers before importing the virtual machine. If the drivers are not installed, the virtual machine may not boot after import.
The VirtIO drivers can be installed from the virtio-win_version.iso
or the RHV-toolsSetup_version.iso
. See Installing the Guest Agents and Drivers on Windows for details.
If you are not using VirtIO drivers, review the configuration of the virutal machine before first boot to ensure that VirtIO devices are not being used.
The virt-v2v
package is not available on the ppc64le architecture and these hosts cannot be used as proxy hosts.
An import operation can only include virtual machines that share the same architecture. If any virtual machine to be imported has a different architecture, a warning appears and you are prompted to change your selection to include only virtual machines with the same architecture.
If the import fails, refer to the relevant log file in /var/log/vdsm/import/
and to /var/log/vdsm/vdsm.log
on the proxy host for details.
Procedure
To import a virtual machine from RHEL 5 Xen, follow these steps:
- Shut down the virtual machine. Starting the virtual machine through Xen during the import process can result in data corruption.
Enable public key authentication between the proxy host and the RHEL 5 Xen host:
Log in to the proxy host and generate SSH keys for the vdsm user.
# sudo -u vdsm ssh-keygen
Copy the vdsm user’s public key to the RHEL 5 Xen host.
# sudo -u vdsm ssh-copy-id root@xenhost.example.com
Log in to the RHEL 5 Xen host to verify that the login works correctly.
# sudo -u vdsm ssh root@xenhost.example.com
- Log in to the Administration Portal.
-
Click
. - Click More Actions ( ) and select Import. This opens the Import Virtual Machine(s) window.
- Select the Data Center that contains the proxy host.
- Select XEN (via RHEL) from the Source drop-down list.
- Optionally, select a RHEL 5 Xen External Provider from the drop-down list. The URI will be pre-filled with the correct URI. See Adding a RHEL 5 Xen Host as a Virtual Machine Provider in the Administration Guide for more information.
-
Enter the URI of the RHEL 5 Xen host. The required format is pre-filled; you must replace
<hostname>
with the host name of the RHEL 5 Xen host. - Select the proxy host from the Proxy Host drop-down list.
- Click Load to list the virtual machines on the RHEL 5 Xen host that can be imported.
Select one or more virtual machines from the Virtual Machines on Source list, and use the arrows to move them to the Virtual Machines to Import list.
NoteDue to current limitations, Xen virtual machines with block devices do not appear in the Virtual Machines on Source list. They must be imported manually. See Importing Block Based Virtual Machine from Xen host.
- Click .
- Select the Cluster in which the virtual machines will reside.
- Select a CPU Profile for the virtual machines.
Use the Allocation Policy and Storage Domain lists to select whether the disk used by the virtual machine will be thinly provisioned or preallocated, and select the storage domain on which the disk will be stored.
NoteThe target storage domain must be a file-based domain. Due to current limitations, specifying a block-based domain causes the V2V operation to fail.
If a virtual machine appears with a warning symbol beside its name, or has a tick in the VM in System column, select the Clone check box to clone the virtual machine.
NoteCloning a virtual machine changes its name and MAC addresses and clones all of its disks, removing all snapshots.
- Click to import the virtual machines.
The CPU type of the virtual machine must be the same as the CPU type of the cluster into which it is being imported. To view the cluster’s CPU Type in the Administration Portal:
-
Click
. - Select a cluster.
- Click .
- Click the General tab.
If the CPU type of the virtual machine is different, configure the imported virtual machine’s CPU type:
-
Click
. - Select the virtual machine.
- Click .
- Click the System tab.
- Click the Advanced Parameters arrow.
- Specify the Custom CPU Type and click .
Importing a Block-Based Virtual Machine from a RHEL 5 Xen Host
Enable public key authentication between the proxy host and the RHEL 5 Xen host:
Log in to the proxy host and generate SSH keys for the vdsm user.
# sudo -u vdsm ssh-keygen
Copy the vdsm user’s public key to the RHEL 5 Xen host.
# sudo -u vdsm ssh-copy-id root@xenhost.example.com
Log in to the RHEL 5 Xen host to verify that the login works correctly.
# sudo -u vdsm ssh root@xenhost.example.com
- Attach an export domain. See Attaching an Existing Export Domain to a Data Center in the Administration Guide for details.
On the proxy host, copy the virtual machine from the RHEL 5 Xen host:
# virt-v2v-copy-to-local -ic xen+ssh://root@xenhost.example.com vmname
Convert the virtual machine to libvirt XML and move the file to your export domain:
# virt-v2v -i libvirtxml vmname.xml -o rhev -of raw -os storage.example.com:/exportdomain
-
In the Administration Portal, click
, click the export domain’s name, and click the VM Import tab in the details view to verify that the virtual machine is in your export domain. - Import the virtual machine into the destination data domain. See Importing the virtual machine from the export domain for details.
6.13.9. Importing a Virtual Machine from a KVM Host
Import virtual machines from KVM to your Red Hat Virtualization environment. Red Hat Virtualization converts KVM virtual machines to the correct format before they are imported. You must enable public key authentication between the KVM host and at least one host in the destination data center (this host is referred to in the following procedure as the proxy host).
The virtual machine must be shut down before being imported. Starting the virtual machine through KVM during the import process can result in data corruption.
An import operation can only include virtual machines that share the same architecture. If any virtual machine to be imported has a different architecture, a warning appears and you are prompted to change your selection to include only virtual machines with the same architecture.
If the import fails, refer to the relevant log file in /var/log/vdsm/import/ and to /var/log/vdsm/vdsm.log on the proxy host for details.
Importing a Virtual Machine from KVM
Enable public key authentication between the proxy host and the KVM host:
Log in to the proxy host and generate SSH keys for the vdsm user.
# sudo -u vdsm ssh-keygen
Copy the vdsm user’s public key to the KVM host. The proxy host’s known_hosts file will also be updated to include the host key of the KVM host.
# sudo -u vdsm ssh-copy-id root@kvmhost.example.com
Log in to the KVM host to verify that the login works correctly.
# sudo -u vdsm ssh root@kvmhost.example.com
- Log in to the Administration Portal.
-
Click
. - Click More Actions ( ) and select Import. This opens the Import Virtual Machine(s) window.
- Select the Data Center that contains the proxy host.
- Select KVM (via Libvirt) from the Source drop-down list.
- Optionally, select a KVM provider External Provider from the drop-down list. The URI will be pre-filled with the correct URI. See Adding a KVM Host as a Virtual Machine Provider in the Administration Guide for more information.
Enter the URI of the KVM host in the following format:
qemu+ssh://root@kvmhost.example.com/system
- Keep the Requires Authentication check box selected.
-
Enter
root
in the Username field. - Enter the Password of the KVM host’s root user.
- Select the Proxy Host from the drop-down list.
- Click Load to list the virtual machines on the KVM host that can be imported.
- Select one or more virtual machines from the Virtual Machines on Source list, and use the arrows to move them to the Virtual Machines to Import list.
- Click .
- Select the Cluster in which the virtual machines will reside.
- Select a CPU Profile for the virtual machines.
- Optionally, select the Collapse Snapshots check box to remove snapshot restore points and include templates in template-based virtual machines.
- Optionally, select the Clone check box to change the virtual machine name and MAC addresses, and clone all disks, removing all snapshots. If a virtual machine appears with a warning symbol beside its name or has a tick in the VM in System column, you must clone the virtual machine and change its name.
- Click each virtual machine to be imported and click the Disks sub-tab. Use the Allocation Policy and Storage Domain lists to select whether the disk used by the virtual machine will be thin provisioned or preallocated, and select the storage domain on which the disk will be stored. An icon is also displayed to indicate which of the disks to be imported acts as the boot disk for that virtual machine. See Virtual Disk Storage Allocation Policies in the Technical Reference for more information.
- If you selected the Clone check box, change the name of the virtual machine in the General tab.
- Click to import the virtual machines.
The CPU type of the virtual machine must be the same as the CPU type of the cluster into which it is being imported. To view the cluster’s CPU Type in the Administration Portal:
-
Click
. - Select a cluster.
- Click .
- Click the General tab.
If the CPU type of the virtual machine is different, configure the imported virtual machine’s CPU type:
-
Click
. - Select the virtual machine.
- Click .
- Click the System tab.
- Click the Advanced Parameters arrow.
- Specify the Custom CPU Type and click .
6.13.10. Importing a Red Hat KVM Guest Image
You can import a Red Hat-provided KVM virtual machine image. This image is a virtual machine snapshot with a preconfigured instance of Red Hat Enterprise Linux installed.
You can configure this image with the cloud-init tool, and use it to provision new virtual machines. This eliminates the need to install and configure the operating system and provides virtual machines that are ready for use.
Procedure
- Download the most recent KVM virtual machine image from the Download Red Hat Enterprise Linux list, in the Product Software tab.
- Upload the virtual machine image using the Manager or the REST API. See Uploading Images to a Data Storage Domain in the Administration Guide.
- Create a new virtual machine and attach the uploaded disk image to it. See Creating a Linux virtual machine.
- Optionally, use cloud-init to configure the virtual machine. See Using Cloud-Init to Automate the Configuration of Virtual Machines for details.
- Optionally, create a template from the virtual machine. You can generate new virtual machines from this template. See Templates for information about creating templates and generating virtual machines from templates.