Skip to content

Latest commit

 

History

History
421 lines (275 loc) · 10.3 KB

CentOS6.md

File metadata and controls

421 lines (275 loc) · 10.3 KB

Hướng dẫn đóng image CentOS6 với QEMU Guest Agent + cloud-init

Chú ý trong quá trình đóng images

  • KVM host đã được cài đặt sẵn sàng. Cài đặt Môi trường để đóng images
  • Đã có file iso của CentOS6
  • Sử dụng Standard với định dạng ext4 cho phân vùng OS không sử dụng LVM.
  • Sử dụng công cụ virt-manager hoặc web-virt để kết nối tới console máy ảo
  • Phiên bản OpenStack sử dụng là Queens
  • Hướng dẫn bao gồm 2 phần chính: thực hiện trên máy ảo cài OS và thực hiện trên KVM Host
  • Time zone VietNam

Bước 1:Trên KVM host tạo máy ảo CentOS6

  • Đăng nhập ssh vào Node KVM bật virt-manager
virt-manager
  • Trên Virt-manager thực hiện các step sau để cài OS

Click chuột phải vào QEMU/KVM chọn Details

Click vào tab Storage create một images mới

Set tên và dung lượng cho images này là với định dạng là .qcow2

Quay lại màn hình chính của Virt-manager chọn create VM mới

Chọn boot từ file ISO

Trỏ đường dẫn đến file ISO

Cấu hình RAM và CPU cho VM

Ở đây chúng ta sẽ chọn images centos6.qcow2 đã được tạo

Đặt tên cho VM, click vào Customize... để bổ sung các cấu hình khác

Cấu hình cho CPU

Cấu hình boot, chỉnh lại menu boot để boot ISO cài đặt OS

Cấu hình lại file ISO

Cấu hình NIC mode virtio

Kết thúc quá trình cấu hình, bắt đầu quá trình cài đặt.

Bỏ qua quá trình check

Cấu hình ngôn ngữ chọn English(English)

Cấu hình language keyboard chọn U.S English

Chọn Basic Storage Devices

Confirm xóa toàn bộ dữ liệu trên disk cài đặt OS

Cấu hình network

Enable connect automatically (Cho phép Interface có thể nhận được IP khi boot máy)

Cấu hình time zone Asia/Ho_Chi_Minh

Cấu hình root password cho VM

Chọn Create Custom Layout để cấu hình phân vùng disk cài OS

Chọn phân vùng free disk và Create

Chọn cấu hình phân vùng disk theo Standard Partition

Cấu hình toàn bộ phân vùng trống của disk mount vào / với định dạng ext4

Confirm quá trình phân vùng lại ổ đĩa để cài OS

Tiến hành xác nhận cài đặt OS

Bước 2: Xử lí trên KVM host

Tiến hành tắt máy ảo và xử lí một số bước sau trên KVM host:

  • Chỉnh sửa file .xml của máy ảo
virsh edit centos6

Với centos6 là tên máy ảo

Bổ sung hoặc chỉnh sửa channel trong mục đích để HOST KVM có thể giao tiếp với máy ảo qua qemu-guest-agent

# Nội dung chỉnh sửa
...
<devices>
 <channel type='unix'>
      <target type='virtio' name='org.qemu.guest_agent.0'/>
      <address type='virtio-serial' controller='0' bus='0' port='1'/>
 </channel>
 ...
</devices>
...

Bước 3: Cấu hình máy ảo và cài đặt các package (Thao tác trên VM CentOS6)

  • Bật máy ảo lên

  • Disable IPv6

echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
sysctl -p
  • Cài đặt epel-release & Update
yum install epel-release -y
yum update -y
  • Stop firewalld Disable Selinux (Tùy trường hợp, Bản đang cài để nguyên toàn bộ ko disable)
service iptables stop
chkconfig iptables off
iptables -F
iptables -X
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/sysconfig/selinux
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
sed -i 's/SELINUX=permissive/SELINUX=disabled/g' /etc/selinux/config
init 6
  • Cài đặt các packet cần thiết
yum -y install wget vim 
  • Cài đặt CMDlog
curl -Lso- https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/cmdlog.sh | bash
  • Cài đặt Chronyd
yum install chrony -y
sed -i 's|server 0.rhel.pool.ntp.org iburst|pool 103.101.161.201 iburst|g' /etc/chrony.conf
chkconfig chronyd on 
service chronyd start
hwclock --systohc

==> SNAPSHOT lại KVM host để lưu trữ và đóng gói lại khi cần thiết

  • Shutdown VM

  • Tiến hành truy cập tab Snapshot để snapshot

Cài đặt app (nếu có)

==> SNAPSHOT lại KVM host để lưu trữ và đóng gói lại khi cần thiết

Bước 4: Cài đặt cấu hình các thành phần dể đóng image trên VM

  • Start lại và ssh vào VM
ssh root@<ip_VM>
  • Cấu hình network
# Cấu hình interface tự động up khi boot 
sed -i 's|ONBOOT=no|ONBOOT=yes|g' /etc/sysconfig/network-scripts/ifcfg-eth0

# Xóa `HWADDR` và UUID trong config
sed -i '/UUID/d' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i '/HWADDR/d' /etc/sysconfig/network-scripts/ifcfg-eth0
  • Cài đặt cloud-utils-growpart để resize đĩa cứng lần đầu boot
yum install cloud-utils-growpart dracut-modules-growroot cloud-init -y
  • Rebuild initrd file (Có thể mất 1-2p)
rpm -qa kernel | sed 's/^kernel-//'  | xargs -I {} dracut -f /boot/initramfs-{}.img {}
  • Cấu hình grub để đẩy log ra console
sed -Ei "s/rhgb/console=tty0/g" /boot/grub/grub.conf
sed -Ei "s/quiet/console=ttyS0,115200n8/g" /boot/grub/grub.conf
  • Để máy ảo trên OpenStack có thể nhận được Cloud-init cần thay đổi cấu hình mặc định bằng cách sửa đổi file /etc/cloud/cloud.cfg.
sed -i 's/disable_root: 1/disable_root: 0/g' /etc/cloud/cloud.cfg
sed -i 's/ssh_pwauth:   0/ssh_pwauth:   1/g' /etc/cloud/cloud.cfg
sed -i 's/name: centos/name: root/g' /etc/cloud/cloud.cfg
  • Để sau khi boot máy ảo, có thể nhận đủ các NIC gắn vào:
cat << EOF >> /etc/rc.local
for iface in \$(ip -o link | cut -d: -f2 | tr -d ' ' | grep ^eth)
do
   test -f /etc/sysconfig/network-scripts/ifcfg-\$iface
   if [ \$? -ne 0 ]
   then
       touch /etc/sysconfig/network-scripts/ifcfg-\$iface
       echo -e "DEVICE=\$iface\nBOOTPROTO=dhcp\nONBOOT=yes" > /etc/sysconfig/network-scripts/ifcfg-\$iface
       ifup \$iface
   fi
done
EOF
  • Disable Default routing (để VM có thể nhận metadata từ Cloud-init nhanh hơn)
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
  • Xóa nội dung 75-persistent-net-generator.rules (Tránh việc thay đổi label card mạng)
echo "" > /lib/udev/rules.d/75-persistent-net-generator.rules
  • Cài đặt, kích hoạt và khởi động qemu-guest-agent service
yum install qemu-guest-agent -y
chkconfig qemu-ga on
service qemu-ga start

qemu-ga --version Hiện Version của qemu trên centos6 là 0.12

service qemu-ga status Chắc chắn qemu-ga running OK

  • Đảm bảo interface eth0 có thể nhận DHCP (Remove config static IP của VM đóng template)
cat << EOF >> /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=dhcp
IPV4_FAILURE_FATAL=yes
NAME="System eth0"
EOF
  • Clean all
yum clean all
# Xóa last logged
rm -f /var/log/wtmp /var/log/btmp
# Xóa history 
history -c
  • Tắt VM
poweroff

Bước 5: Xử lý image trên KVM host

# Xóa bỏ MAC address details
virt-sysprep -d centos6

# Giảm kích thước image
virt-sparsify --compress /var/lib/libvirt/images/centos6.qcow2 CentOS6-64bit-2018.img

Bước 6: Upload image lên glance

  • Copy Images sang Node Controller
scp CentOS6-64bit-2018.img root@<controller_host>:/root/
  • Đăng nhập vào Node Controller sử dụng câu lệnh sau để Upload Images
glance image-create --name CentOS6-64bit-2018 \
--disk-format qcow2 \
--container-format bare \
--file /root/CentOS6-64bit-2018.img \
--visibility=public \
--property hw_qemu_guest_agent=yes \
--progress
  • Image đã sẵn sàng để launch máy ảo.

Link tham khảo

http://openstack-xenserver.readthedocs.io/en/latest/24-create-kvm-centos-7-image.html

https://docs.openstack.org/image-guide/centos-image.html

https://access.redhat.com/solutions/732773