terraform-provider-proxmox icon indicating copy to clipboard operation
terraform-provider-proxmox copied to clipboard

Custom LXC Root Volume Size

Open DacoDev opened this issue 2 years ago • 6 comments

Is your feature request related to a problem? Please describe. Root volumes for LXC containers are made at the basic size that the image was created at

Describe the solution you'd like Ability to specify a custom size root volume

Describe alternatives you've considered Creating volumes after creation and attaching them Making a custom container template image based on a stock one and cloning

Additional context Has been requested previously on the pre-fork danitso repo: https://github.com/danitso/terraform-provider-proxmox/issues/86

DacoDev avatar Jul 09 '22 07:07 DacoDev

Howdy, just FYI, I don't know GO directly but am learning as I go and forked to start working on this: https://github.com/DacoDev/terraform-provider-proxmox-dacofork

From digging around, it looks like some of the resources that will be needed for this already exist. Just don't want to duplicate efforts or if you have any suggestions the repo is public.

DacoDev avatar Jul 25 '22 23:07 DacoDev

Awesome! I'll try to take a look in the next few days.

bpg avatar Jul 26 '22 00:07 bpg

@DacoDev Thanks for the code! I've made a few changes on top of your main branch, here is the patch: Fix_RootFS_parameters_handling.patch.zip (or if you add me as a contributor to your repo I can make a PR there)

The changes seems to be working, here is an example container from my test env: Screen Shot 2022-07-26 at 6 35 36 PM

The only remaining part is documentation update -- add rootfs_size param under disk in docs/resources/virtual_environment_container.md.

Then feel free to open a PR!

bpg avatar Jul 26 '22 22:07 bpg

Thanks for checking it out! I applied the patch and added you as a contributor - really great reference for what I can improve on and conventions to follow. I'll do a bit more testing, I'm a little concerned around the default value set to 4G. I'm not quite sure how LXC images are created/deployed but if the base image to deploy is larger than 4G we may hit a snag so I'll see what I can do around that or if it's an issue that we run in to. I based that just off the LXCs that I've created from defaults they were all 4G.

Then I'll update the docs in either direction that goes and PR!

DacoDev avatar Jul 27 '22 02:07 DacoDev

Sorry for the delay on getting this back, I ran into issues while spinning up a container, it wasn't actually receiving or recognizing the custom volume size. I believe that there are/were some components of creating the rootfs URL arguments missing that piggybacking on the Disk section was causing. So since there are many other options you can pass for the rootFS anyway I'm working on adding it in as a new TF stanza; so instead of being nested under disk it'd be its own rootFS section

DacoDev avatar Jul 31 '22 15:07 DacoDev

Yeah, I think having a separate node in the model for rootfs params is a good idea.

bpg avatar Aug 02 '22 00:08 bpg

Hey @DacoDev! Are you still working on this feature? If not, I can try finishing it...

bpg avatar Dec 29 '22 19:12 bpg

Hey @bpg , I’m sorry but no, I got lost in the sauce then school started (going back as an adult) and I ended up scrapping my ProxMox host in favor of a few smaller NUCs as a k8s cluster. I made a few commits after your patch but I’m not sure if any of them would be useful, I think you’re a collaborator on my repo but let me know if you need me to push anything over!

DacoDev avatar Dec 29 '22 19:12 DacoDev

No worries, I'll take a peek, thanks!

bpg avatar Dec 29 '22 19:12 bpg

I'd love to see this merged soon as it's pretty much the only thing that limits functionality vs the other provider.

numkem avatar Jan 13 '23 17:01 numkem

Hopefully this weekend 🤞

bpg avatar Jan 13 '23 21:01 bpg

The DiskSize field in RootFS struct is read-only, so can't be used to change the FS size. However, there is a special syntax for the volume field that allows to specify a different rootfs size at creation time. More details in https://pve.proxmox.com/pve-docs/chapter-pct.html#_storage_backed_mount_points.

So I basically started from scratch and implemented it like:

  disk {
    datastore_id = "local"
    size         = 10
  }

Note that the datastore_id field is mandatory if you want to customize the size. Also, this feature can't be used (as of now) to resize the rootfs.

bpg avatar Jan 16 '23 03:01 bpg