- Hướng dẫn này dành cho các image 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
- OS cài đặt KVM là Ubuntu 16.04
- 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
Các bước tạo tương tự Ubuntu12
- Chỉnh sửa file
.xml
của máy ảo, bổ sung thêm channel trong (để máy host giao tiếp với máy ảo sử dụng qemu-guest-agent), sau đó save lại
virsh edit ubuntu16
với ubuntu16
là tên máy ảo
...
<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>
...
Nếu đã tồn tại
channel
đổi port channel này vềport='2'
và add channel bình thường
Bật máy ảo lên, truy cập vào máy ảo. Lưu ý với lần đầu boot, bạn phải sử dụng tài khoản tạo trong quá trình cài os, chuyển đổi nó sang tài khoản root để sử dụng.
Cấu hình cho phép login root và xóa user ubuntu
chỉnh vi /etc/ssh/sshd_config
PermitRootLogin yes
Đặt passwd cho root
sudo su
# Đặt passwd cho root user
passwd
Enter new UNIX password: <root_passwd>
Retype new UNIX password: <root_passwd>
Restart sshd
service ssh restart
Disable firewalld
sudo apt-get install ufw -y
sudo ufw disable
Logout và login lại bằng user root
và xóa user ubuntu
userdel ubuntu
rm -rf /home/ubuntu
Đổi timezone về Asia/Ho_Chi_Minh
dpkg-reconfigure tzdata
Bổ sung env locale
echo "export LC_ALL=C" >> ~/.bashrc
Disable ipv6
echo "net.ipv6.conf.all.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.default.disable_ipv6 = 1" >> /etc/sysctl.conf
echo "net.ipv6.conf.lo.disable_ipv6 = 1" >> /etc/sysctl.conf
# Kiểm tra config add thành công
sysctl -p
# Kiểm tra disable ipv6
cat /proc/sys/net/ipv6/conf/all/disable_ipv6
# Output: 1: OK, 0: NotOK
- Cài đặt CMDlog
curl -Lso- https://raw.githubusercontent.com/nhanhoadocs/ghichep-cmdlog/master/cmdlog.sh | bash
- Cài đặt Chronyd
apt install chrony -y
sed -i 's|pool 2.debian.pool.ntp.org offline iburst|pool 103.101.161.201 offline iburst|g' /etc/chrony/chrony.conf
service chrony restart
hwclock --systohc
Update
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove
Cấu hình để đổi name Card mạng về eth* thay vì ens, eno (Để scripts netplug chạy ổn định)
sed -i 's|GRUB_CMDLINE_LINUX=""|GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"|g' /etc/default/grub
Lưu lại config
update-grub
Reboot VM
init 6
Login *Console và chỉnh card mạng về đúng eth0
trong /etc/network/interfaces
sed -Ei 's|ens3|eth0|g' /etc/network/interfaces
Thực hiện restart network
/etc/init.d/networking restart
- Shutdown VM
- Tiến hành truy cập tab
Snapshot
để snapshot
apt-get install cloud-utils cloud-initramfs-growroot cloud-init -y
dpkg-reconfigure cloud-init
Sau khi màn hình mở ra, lựa chọn EC2
bỏ các option khác
Disable Warning đối với EC2 trên Ubuntu 16
touch /root/.cloud-warnings.skip
Thay đổi file /etc/cloud/cloud.cfg
để chỉ định user nhận ssh keys khi truyền vào, mặc định là root
sed -i 's/name: ubuntu/name: root/g' /etc/cloud/cloud.cfg
Xóa nội dung file net rules
echo > /lib/udev/rules.d/75-persistent-net-generator.rules
echo > /etc/udev/rules.d/70-persistent-net.rules
Không xóa file
sed -i 's|GRUB_CMDLINE_LINUX_DEFAULT=""|GRUB_CMDLINE_LINUX_DEFAULT="console=tty0 console=ttyS0,115200n8"|g' /etc/default/grub
Lưu lại config
update-grub
apt-get install netplug -y
wget https://raw.githubusercontent.com/uncelvel/create-images-openstack/master/scripts_all/netplug_ubuntu -O netplug
mv netplug /etc/netplug/netplug
chmod +x /etc/netplug/netplug
sed -i 's|link-local 169.254.0.0|#link-local 169.254.0.0|g' /etc/networks
Chú ý: qemu-guest-agent là một daemon chạy trong máy ảo, giúp quản lý và hỗ trợ máy ảo khi cần (có thể cân nhắc việc cài thành phần này lên máy ảo)
Để có thể thay đổi password máy ảo thì phiên bản qemu-guest-agent phải >= 2.5.0
apt-get install software-properties-common -y
add-apt-repository cloud-archive:mitaka -y
apt-get update
apt-get install qemu-guest-agent -y
Kiểm tra phiên bản qemu-ga bằng lệnh:
qemu-ga --version
service qemu-guest-agent status
Kết quả:
QEMU Guest Agent 2.5.0
* qemu-ga is running
Chỉnh sửa file /etc/network/interfaces
cấu hình eth0 nhận dhcp
cat /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
...
EOF
Lưu ý: Sub interface khi đóng các app nếu sinh ra
init 0
virt-sysprep -d ubuntu16
virt-sparsify --compress /var/lib/libvirt/images/ubuntu16.qcow2 /root/ubuntu16.img
Lưu ý:
Nếu img bạn sử dụng đang ở định dạng raw thì bạn cần thêm tùy chọn --convert qcow2
để giảm kích thước image.
- Copy image tới máy CTL, sử dụng câu lệnh sau
glance image-create --name ubuntu16-64bit-2018 \
--disk-format qcow2 \
--container-format bare \
--file ubuntu16-64bit-2018.img \
--visibility=public \
--property hw_qemu_guest_agent=yes \
--progress
- Kiểm tra xem image đã upload thành công chưa, kiểm tra metadata của image đã có
hw_qemu_guest_agent
hay chưa.
Link tham khảo:
https://github.com/hocchudong/Image_Create/blob/master/docs/ubuntu14.04_noLVM%2Bqemu_ga.md