Linux

Cara Membuat VM Dengan Cloud Init

Membuat VM dengan Cloud image

Dengan membuat VM menggunakan cloud image, kamu bisa membuat vm dengan jumlah banyak secara mudah. Selain itu, cloud image juga bisa kamu masukkan kustom pre built seperti ssh keys, user password dan lainnya. Kita akan buat vm dengan spek OS CentOS 7 RAM 1gb dan 20 disk space dengan 1 vCPU.

Download CENTOS 7 CLOUD IMAGE

# cd /var/lib/libvirt/boot
# wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-GenericCloud.qcow2

Buat folder yang dibutuhkan

# D=/var/lib/libvirt/images
# VM=centos7-vm1 ## vm name ##
# mkdir -vp $D/$VM
mkdir: created directory '/var/lib/libvirt/images/centos7-vm1'

Buat file Meta-data

# cd $D/$VM
# vi meta-data

tambahkan berikut ini

instance-id: centos7-vm1
local-hostname: centos7-vm1

Buat USER-DATA file 

ssh-keygen command

I am going to login into VM using ssh keys. So make sure you have ssh-keys in place:

Kita akan login ke vm dengan ssh key. Sekarang kita buat ssh key nya

# ssh-keygen -t ed25519 -C "VM Login ssh key" 

Edit user-data 

# cd $D/$VM
# vi user-data

Tambahkan isi berikut (replace bagian hostname, users, ssh-authorized-keys mengikuti setup kamu)

#cloud-config
 
# Hostname management
preserve_hostname: False
hostname: centos7-vm1
fqdn: centos7-vm1.nixcraft.com
 
# Users
users:
    - default
    - name: vivek
      groups: ['wheel']
      shell: /bin/bash
      sudo: ALL=(ALL) NOPASSWD:ALL
      ssh-authorized-keys:
        - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIMP3MOF2ot8MOdNXCpHem0e2Wemg4nNmL2Tio4Ik1JY VM Login ssh key
 
# Configure where output will go
output:
  all: ">> /var/log/cloud-init.log"
 
# configure interaction with ssh server
ssh_genkeytypes: ['ed25519', 'rsa']
 
# Install my public ssh key to the first user-defined user configured
# in cloud.cfg in the template (which is centos for CentOS cloud images)
ssh_authorized_keys:
  - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIMP3MOF2ot8MOdNXCpHem0e2Wemg4nNmL2Tio4Ik1JY VM Login ssh key
 
# set timezone for VM
timezone: Asia/Kolkata
 
# Remove cloud-init 
runcmd:
  - systemctl stop network && systemctl start network
  - yum -y remove cloud-init

Copy Cloud Image

# cd $D/$VM
# cp /var/lib/libvirt/boot/CentOS-7-x86_64-GenericCloud.qcow2 $VM.qcow2

Buat 20GB image disk

Set VM image disk size
# cd $D/$VM
# export LIBGUESTFS_BACKEND=direct
# qemu-img create -f qcow2 -o preallocation=metadata $VM.new.image 20G
# virt-resize --quiet --expand /dev/sda1 $VM.qcow2 $VM.new.image Overwrite it resized image: # cd $D/$VM
# mv $VM.new.image $VM.qcow2

Buat Cloud-Init ISO

Creating a cloud-init ISO
# mkisofs -o $VM-cidata.iso -V cidata -J -r user-data meta-data

Membuat POOL

# virsh pool-create-as --name $VM --type dir --target $D/$VM
Pool centos7-vm1 created

Install VM Centos 7

# cd $D/$VM
# virt-install --import --name $VM \
--memory 1024 --vcpus 1 --cpu host \
--disk $VM.qcow2,format=qcow2,bus=virtio \
--disk $VM-cidata.iso,device=cdrom \
--network bridge=virbr0,model=virtio \
--os-type=linux \
--os-variant=centos7.0 \
--graphics spice \
--noautoconsole

Mengetahui IP VM tersebut

# virsh net-dhcp-leases default
CentOS7-VM1- Created

 

LOG IN TO YOUR VM

# ssh vivek@192.168.122.85
Sample VM session

 

Selesai!

Mohon bagikan ke teman kampus, teman sekolah, kerabat kerja, partner in crime dan lainnya agar ilmu ini lebih bermanfaat lagi.

Silahkan tinggalkan komentar anda dibawah ini.

Tags

Fatih

Membagikan ilmu terkait system administrator, networking dan troubleshooting

Leave a Reply

Your email address will not be published. Required fields are marked *

Close