Tổng quan.
Trên Ubuntu 22.04 (và các phiên bản tương tự), file /etc/netplan/50-cloud-init.yaml
thường được quản lý tự động bởi Cloud-Init. Khi hệ thống khởi động lại, nếu Cloud-Init vẫn đang hoạt động và được cấu hình để thiết lập mạng, nó sẽ tái tạo file 50-cloud-init.yaml
theo cấu hình mặc định hoặc thông tin lấy từ datasource (ví dụ: metadata từ cloud provider như AWS, OpenStack, v.v.).
Nguyên nhân file bị reset sau khi reboot:
- Cloud-Init đang chạy và áp dụng lại cấu hình mạng.
- Bạn chỉnh sửa trực tiếp file
50-cloud-init.yaml
, nhưng lần sau reboot Cloud-Init ghi đè lại.
Cách khắc phục
✅ Cách 1: Vô hiệu hóa cấu hình mạng của Cloud-Init
Nếu bạn muốn tự quản lý file netplan và không muốn Cloud-Init ghi đè nữa:
- Tạo file config để tắt networking từ Cloud-Init:
sudo nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg
Thêm nội dung:network: {config: disabled}
- Xoá hoặc chỉnh sửa file
50-cloud-init.yaml
theo ý bạn:sudo rm /etc/netplan/50-cloud-init.yaml sudo nano /etc/netplan/01-netcfg.yaml
(Hoặc tạo file mới nếu muốn tự cấu hình lại mạng) - Áp dụng lại cấu hình netplan:
sudo netplan apply
- Khởi động lại máy để kiểm tra:
sudo reboot
✅ Cách 2: Chỉnh sửa cấu hình Cloud-Init gốc (không khuyến nghị trừ khi cần tùy biến sâu)
Nếu bạn cần Cloud-Init nhưng muốn cấu hình mạng khác với mặc định, bạn có thể chỉnh ở:
/etc/cloud/cloud.cfg
/etc/cloud/cloud.cfg.d/*
- Hoặc tuỳ thuộc vào datasource, cấu hình có thể đến từ metadata service.
Kiểm tra trạng thái Cloud-Init
cloud-init status
Tóm tắt
Vấn đề | Giải pháp |
---|---|
File /etc/netplan/50-cloud-init.yaml bị ghi đè khi reboot | Tắt cấu hình mạng từ Cloud-Init bằng 99-disable-network-config.cfg |
Nếu bạn muốn mình hướng dẫn cụ thể cách viết lại file netplan
thủ công phù hợp với máy bạn, cứ cung cấp thông tin về interface hiện tại (ip a
, lshw -C network
,…) nhé.