You want to create `fully baked` or `golden` Compute Engine images for your application. You need to bootstrap your application to connect to the appropriate database according to the environment the application is running on (test, staging, production). What should you do?
A. Embed the appropriate database connection string in the image. Create a different image for each environment.
B. When creating the Compute Engine instance, add a tag with the name of the database to be connected. In your application, query the Compute Engine API to pull the tags for the current instance, and use the tag to construct the appropriate database connection string.
C. When creating the Compute Engine instance, create a metadata item with a key of 'DATABASE' and a value for the appropriate database connection string. In your application, read the 'DATABASE' environment variable, and use the value to connect to the appropriate database.
D. When creating the Compute Engine instance, create a metadata item with a key of 'DATABASE' and a value for the appropriate database connection string. In your application, query the metadata server for the 'DATABASE' value, and use the value to connect to the appropriate database.
Answer: D
✅ Explanation
-Using instance metadata is a standard and recommended approach in Google Cloud for customizing instance behavior at boot or runtime, especially for differentiating environments like test, staging, and production.
-Here's why option D is best:
-Metadata values are easily configurable at instance creation.
-They avoid hardcoding sensitive details like connection strings inside the image.
-Applications can query the metadata server from within the VM via a simple HTTP call:
bash
Copy
Edit
curl http://metadata.google.internal/computeMetadata/v1/instance/attributes/DATABASE -H "Metadata-Flavor: Google"
-This supports reusability of a single golden image across environments.