- Để cài được Cloud init thì chủ sử dụng được .iso Ubuntu12.04.4 (KHÔNG SỬ DỤNG Ubuntu12.04.5 )
- 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 node KVM là Centos7
- 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
- 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 ubuntu12
với ubuntu12
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 ufw disable
Logout và login lại bằng user root
và xóa user ubuntu
userdel ubuntu
rm -rf /home/ubuntu
Update
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get dist-upgrade -y
sudo apt-get autoremove
Đổ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
==> 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 cloud-init, cloud-utils và cloud-initramfs-growroot
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 mối EC2
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|user: ubuntu|user: root|g' /etc/cloud/cloud.cfg
sed -i 's|disable_root: 1|disable_root: 0|g' /etc/cloud/cloud.cfg
Xóa nội dung file (file này được gen bởi file trước) bằng các sử dụng :%d
trong vi
.
echo > /lib/udev/rules.d/75-persistent-net-generator.rules
echo > /etc/udev/rules.d/70-persistent-net.rules
Bạn cũng có thể thay thế file trên bằng 1 file rỗng. Lưu ý: không được xóa bỏ hoàn toàn file mà chỉ xóa nội dung.
sed -i 's|GRUB_HIDDEN_TIMEOUT_QUIET=true|#GRUB_HIDDEN_TIMEOUT_QUIET=true|g' /etc/default/grub
sed -i 's|GRUB_CMDLINE_LINUX_DEFAULT=""|GRUB_CMDLINE_LINUX_DEFAULT="console=ttyS0"|g' /etc/default/grub
sed -i 's|GRUB_TERMINAL=console|GRUB_TERMINAL=console|g' /etc/default/grub
Lưu lại config
update-grub
- Cài đặt netplug để sau khi boot máy ảo, có thể nhận đủ các NIC gắn vào:
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
Ubuntu 12 không hỗ trợ qemu-guest-agent
sẽ không hỗ trợ tính năng đổi password bằng nova set-password
Chúng ta sẽ phải set password qua SingleMode trên Console
vim /etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
init 0
virt-sysprep -d ubuntu12
virt-sparsify --compress /var/lib/libvirt/images/ubuntu12.qcow2 /root/ubuntu12.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 ubuntu12-64bit-2018 \
--disk-format qcow2 \
--container-format bare \
--file ubuntu12-64bit-2018.img \
--visibility=public \
--property hw_qemu_guest_agent=yes \
--progress
- Images đã sẵn sàng để Create máy ảo.
Link tham khảo:
https://github.com/hocchudong/Image_Create/blob/master/docs/ubuntu12.04_noLVM%2Bqemu_ga.md
https://www.victordodon.com/fix-problem-running-iptables-on-a-digitalocean-droplet/