Question: Does Google Cloud provide public hostnames for their Compute instances?

AWS seems to [generate public hostnames](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-hostnames) for their EC2 instances:

> 
> A public (external) DNS hostname takes the form ec2-public-ipv4-address.compute-1.amazonaws.com for the us-east-1 region, and ec2-public-ipv4-address.region.compute.amazonaws.com for other regions. We resolve a public DNS hostname to the public IPv4 address of the instance outside the network of the instance...
> 
> 
> 

**Similar question:**  

[This](https://stackoverflow.com/questions/25724351/google-cloud-public-hostname) seems like a similar question but (1) setting up a DNS seems like an overkill, (2) seems like I'll need to do some sort of thing outside of Google Cloud anyway or it isn't public (not sure), and (3) it could be outdated (2014).

Answer: 
No, GCE doesn't offer hostnames for an instance. It does assign external IP addresses for each instance. Associating a DNS record with your instance is the only method to generate a hostname.

GCE does have built in private hostnames, inside the same network. For example two instances in the same VPC can ping each other by name

```
Instance 'test-instance': start server on :8080
Instance 'second-instance': curl test-instance:8080
// Response 'Hello World'

```
GCE instances don't currently have a public DNS name for their external IP address. But there is now a `gcloud compute config-ssh` ([docs](https://cloud.google.com/sdk/gcloud/reference/compute/config-ssh)) command that's a pretty good substitute.

This will insert `Host` blocks into your `~/.ssh/config` file that contain the IP address and configuration for the host key.

Although this only helps with SSH (and SSH-based applications like Mosh and git+ssh), it does have a few advantages over DNS:

* There is no caching/propagation delay as you might have with DNS
* It pre-populates the right host key, and the host key is checked the right way even if the ephemeral IP address changes.

Example:

```
$ gcloud compute config-ssh
...
$ ssh myhost.us-west1-b.surly-koala-232

```