Auto-install qemu-guest-agent package during image customization
This commit is contained in:
@@ -262,7 +262,10 @@ proxmox-cloud-image -batch batch.txt
|
||||
## How It Works
|
||||
|
||||
1. Download cloud image dari URL yang diberikan
|
||||
2. Customize image (resize, inject SSH key jika ada)
|
||||
2. Customize image:
|
||||
- Resize disk (jika di-specify)
|
||||
- Inject SSH key (jika ada)
|
||||
- **Install qemu-guest-agent package** (jika guest-agent enabled)
|
||||
3. Upload image ke Proxmox host via SCP
|
||||
4. Create VM menggunakan `qm` commands
|
||||
5. Import disk dan configure VM
|
||||
@@ -280,11 +283,15 @@ QEMU Guest Agent adalah service yang berjalan di guest OS untuk:
|
||||
- File system freeze/thaw
|
||||
- Time synchronization
|
||||
|
||||
**Tool ini akan otomatis install qemu-guest-agent package** ke dalam image menggunakan `virt-customize` sebelum upload ke Proxmox.
|
||||
|
||||
Enable dengan flag `-guest-agent` atau di config file:
|
||||
```yaml
|
||||
guest_agent: true
|
||||
```
|
||||
|
||||
**Note**: Guest agent di-enable by default. Package akan di-install otomatis saat customize image.
|
||||
|
||||
## Proxmox Firewall
|
||||
|
||||
Proxmox firewall bisa di-enable untuk template dengan flag `-firewall` atau di config file:
|
||||
|
||||
25
customize.go
25
customize.go
@@ -28,6 +28,12 @@ func customizeImage(config *Config) error {
|
||||
}
|
||||
}
|
||||
|
||||
if config.GuestAgent {
|
||||
if err := installGuestAgent(imagePath); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
fmt.Println("Verifying customized image...")
|
||||
if err := verifyImage(imagePath); err != nil {
|
||||
return fmt.Errorf("customized image verification failed: %w", err)
|
||||
@@ -93,3 +99,22 @@ func injectSSHKey(imagePath, sshKeyPath string) error {
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func installGuestAgent(imagePath string) error {
|
||||
fmt.Println("Installing QEMU Guest Agent...")
|
||||
|
||||
cmd := exec.Command("virt-customize",
|
||||
"-a", imagePath,
|
||||
"--install", "qemu-guest-agent",
|
||||
"--run-command", "systemctl enable qemu-guest-agent",
|
||||
)
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
|
||||
if err := cmd.Run(); err != nil {
|
||||
return fmt.Errorf("failed to install qemu-guest-agent: %w", err)
|
||||
}
|
||||
|
||||
fmt.Println("QEMU Guest Agent installed and enabled!")
|
||||
return nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user