Hướng dẫn cài đặt IP tĩnh và tắt Cloud-init trên Ubuntu VM
Giới thiệu
Tài liệu này hướng dẫn chi tiết cách cấu hình IP tĩnh và vô hiệu hóa Cloud-Init trên Ubuntu Server 24.04.3 LTS chạy trong môi trường máy ảo (VM). Cloud-Init thường được sử dụng để tự động cấu hình máy ảo khi khởi động lần đầu, nhưng trong nhiều trường hợp production, việc tắt nó giúp tránh các thay đổi cấu hình không mong muốn.
Cấu hình IP tĩnh với Netplan
Bước 1: Xác định interface mạng hiện tại
Đầu tiên, kiểm tra tên interface mạng và cấu hình hiện tại:
# Liệt kê các interface mạng
ip addr show
# Hoặc sử dụng lệnh
ip link show
# Kiểm tra cấu hình Netplan hiện tại
ls -la /etc/netplan/
Interface mạng thường có tên như ens33
, ens160
, enp0s3
hoặc eth0
tùy thuộc vào hypervisor.
Bước 2: Sao lưu file cấu hình hiện tại
# Tạo thư mục backup
sudo mkdir -p /etc/netplan/backup
# Sao lưu tất cả file cấu hình hiện tại
sudo cp /etc/netplan/*.yaml /etc/netplan/backup/
Bước 3: Tạo file cấu hình IP tĩnh mới
Xóa hoặc di chuyển các file cấu hình cũ:
# Di chuyển file cấu hình cũ (thường là 50-cloud-init.yaml hoặc 00-installer-config.yaml)
sudo mv /etc/netplan/*.yaml /etc/netplan/backup/
Tạo file cấu hình mới:
sudo nano /etc/netplan/01-netconfig.yaml
Bước 4: Nội dung file cấu hình
Nhập nội dung sau (điều chỉnh theo nhu cầu của bạn):
network:
version: 2
renderer: networkd
ethernets:
ens33: # Thay đổi tên interface phù hợp với hệ thống của bạn
dhcp4: false
dhcp6: false
addresses:
- 192.168.1.100/24 # IP tĩnh mong muốn
routes:
- to: default
via: 192.168.1.1 # Gateway
nameservers:
addresses:
- 8.8.8.8
- 8.8.4.4
search:
- local.domain # Domain local (tùy chọn)
Giải thích các tham số:
ens33
: Tên interface mạng (thay đổi theo hệ thống của bạn)dhcp4: false
: Tắt DHCP IPv4dhcp6: false
: Tắt DHCP IPv6addresses
: IP tĩnh kèm subnet mask (dạng CIDR)routes
: Định tuyến, thường là default gatewaynameservers
: DNS servers và search domain
Bước 5: Áp dụng cấu hình
# Kiểm tra cú pháp file cấu hình
sudo netplan try
# Nếu không có lỗi, áp dụng cấu hình
sudo netplan apply
# Hoặc áp dụng với debug mode để xem chi tiết
sudo netplan --debug apply
Vô hiệu hóa Cloud-Init
Phương pháp 1: Vô hiệu hóa hoàn toàn (Khuyến nghị)
# Tạo file để vô hiệu hóa cloud-init
sudo touch /etc/cloud/cloud-init.disabled
# Xác nhận file đã được tạo
ls -la /etc/cloud/cloud-init.disabled
Phương pháp 2: Vô hiệu hóa network configuration của Cloud-Init
Nếu bạn muốn giữ một số tính năng của cloud-init nhưng tắt phần network:
# Tạo file cấu hình
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Thêm nội dung:
network: {config: disabled}
Phương pháp 3: Gỡ bỏ Cloud-Init (Tùy chọn)
Nếu bạn muốn gỡ bỏ hoàn toàn cloud-init:
# Dừng và vô hiệu hóa các services
sudo systemctl stop cloud-init.service
sudo systemctl disable cloud-init.service
sudo systemctl stop cloud-init-local.service
sudo systemctl disable cloud-init-local.service
sudo systemctl stop cloud-config.service
sudo systemctl disable cloud-config.service
sudo systemctl stop cloud-final.service
sudo systemctl disable cloud-final.service
# Gỡ bỏ package (tùy chọn - cẩn thận với dependencies)
# sudo apt purge cloud-init -y
# sudo apt autoremove -y
Bước 4: Xóa dữ liệu cũ của Cloud-Init
# Xóa dữ liệu và logs của cloud-init
sudo rm -rf /var/lib/cloud/
sudo rm -rf /var/log/cloud-init*
# Xóa file cấu hình mạng cũ của cloud-init (nếu có)
sudo rm -f /etc/netplan/50-cloud-init.yaml
Kiểm tra và xác nhận
Kiểm tra cấu hình IP
# Kiểm tra IP hiện tại
ip addr show
# Kiểm tra routing table
ip route show
# Kiểm tra DNS
cat /etc/resolv.conf
# Test kết nối
ping -c 4 8.8.8.8
ping -c 4 google.com
Kiểm tra trạng thái Cloud-Init
# Kiểm tra cloud-init đã bị vô hiệu hóa
sudo cloud-init status
# Kết quả mong đợi: "status: disabled" hoặc "error"
# Kiểm tra services
sudo systemctl status cloud-init.service
sudo systemctl status cloud-init-local.service
Khởi động lại để kiểm tra
# Khởi động lại hệ thống
sudo reboot
# Sau khi khởi động lại, kiểm tra:
# 1. IP tĩnh vẫn được giữ nguyên
ip addr show
# 2. Cloud-init không chạy
sudo cloud-init status
# 3. Không có file network mới được tạo bởi cloud-init
ls -la /etc/netplan/
Xử lý sự cố thường gặp
Vấn đề 1: Mất kết nối sau khi apply netplan
Nếu mất kết nối, đợi 120 giây để cấu hình tự động rollback, hoặc:
- Truy cập console VM trực tiếp
- Khôi phục file backup:
sudo cp /etc/netplan/backup/*.yaml /etc/netplan/sudo netplan apply
Vấn đề 2: DNS không hoạt động
Kiểm tra và sửa file /etc/resolv.conf
:
# Nếu file là symlink, remove nó
sudo rm /etc/resolv.conf
# Tạo file mới
sudo nano /etc/resolv.conf
# Thêm nội dung:
nameserver 8.8.8.8
nameserver 8.8.4.4
Vấn đề 3: Cloud-init vẫn chạy sau khi disable
Đảm bảo đã tạo file disable và clear cache:
sudo touch /etc/cloud/cloud-init.disabled
sudo rm -rf /var/lib/cloud/*
sudo reboot
Vấn đề 4: Multiple default routes
Kiểm tra và xóa route thừa:
# Xem tất cả routes
ip route show
# Xóa route thừa (ví dụ)
sudo ip route del default via 192.168.1.254
Script tự động hóa (Tùy chọn)
Tạo script để tự động hóa quá trình:
#!/bin/bash
# File: setup-static-ip.sh
# Các biến cấu hình
INTERFACE="ens33"
IP_ADDRESS="192.168.1.100/24"
GATEWAY="192.168.1.1"
DNS1="8.8.8.8"
DNS2="8.8.4.4"
# Backup cấu hình hiện tại
echo "Backing up current configuration..."
sudo mkdir -p /etc/netplan/backup
sudo cp /etc/netplan/*.yaml /etc/netplan/backup/ 2>/dev/null
# Tạo file cấu hình mới
echo "Creating new netplan configuration..."
cat <<EOF | sudo tee /etc/netplan/01-netconfig.yaml
network:
version: 2
renderer: networkd
ethernets:
${INTERFACE}:
dhcp4: false
dhcp6: false
addresses:
- ${IP_ADDRESS}
routes:
- to: default
via: ${GATEWAY}
nameservers:
addresses:
- ${DNS1}
- ${DNS2}
EOF
# Vô hiệu hóa cloud-init
echo "Disabling cloud-init..."
sudo touch /etc/cloud/cloud-init.disabled
# Xóa dữ liệu cloud-init
echo "Cleaning cloud-init data..."
sudo rm -rf /var/lib/cloud/
sudo rm -f /etc/netplan/50-cloud-init.yaml
# Áp dụng cấu hình
echo "Applying network configuration..."
sudo netplan apply
echo "Configuration complete!"
echo "Current IP configuration:"
ip addr show ${INTERFACE} | grep inet
Chạy script:
chmod +x setup-static-ip.sh
./setup-static-ip.sh
Lưu ý quan trọng
- Luôn backup trước khi thay đổi: Đảm bảo có backup của cấu hình hiện tại
- Test trong môi trường lab trước: Thử nghiệm trên VM test trước khi áp dụng lên production
- Console access: Đảm bảo có quyền truy cập console VM trong trường hợp mất kết nối mạng
- Document thay đổi: Ghi chép lại các thông số IP đã cấu hình
- Cẩn thận với firewall: Kiểm tra firewall rules sau khi thay đổi IP
Tổng kết
Việc cấu hình IP tĩnh và vô hiệu hóa Cloud-Init trên Ubuntu 24.04.3 giúp đảm bảo hệ thống có cấu hình mạng ổn định và không bị thay đổi ngoài ý muốn. Hãy luôn thực hiện các bước backup và test cẩn thận trước khi áp dụng lên môi trường production.