Bastian
DNS Server
LoadBalancer/HAPROXY
192.168.0.254
Bootstrap 4 core 16 GB       192.168.0.240
3 x Master 4 core 16 GB      192.168.0.241,192.168.0.242,192.168.0.243
2 x Worker 4 8 GB       192.168.0.244,192.168.0.245
ClusterName: devops
domainName: example.com
*.apps.devops.example.com     192.168.0.254
192.168.0.254    api.devops.example.com
192.168.0.254    api-int.devops.example.com
192.168.0.240    bootstrap.devops.example.com
192.168.0.241    master1.devops.example.com
192.168.0.242    master2.devops.example.com
192.168.0.243    master3.devops.example.com
192.168.0.244    worker1.devops.example.com
192.168.0.245    worker2.devops.example.com
Openshift-installer
openshift-linux-cli
COREOS
#####
Steps :
Install & configure DNS & HAproxy
Add All DNS entries & setup HAProxy configuration. & Verify them.
Disable SELINUX & Firewalld
####### Download below software:
Openshift-installer
openshift-linux-cli
COREOS
#########################
Stage # 3:
After creating install-config file
## create a dir
mkdir ocp/config
cp install-conifg.yaml config/
# Setup manifests dir
openshift-install create manifests --dir config
## Remove some files in Config dir & Setup a parameter value to false in
manifests/cluster-scheduler-02-config.yml
cd config
rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml
openshift/99_openshift-cluster-api_worker-machineset-*.yaml openshift/99_openshift-
machine-api_master-control-plane-machine-set.yaml
sed -i 's/true/false/g' manifests/cluster-scheduler-02-config.yml
## Now create some ignition files from OCP dir
cd ..
 openshift-install create ignition-configs --dir config
################ Prerequisites
########## You have obtained the Ignition config files for your cluster.
########## You have access to an HTTP server that you can access from your computer
and that the machines that you create can access.
## Procedure ( Imp. Note: we are creating base64 because of big files size of
ignition file so we install & config HTTPD on machine. (if we are using HAPROXY
machine we need to change HTTPD port to 8080) )
### Upload the bootstrap Ignition config file, which is named
<installation_directory>/bootstrap.ign, that the installation program created to
your HTTP server. Note the URL of this file.
### Save the following secondary Ignition config file for your bootstrap node to
your computer as <installation_directory>/merge-bootstrap.ign:
cd config/
vi merge-bootstrap.ign
{
    "ignition": {
       "config": {
          "merge": [
            {
              "source": "http://192.168.0.254:8080/ocp4/bootstrap.ign",
              "verification": {}
            }
          ]
       },
       "timeouts": {},
       "version": "3.2.0"
    },
    "networkd": {},
    "passwd": {},
    "storage": {},
    "systemd": {}
}
### Now Locate & create the following Ignition config files that the installation
program created:
base64 -w0 master.ign > master.64
base64 -w0 worker.ign > worker.64
base64 -w0 bootstrap-merge.ign > bootstrap-merge.64
Stage #4
VMWARE Vcenter Machines
Upload COREOS binries to DataStore
Now clone from COREOS template to bootstrap
Change below parameters:
guestinfo.afterburn.initrd.network-kargs
      ip=192.168.0.240::192.168.0.1:255.255.255.0:::none nameserver=192.168.0.254
guestinfo.ignition.config.data                 Locate the base-64 encoded files
that you created previously   (cat config/merge-bootstrap.64)
guestinfo.ignition.config.data.encoding         base64
disk.EnableUUID                           TRUE
Now wait for the Cloning and clone Master1 using New cloned bootstarp machine.
Now Clone from COREOS template to Master2 , Master3, Worker1, Worker2 using
Master1 cloned VM and just change *.64 bit file based on machine(worker )
####### Now you can start bootstrap machine & after bootup bootstrap , strat master
ip=192.168.0.240::192.168.0.1:255.255.255.0:::none nameserver=192.168.0.254
Troubleshooting Commands:
openshift-install --dir config wait-for bootstrap-complete --log-level=debug   ##
run on bastion nodes
journalctl -b -f -u release-image.service -u bootkube.service   ### run inside
bootstrap using "ssh core@bootstrap"
After bootstar process completed.
### Once bootstrap sever process completed which we can see "openshift-install --
dir config wait-for bootstrap-complete --log-level=debug"
### After that we need to start Worker nodes, we need to do few below steps so we
can see worker nodes and all Operators will be true
### Imp. Note: we need to comment out bootstrap entries in haproxy configuration
files & restart service
oc get co
oc get csr
oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\
n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve
 oc edit configs.imageregistry.operator.openshift.io
 # in spec > Management State > Removed/Managed
 oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch
'{"spec":{"storage":{"emptyDir":{}}}}'
 then you need to wait for 30 minutes all operators will become in true state.
 or
 you can go to namspaces individually and delete the ralevent pods there.