Are preconditions and postconditions available for modules?

Are precondition/ postcondition available for module creations or only for resources?

As the lifecycle block in which conditions are defined is conspicuously absent from the documentation for modules, I think not.

Which actually makes sense - modules introduce various additional resource and data blocks into the overall graph processing of a Terraform configuration, but those blocks can end up getting processed freely intermixed with those from other modules - i.e. there is no reasonable definition of “pre” and “post” for modules.

You can always decide to define a null_resource inside the module, though, and add conditions to that. You would, however, then need to add dependencies between the null_resource and everything else in the module, if you intended the conditions to run with a guaranteed ordering beyond that required by implicit dependencies due to data flows.

It is possible to declare a precondition inside an output block to declare something that ought to be true in order for that output value to be valid. That can be a good place to declare some conditions that should generally be true about the results of a module, without necessarily attaching them to a particular resource or data block.

(It’s a precondition rather than a postcondition because when used in a root module it prevents the invalid new value from being written out to the state where a tfe_outputs or terraform_remote_state data source could find it. The distinction between “pre” and “post” doesn’t really make any difference for modules being called from module blocks because evaluating an output value doesn’t have any externally-visible side effects anyway.)