terraform-oci-compute-instance
terraform-oci-compute-instance copied to clipboard
make cloudinit content easier to pass to instance
Community Note
- Please vote on this issue by adding a 👍 reaction to the original issue to help the community and maintainers prioritize this request
- Please do not leave "+1" or "me too" comments, they generate extra noise for issue followers and do not help prioritize the request
- If you are interested in working on this issue or have submitted a pull request, please leave a comment
Description
Currently, cloud-init script content can be passed to an instance using var.user_data
. This is in line with the provider argument, but it is not really explicit from a user perspective. Also, the content of user_data
needs to be provided in the correct format: a base64-encoded string.
The proposition is to use var.cloud_init_file
to provide the content of user_data
to oci_core_instance
. This would effectively deprecate var.user_data
from the module.
Cloud-init files being mostly multi-line, it is probably more easy to restrict the input to be a file, rather than allow for any arbitrary string. Multi-line strings are possible using HEREDOC strings, but it would only add complexity without real benefits for the user.
New or Affected Resource(s)
oci_core_instance
Potential Terraform Configuration
metadata = {
...
user_data = var.cloud_init_file != "disabled" ? "${filebase64(var.cloud_init_file)}" : null
...
}
- [ ] implement the new feature
- [ ] add examples
References
i do really think the proposition is useless and current implementation is totally fine..
what';s wrong with the example you provided in that issue #86 ??
user_data = filebase64(var.some_user_data_variable)
and what do you propose instead of this:
user_data = base64encode(
templatefile(
"${path.module}/cloud-init.sh.tftpl",
{
image = var.image,
args = var.image_args,
vpn_vendor = var.vpn_vendor,
vpn_username = var.vpn_username,
vpn_password = var.vpn_password,
}
)
)
??