The Ansible playbooks do not provide a means of setting nodeName when performing Advanced Install or scaleup? I can add new nodes with the appropriate nodeName set and remove the existing ones if possible.

Setting the openshift_hostname variable should override the nodeName value when using the playbooks, both for install and scaleup.

Otherwise, would you care to provide some details on what node client credentials needs to be updated? The documentation revolves largely around assisted setups; didn't manage to find anything on manual node configuration and introduction into an existing cluster (might look into how scaleup works in Ansible for some idea).

I'm cc'ing Andrew Butcher, work that he has been doing recently should allow for you to replace the certificates/kubeconfigs that are used.

Node names are immutable in the API. Changing the node name would require updating the node client credentials, the node would register another node with the API when it started, and any pods scheduled to the old node name would get evicted once the old node object's status got stale enough.

I have a 5 node Openshift cluster split across 2 AZs; our colocation center and AWS, with a master in each AZ and the rest being nodes.

We setup our cluster with the Ansible script, and somewhere during the setup, the EC2 instance's private hostname were picked up and registered as node names of the nodes in AWS, which is a bit annoying as that deviates from our hostname conventions and is rather difficult to read, and it's not something that can be changed post setup.

It didn't help that parts of the admin operations seem to be using the EC2 instance's private hostname, so I get errors like this:

Scheduling system related pods on the AWS instances works (router, fluentd), though any build pods that lands up on EC2s never gets built, and just eventually times out; my suspicion is that the build process monitors depends on the hostname which can't be reached from our colocation center master (which we use as a primary), and hence breaks.

I'm unable to find much detail on this behaviour.

1. Can we manually change the hostname of certain nodes?

The nodeName value overrides this, however if you are relying on cloud provider integration there are limitations, see below.

2. How do we avoid registering EC2 nodes with their private hostnames?

f you are willing to give up the native cloud provider integration (ability to leverage EBS volumes as PVs), then you can override this using the openshift_hostname variable when installing the cluster. At least as of Kubernetes/Origin 1.2, the nodeName value in the node config needed to match the private dns name of the host.