<?xml version="1.0" encoding="UTF-8"?>
<section xmlns="http://docbook.org/ns/docbook"
    xmlns:xi="http://www.w3.org/2001/XInclude"
    xmlns:xlink="http://www.w3.org/1999/xlink" version="5.0"
    xml:id="cli_migrate_instances">
    <?dbhtml stop-chunking?>
    <title>Use snapshots to migrate instances</title>
    <para>To use snapshots to migrate instances from OpenStack projects to clouds, complete these steps.</para>
    <procedure>
    <step>
        <para>In the source project, perform the following steps:</para>
        <orderedlist>
        <listitem>
            <para><link xlink:href="#create_snapshot">Create a snapshot of the instance.</link></para>
        </listitem>
        <listitem>
            <para><link xlink:href="#download_snapshot">Download the snapshot as an image.</link></para>
        </listitem>
    </orderedlist></step>
    <step>
        <para>In the destination project, perform the following steps:</para>
        <orderedlist>
    <listitem>
            <para><link xlink:href="#import_snapshot">Import the snapshot to the new environment.</link></para>
        </listitem>
        <listitem>
            <para><link xlink:href="#boot_from_snapshot">Boot a new instance from the snapshot.</link></para>
        </listitem>
    </orderedlist></step>
</procedure>
    <note>
        <para>Some cloud providers allow only administrators to perform this task.</para>
    </note>
    <section xml:id="create_snapshot">
        <title>Create a snapshot of the instance</title>
        <procedure>
            <step>
                <para>Shut down the source VM before you take the snapshot to ensure that all data is flushed to disk.
                    If necessary, list the instances to view get the instance name.</para>
                <screen><prompt>$</prompt> <userinput>nova list</userinput>
<computeroutput>+--------------------------------------+------------+--------+------------------------------+
| ID                                   | Name       | Status | Networks                     |
+--------------------------------------+------------+--------+------------------------------+
| c41f3074-c82a-4837-8673-fa7e9fea7e11 | myInstance | ACTIVE | private=10.0.0.3             |
+--------------------------------------+------------+--------+------------------------------+</computeroutput></screen>
                <screen><prompt>$</prompt> <userinput>nova stop example</userinput></screen>
            </step>
            <step>
                <para>Use the <command>nova list</command> command to confirm that the instance shows a
                        <literal>SHUTOFF</literal> status.</para>
                <screen><prompt>$</prompt> <userinput>nova list</userinput>
<computeroutput>+--------------------------------------+------------+---------+------------------------------+
| ID                                   | Name       | Status  | Networks                     |
+--------------------------------------+------------+---------+------------------------------+
| c41f3074-c82a-4837-8673-fa7e9fea7e11 | myInstance | SHUTOFF | private=10.0.0.3             |
+--------------------------------------+------------+---------+------------------------------+</computeroutput></screen>
            </step>
            <step>
                <para>Use the <command>nova
                    image-create</command> command to take a snapshot. Use the <command>nova
                        image-list</command> command to check the status until the status
                    is <literal>ACTIVE</literal>:</para>
                <screen><prompt>$</prompt> <userinput>nova image-create --poll myInstance myInstanceSnapshot</userinput>
<computeroutput>Instance snapshotting... 50% complete</computeroutput></screen>
                <screen><prompt>$</prompt> <userinput>nova image-list</userinput>
<computeroutput>+--------------------------------------+---------------------------------+--------+--------+
| ID                                   | Name                            | Status | Server |
+--------------------------------------+---------------------------------+--------+--------+
| 657ebb01-6fae-47dc-986a-e49c4dd8c433 | cirros-0.3.2-x86_64-uec         | ACTIVE |        |
| 72074c6d-bf52-4a56-a61c-02a17bf3819b | cirros-0.3.2-x86_64-uec-kernel  | ACTIVE |        |
| 3c5e5f06-637b-413e-90f6-ca7ed015ec9e | cirros-0.3.2-x86_64-uec-ramdisk | ACTIVE |        |
| f30b204e-1ce6-40e7-b8d9-b353d4d84e7d | myInstanceSnapshot              | ACTIVE |        |
+--------------------------------------+---------------------------------+--------+--------+</computeroutput></screen>
            </step>
        </procedure>
    </section>
    <section xml:id="download_snapshot">
        <title>Download the snapshot as an image</title>
        <procedure>
            <step>
                <para>Get the image ID:</para>
                <screen><prompt>$</prompt> <userinput>nova image-list</userinput>
<computeroutput>+--------------------------------------+-------------------+--------+--------------------------------------+
| ID                                   | Name              | Status | Server                               |
+--------------------------------------+-------------------+--------+--------------------------------------+
| f30b204e-1ce6-40e7-b8d9-b353d4d84e7d | myInstanceSnapshot| ACTIVE | c41f3074-c82a-4837-8673-fa7e9fea7e11 |
+--------------------------------------+-------------------+--------+--------------------------------------+</computeroutput></screen>
            </step>
            <step>
                <para>Download the snapshot by using the image ID that
                    was returned in the previous step:</para>
                <screen><prompt>$</prompt> <userinput>glance image-download --file snapshot.raw f30b204e-1ce6-40e7-b8d9-b353d4d84e7d</userinput></screen>
                <note>
                    <para>The <command>glance image-download</command>
                        command requires the image ID and cannot use
                        the image name.</para>
                    <para>Ensure there is sufficient space on the
                        destination file system for the image
                        file.</para>
                </note>
            </step>
            <step>
                <para>Make the image available to the new environment, either through HTTP or with direct upload to a
                    machine (<command>scp</command>).</para>
            </step>
        </procedure>
    </section>
    <section xml:id="import_snapshot">
        <title>Import the snapshot to new environment</title>
                <para>In the new project or cloud environment, import
                    the snapshot:</para>
        <screen><prompt>$</prompt> <userinput>glance image-create --copy-from <replaceable>IMAGE_URL</replaceable></userinput></screen>
    </section>
    <section xml:id="boot_from_snapshot">
        <title>Boot a new instance from the snapshot</title>
                <para>In the new project or cloud environment, use the
                    snapshot to create the new instance:</para>
                <screen><prompt>$</prompt> <userinput>nova boot --flavor m1.tiny --image myInstanceSnapshot myNewInstance</userinput></screen>
    </section>
</section>