Some values cannot be predicted until the requested object is actually created, because the value is assigned by the remote API and not by the configuration or by Terraform itself. There is no way to look at these values without applying because Terraform itself can’t know them until the create operation has completed.
In this case, it looks like this
azurerm_public_ip.ubuntu_disk resource instance is being created in the same plan, so Terraform must wait to see what its
fqdn value will be before it can determine this
One way to work more conservatively here is to run
terraform apply with the extra option
-target=azurerm_public_ip.ubuntu_disk, thus asking Terraform to perform only the actions required to make the
azurerm_public_ip.ubuntu_disk instances match the configuration. The
-target option is only for exceptional circumstances and not for everyday use for the reasons mentioned in its documentation, but you can use it here as an exceptional process if you are concerned about what value the
fqdn attribute will take after apply.