canonical / terraform-provider-maas

Terraform MAAS provider
Mozilla Public License 2.0
60 stars 43 forks source link

feat: `maas_machine` support commissioning for discovered machines #151

Open skatsaounis opened 7 months ago

skatsaounis commented 7 months ago

Currently, maas_machine expects the pxe MAC address as a required field and also tries to create machine entries when it is used. However there are cases when the MAAS operators either do not know the PXE MAC address or the machine has already been discovered and the create is bound to fail since MAC address defined in Terraform module is already in use.

By supporting the above use cases, maas_machine will fully support commissioning of machines.

seb54000 commented 3 months ago

+1 as I have an issue with vm_host_machine, I need to fix an IP address (static) and this can be done only before deploy time. I compose (vm_host_machine) the VM then it is also commisioning then it is in ready state in machines. I should now configure an interface there hence need a resource machine but I don't know the PXE MAC address (sad thing is I know a lot on this machine like the hostname that I set during the compose phase)

I'm not sure to succeed easily here and may go back to using maas CLI, do you think it would be possible in terraform ? Do you have such examples ?

EDIT : I also thought about having the PXE MAC address in the attributes of the vm_host_machine resource but it is not available so I have no clue how to get this information without an external process from terraform

spdfnet commented 2 months ago

For your first point, import maas_machine.myMachine MAAS_ID should be used instead.

Looking at your PR, I am not sure if it makes a lot of sense tinkering with the machine state flow.

Why not use tags and avoid defining maas_machine at all ? maas_instance is what you ultimately need, isn't it?