<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Guilherme Mazzariol</title>
    <description>The latest articles on DEV Community by Guilherme Mazzariol (@mazzariol).</description>
    <link>https://dev.to/mazzariol</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F880598%2F62d089ab-13fd-437b-b766-80dcf1669fbd.png</url>
      <title>DEV Community: Guilherme Mazzariol</title>
      <link>https://dev.to/mazzariol</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mazzariol"/>
    <language>en</language>
    <item>
      <title>GCP - Copying VMs between projects</title>
      <dc:creator>Guilherme Mazzariol</dc:creator>
      <pubDate>Tue, 21 Jun 2022 19:50:24 +0000</pubDate>
      <link>https://dev.to/mazzariol/gcp-copying-vms-between-projects-2bo9</link>
      <guid>https://dev.to/mazzariol/gcp-copying-vms-between-projects-2bo9</guid>
      <description>&lt;p&gt;These days at work, I had to move some &lt;a href="https://cloud.google.com/compute/docs"&gt;virtual machines (VM's)&lt;/a&gt; between different projects.&lt;br&gt;
After doing a quick search and spending some time, this was the result.&lt;br&gt;
Hope this helps you too.&lt;/p&gt;
&lt;h2&gt;
  
  
  Before you begin
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Be familiar with &lt;a href="https://cloud.google.com/sdk/docs/install"&gt;gcloud cli&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Any questions, consult the &lt;a href="https://cloud.google.com/sdk/gcloud/reference"&gt;gcloud reference&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;


&lt;h2&gt;
  
  
  How to copy VM with single boot disk
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create a snapshot of persistent disk:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute snapshots SRC_SNAPSHOT_NAME \
    --source-disk SRC_DISK_NAME \
    --source-disk-zone ZONE \
    --project SRC_PROJECT
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Create a disk image from snapshot:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute snapshots SRC_SNAPSHOT_NAME \
    --source-disk SRC_DISK_NAME \
    --source-disk-zone ZONE \
    --project SRC_PROJECT
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;li&gt;

&lt;p&gt;Create the virtual machine:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute instances create DST_VM_NAME \
    --image-project SRC_PROJECT \
    --image SRC_IMG_NAME \
    --project DST_PROJECT
&lt;/code&gt;&lt;/pre&gt;




&lt;/li&gt;
&lt;/ol&gt;




&lt;h2&gt;
  
  
  How to copy VM with boot disk and, at least one, attach disk
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Create snapshots from persistent disks:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute disks snapshot BOOT_DISK_NAME DATA_DISK_NAME \
    --snapshot-names SRC_SNAPSHOT_NAME_BOOT,SRC_SNAPSHOT_NAME_DATA \
    --zone ZONE \
    --project SRC_PROJECT`
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create the disk image from boot snapshot:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute images create SRC_IMG_NAME_BOOT \
    --source-snapshot=SRC_SNAPSHOT_NAME_BOOT \
    --storage-location=ZONE \
    --project=SRC_PROJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create the disk image from data snapshot:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute images create SRC_IMG_NAME_DATA \
    --source-snapshot=SRC_SNAPSHOT_NAME_DATA \
    --storage-location=ZONE \
    --project=SRC_PROJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create the virtual machine using boot disk image:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute instances create DST_VM_NAME \
    --image-project SRC_PROJECT \
    --image SRC_IMG_NAME_BOOT \
    --project=DST_PROJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create persistent disk from data disk image:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute disks create DISK_NAME_DATA \
    --image-project SRC_PROJECT \
    --image SRC_IMG_NAME_DATA \
    --project=DST_PROJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Attach data disk into the instance:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gcloud compute instances attach-disk DST_VM_NAME \
    --disk DISK_NAME_DATA \
    --project=DST_PROJECT
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Mount the new disk:&lt;br&gt;
&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# connect to the instance
gcloud compute ssh DST_VM_NAME --zone ZONE --project GCP_PROJECT
# change to root user
sudo su
# indetify the new disk (probably will be 'sdb')
lsblk
# create new folder
mkdir /FOLDER_NAME
# mount the disk
mount -o discard,defaults /dev/sdb /FOLDER_NAME
# check files
ls /FOLDER_NAME/
# add write permission for all
chmod a+w /FOLDER_NAME
# create new entry to fstab
echo UUID=`sudo blkid -s UUID -o value /dev/sdb` /FOLDER_NAME ext4 discard,defaults,nofail 0 2 | sudo tee -a /etc/fstab
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;Any questions or suggestions, please write to me :)&lt;/p&gt;

</description>
      <category>googlecloud</category>
    </item>
  </channel>
</rss>
