Skip to content

Latest commit

 

History

History
344 lines (222 loc) · 8.4 KB

Ubuntu1204.md

File metadata and controls

344 lines (222 loc) · 8.4 KB

Hướng dẫn đóng image Ubuntu 12.04 với cloud-init (không dùng LVM)

Chú ý:

  • Để 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

Bước 1: Tạo máy ảo bằng virt-manager

Bước 2 : Tắt máy ảo, xử lí 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ước 3: Cài các dịch vụ cần thiết

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

Bước 4: Cấu hình để instance nhận metadata từ datasource

dpkg-reconfigure cloud-init

Sau khi màn hình mở ra, lựa chọn mối EC2

Bước 5: Cấu hình user nhận ssh keys

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

Bước 6: Xóa bỏ thông tin của địa chỉ MAC

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.

Bước 7: Cấu hình để instance báo log ra console

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

Bước 8: Cài đặt netplug

  • 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

Bước 9: Disable default config route

sed -i 's|link-local 169.254.0.0|#link-local 169.254.0.0|g' /etc/networks

Bước 10: Cài đặt qemu-guest-agent

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

Bước 11: Cấu hình card mạng tự động active khi hệ thống boot-up

vim /etc/network/interfaces

auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp

Bước 12: Tắt máy ảo

init 0

Bước 13: Clean up image

virt-sysprep -d ubuntu12

Bước 14: Giảm kích thước máy ảo

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.

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

  • 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/