<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Anzal Beg</title>
    <description>The latest articles on DEV Community by Anzal Beg (@anzal_beg_fc28875cb5020da).</description>
    <link>https://dev.to/anzal_beg_fc28875cb5020da</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1782697%2F34a1def9-8c02-4b8f-8ed1-905e3f2be005.png</url>
      <title>DEV Community: Anzal Beg</title>
      <link>https://dev.to/anzal_beg_fc28875cb5020da</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/anzal_beg_fc28875cb5020da"/>
    <language>en</language>
    <item>
      <title>OpenShift Installation Using UPI on VMware vSphere Machines</title>
      <dc:creator>Anzal Beg</dc:creator>
      <pubDate>Mon, 15 Jul 2024 11:35:13 +0000</pubDate>
      <link>https://dev.to/anzal_beg_fc28875cb5020da/openshift-installation-using-upi-on-vmware-vsphere-machines-137d</link>
      <guid>https://dev.to/anzal_beg_fc28875cb5020da/openshift-installation-using-upi-on-vmware-vsphere-machines-137d</guid>
      <description>&lt;p&gt;&lt;strong&gt;Table of Contents&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Introduction&lt;/li&gt;
&lt;li&gt;Prerequisites&lt;/li&gt;
&lt;li&gt;Required Hardware Specifications&lt;/li&gt;
&lt;li&gt;User-Provisioned DNS Requirements&lt;/li&gt;
&lt;li&gt;Load Balancing Requirements for User-Provisioned Infrastructure&lt;/li&gt;
&lt;li&gt;Validating DNS Resolution&lt;/li&gt;
&lt;li&gt;Generating a Key Pair for SSH Access&lt;/li&gt;
&lt;li&gt;Obtaining the Installation Program&lt;/li&gt;
&lt;li&gt;Download the RHCOS images&lt;/li&gt;
&lt;li&gt;Installing the OpenShift CLI&lt;/li&gt;
&lt;li&gt;Creating the Installation Configuration File&lt;/li&gt;
&lt;li&gt;Creating the Kubernetes Manifest and Ignition Config Files&lt;/li&gt;
&lt;li&gt;Creating a Web Server on the same Installation VM/Different VM&lt;/li&gt;
&lt;li&gt;Copy the ignition files to the Web Server&lt;/li&gt;
&lt;li&gt;Boot ISO Image Preparation Using Custom ISO and Ansible Automation&lt;/li&gt;
&lt;li&gt;Login to the Cluster&lt;/li&gt;
&lt;li&gt;Conclusion**&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Red Hat OpenShift is a powerful Kubernetes platform for automating the deployment, scaling, and management of containerized applications. This guide provides a step-by-step process to install OpenShift v4.14 on a vSphere environment. By following these instructions, you can set up a robust and scalable infrastructure for your containerized applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Before you begin the installation, ensure you have the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Necessary hardware specifications met.&lt;/li&gt;
&lt;li&gt;Access to the vSphere environment to upload the ISO file.&lt;/li&gt;
&lt;li&gt;Red Hat OpenShift Cluster Manager account to access the download key.&lt;/li&gt;
&lt;li&gt;Necessary DNS and load balancing configurations.&lt;/li&gt;
&lt;li&gt;SSH access to the cluster nodes.&lt;/li&gt;
&lt;li&gt;HAProxy installed and configured on the load balancer node.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Required Hardware Specifications
&lt;/h2&gt;

&lt;p&gt;For an OpenShift installation on VMware using User-Provisioned Infrastructure (UPI), the typical node/vm requirements are as follows:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bootstrap Node:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Count: 1&lt;br&gt;
Purpose: Used for the initial bootstrap process of the OpenShift cluster. It is removed after the installation is complete.&lt;br&gt;
Requirements:&lt;br&gt;
CPU: 4 vCPUs&lt;br&gt;
Memory: 16 GB RAM&lt;br&gt;
Storage: 120 GB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Control Plane (Master) Nodes:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Count: 3 (Recommended for high availability)&lt;br&gt;
Purpose: Manage the OpenShift cluster and its components.&lt;br&gt;
Requirements:&lt;br&gt;
CPU: 4 vCPUs&lt;br&gt;
Memory: 16 GB RAM&lt;br&gt;
Storage: 120 GB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Compute (Worker) Nodes:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Count: At least 2 (Can be scaled based on workload requirements)&lt;br&gt;
Purpose: Run the user workloads (applications).&lt;br&gt;
Requirements:&lt;br&gt;
CPU: 2-4 vCPUs (Depending on the workload)&lt;br&gt;
Memory: 8-16 GB RAM (Depending on the workload)&lt;br&gt;
Storage: 120 GB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Infrastructure Nodes (Optional):&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Count: As needed (Typically 2-3 for large clusters)&lt;br&gt;
Purpose: Dedicated to running infrastructure-related workloads like registry, monitoring, logging, etc.&lt;br&gt;
Requirements:&lt;br&gt;
CPU: 4 vCPUs&lt;br&gt;
Memory: 16 GB RAM&lt;br&gt;
Storage: 120 GB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example for a Basic Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bootstrap Node: 1&lt;br&gt;
Control Plane Nodes: 3&lt;br&gt;
Compute Nodes: 2&lt;br&gt;
Summary of VMs:&lt;br&gt;
Total Nodes: 6&lt;br&gt;
Total vCPUs: 28-32&lt;br&gt;
Total Memory: 88-96 GB&lt;br&gt;
Total Storage: 720 GB&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example of Production Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To successfully install OpenShift, the following hardware specifications are required:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Machine&lt;/th&gt;
&lt;th&gt;Memory&lt;/th&gt;
&lt;th&gt;CPU&lt;/th&gt;
&lt;th&gt;Storage&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;th&gt;OS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bootstrap&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;50 GB&lt;/td&gt;
&lt;td&gt;Used only during installation&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Helper Machine&lt;/td&gt;
&lt;td&gt;8 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;50 GB&lt;/td&gt;
&lt;td&gt;Web server for deployment purposes&lt;/td&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HA Proxy Node #1&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;50 GB&lt;/td&gt;
&lt;td&gt;Load Balancer node&lt;/td&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HA Proxy Node #2&lt;/td&gt;
&lt;td&gt;16 GB&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;50 GB&lt;/td&gt;
&lt;td&gt;Load Balancer node&lt;/td&gt;
&lt;td&gt;Ubuntu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controller Node #1&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controller Node #2&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Controller Node #3&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worker Nodes #1&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worker Nodes #2&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worker Nodes #3&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worker Nodes #4&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Worker Nodes #5&lt;/td&gt;
&lt;td&gt;64 GB&lt;/td&gt;
&lt;td&gt;16&lt;/td&gt;
&lt;td&gt;120 GB&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infra Node #1&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;120 GB + 2 TB (HDD/SSD)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infra Node #2&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;120 GB + 2 TB (HDD/SSD)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Infra Node #3&lt;/td&gt;
&lt;td&gt;32 GB&lt;/td&gt;
&lt;td&gt;10&lt;/td&gt;
&lt;td&gt;120 GB + 2 TB (HDD/SSD)&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;td&gt;RHCOS&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  User-Provisioned DNS Requirements
&lt;/h2&gt;

&lt;p&gt;Ensure that your DNS and hostnames are configured as follows:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;DNS/Hostname&lt;/th&gt;
&lt;th&gt;IP&lt;/th&gt;
&lt;th&gt;IP Description&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;api.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.68.57&lt;/td&gt;
&lt;td&gt;F5 VIP Pointing to the internal load balancer haproxy servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;api-int.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.68.57&lt;/td&gt;
&lt;td&gt;F5 VIP Pointing to the internal load balancer haproxy servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;*.apps.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.68.57&lt;/td&gt;
&lt;td&gt;F5 VIP Pointing to the internal load balancer haproxy servers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocbs01.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.70&lt;/td&gt;
&lt;td&gt;Bootstrap VM IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ooccn01.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Master Node VM IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ooccn02.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.75&lt;/td&gt;
&lt;td&gt;Master Node VM IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ooccn03.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Master Node VM IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocinfra01.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node Role Infra IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocinfra02.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node Role Infra IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocinfra03.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node Role Infra IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocwn01.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocwn02.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocwn03.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocwn04.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node IP&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;oocwn05.openshift.onlinecluster.com&lt;/td&gt;
&lt;td&gt;174.168.95.74&lt;/td&gt;
&lt;td&gt;Worker Node IP&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;h2&gt;
  
  
  Load Balancing Requirements for User-Provisioned Infrastructure
&lt;/h2&gt;

&lt;p&gt;Proper load balancing is essential for high availability and scalability. Here are the load balancer configurations:&lt;/p&gt;
&lt;h3&gt;
  
  
  API Load Balancer
&lt;/h3&gt;

&lt;p&gt;Install HAProxy on your HAProxy node using the following commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo &lt;/span&gt;apt upgrade
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;haproxy
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit the HAProxy configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/haproxy/haproxy.cfg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;global
    log /dev/log    local0
    log /dev/log    local1 notice
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

    # Default SSL material locations
    ca-base /etc/ssl/certs
    crt-base /etc/ssl/private

    ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
    ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
    ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets

defaults
    log     global
    mode    http
    option  httplog
    option  dontlognull
    timeout connect 5000
    timeout client  50000
    timeout server  50000
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend api
    bind 174.168.95.72:6443
    default_backend api
    mode tcp

frontend machine-api
    bind 174.168.95.72:22623
    default_backend machine-api
    mode tcp

backend api
    balance roundrobin
    mode tcp
    server OOCCN01 ooccn01.openshift.onlinecluster.com:6443 check
    server OOCCN02 ooccn02.openshift.onlinecluster.com:6443 check
    server OOCCN03 ooccn03.openshift.onlinecluster.com:6443 check
    server OOCBS01 oocbs01.openshift.onlinecluster.com:6443 check

backend machine-api
    balance roundrobin
    mode tcp
    server OOCCN01 ooccn01.openshift.onlinecluster.com:22623 check
    server OOCCN02 ooccn02.openshift.onlinecluster.com:22623 check
    server OOCCN03 ooccn03.openshift.onlinecluster.com:22623 check
    server OOCBS01 oocbs01.openshift.onlinecluster.com:22623 check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Ingress Load Balancer
&lt;/h3&gt;

&lt;p&gt;Edit the HAProxy configuration file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;nano /etc/haproxy/haproxy.cfg
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Add the following configuration:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;frontend ingress-http
    bind 174.168.95.72:80
    default_backend ingress-http
    mode tcp

frontend ingress-https
    bind 174.168.95.72:443
    default_backend ingress-https
    mode tcp

backend ingress-http
    balance roundrobin
    mode tcp
    server OOCWN01 oocwn01.openshift.onlinecluster.com:80 check
    server OOCWN02 oocwn02.openshift.onlinecluster.com:80 check
    server OOCWN03 oocwn03.openshift.onlinecluster.com:80 check
    server OOCWN04 oocwn04.openshift.onlinecluster.com:80 check
    server OOCWN05 oocwn05.openshift.onlinecluster.com:80 check

backend ingress-https
    balance roundrobin
    mode tcp
    server OOCWN01 oocwn01.openshift.onlinecluster.com:443 check
    server OOCWN02 oocwn02.openshift.onlinecluster.com:443 check
    server OOCWN03 oocwn03.openshift.onlinecluster.com:443 check
    server OOCWN04 oocwn04.openshift.onlinecluster.com:443 check
    server OOCWN05 oocwn05.openshift.onlinecluster.com:443 check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Validating DNS Resolution
&lt;/h2&gt;

&lt;p&gt;Ensure that DNS is properly resolving. Use the following commands to validate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;dig +noall +answer 174.168.1.1 api.openshift.onlinecluster.com 
api.openshift.onlinecluster.com.   3600    IN      A       174.168.68.57

dig +noall +answer 174.168.1.1 .apps.openshift.onlinecluster.com 
.apps.openshift.onlinecluster.com. 3600 IN    A       174.168.1.1

dig +noall +answer 174.168.1.1 oocbs01.ajsb.ajman.ae
oocbs01.openshift.onlinecluster.com. 3600 IN A       174.168.95.70
dig +noall +answer  174.168.1.1 &lt;span class="nt"&gt;-x&lt;/span&gt; 174.168.68.57
57.68.168.174.in-addr.arpa. 3600 IN     PTR     &lt;span class="k"&gt;*&lt;/span&gt;.apps.openshift.onlinecluster.com.
57.68.168.174.in-addr.arpa. 3600 IN     PTR     api-int.openshift.onlinecluster.com.
57.68.168.174.in-addr.arpa. 3600 IN     PTR     api.openshift.onlinecluster.com.
57.68.168.174.in-addr.arpa. 3600 IN     PTR     &lt;span class="k"&gt;*&lt;/span&gt;.apps.openshift.onlinecluster.com.


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Generating a Key Pair for SSH Access
&lt;/h2&gt;

&lt;p&gt;Generate an SSH key pair for access to the nodes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;ssh-keygen &lt;span class="nt"&gt;-t&lt;/span&gt; rsa &lt;span class="nt"&gt;-b&lt;/span&gt; 4096 &lt;span class="nt"&gt;-N&lt;/span&gt; &lt;span class="s1"&gt;''&lt;/span&gt; &lt;span class="nt"&gt;-f&lt;/span&gt; ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command generates a public and private key pair. Ensure the public key (&lt;code&gt;~/.ssh/id_rsa.pub&lt;/code&gt;) is added to the nodes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Obtaining the Installation Program
&lt;/h2&gt;

&lt;p&gt;To download the OpenShift installer:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OCP_RELEASE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4.14.0
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;RELEASE_IMAGE&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;quay.io/openshift-release-dev/ocp-release:&lt;span class="nv"&gt;$OCP_RELEASE&lt;/span&gt;&lt;span class="nt"&gt;-x86_64&lt;/span&gt;
curl &lt;span class="nt"&gt;-o&lt;/span&gt; openshift-install-linux.tar.gz https://mirror.openshift.com/pub/openshift-v4/clients/ocp/&lt;span class="nv"&gt;$OCP_RELEASE&lt;/span&gt;/openshift-install-linux-&lt;span class="nv"&gt;$OCP_RELEASE&lt;/span&gt;.tar.gz
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-zxvf&lt;/span&gt; openshift-install-linux.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; /usr/local/bin


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Installing the OpenShift CLI
&lt;/h2&gt;

&lt;p&gt;To install the &lt;code&gt;oc&lt;/code&gt; command-line tool:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-o&lt;/span&gt; openshift-client-linux.tar.gz https://mirror.openshift.com/pub/openshift-v4/clients/ocp/&lt;span class="nv"&gt;$OCP_RELEASE&lt;/span&gt;/openshift-client-linux-&lt;span class="nv"&gt;$OCP_RELEASE&lt;/span&gt;.tar.gz
&lt;span class="nb"&gt;tar&lt;/span&gt; &lt;span class="nt"&gt;-zxvf&lt;/span&gt; openshift-client-linux.tar.gz &lt;span class="nt"&gt;-C&lt;/span&gt; /usr/local/bin
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Download your installation pull secret from the Red Hat OpenShift Cluster Manager &lt;a href="https://console.redhat.com/openshift/install/pull-secret" rel="noopener noreferrer"&gt;https://console.redhat.com/openshift/install/pull-secret&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download the RHCOS Images
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-o&lt;/span&gt; rhcos-4.14.0-x86_64-live.x86_64.iso  https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.14/4.14.0/rhcos-4.14.0-x86_64-live.x86_64.iso    
curl &lt;span class="nt"&gt;-o&lt;/span&gt; rhcos-4.14.0-x86_64-metal.x86_64.raw.gz https://mirror.openshift.com/pub/openshift-v4/x86_64/dependencies/rhcos/4.14/4.14.0/rhcos-4.14.0-x86_64-metal.x86_64.raw.gz
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating the Installation Configuration File
&lt;/h2&gt;

&lt;p&gt;Create a configuration file for the installation:&lt;br&gt;
Create a new directory:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; /home/user/ocp-install/
&lt;span class="nb"&gt;cd&lt;/span&gt; /home/user/ocp-install
&lt;span class="nb"&gt;mv&lt;/span&gt; /&amp;lt;download-dir&amp;gt;/ openshift-install &lt;span class="nb"&gt;.&lt;/span&gt;
openshift-install create install-config &lt;span class="nt"&gt;--dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Edit the generated &lt;code&gt;install-config.yaml&lt;/code&gt; to match your environment settings, including platform, base domain, and cluster name.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;apiVersion&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1&lt;/span&gt;
&lt;span class="na"&gt;baseDomain&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;onlinecluster.com&lt;/span&gt; 
&lt;span class="na"&gt;compute&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;hyperthreading&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Enabled&lt;/span&gt;   
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;worker&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;0&lt;/span&gt; 
&lt;span class="na"&gt;controlPlane&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;hyperthreading&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Enabled&lt;/span&gt;   
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;master&lt;/span&gt;
  &lt;span class="na"&gt;replicas&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;3&lt;/span&gt; 
&lt;span class="na"&gt;metadata&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ooc&lt;/span&gt; 
&lt;span class="na"&gt;platform&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;vsphere&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;vcenter&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://*****"&lt;/span&gt; 
    &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;********"&lt;/span&gt;
    &lt;span class="na"&gt;password&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;********&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;
    &lt;span class="na"&gt;datacenter&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;&amp;lt;datacenter&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;name&amp;gt;"&lt;/span&gt;
    &lt;span class="na"&gt;defaultDatastore&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;default&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;data&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;store&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;name"&lt;/span&gt;
    &lt;span class="na"&gt;folder&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/folder&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;structure&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;path,&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;where&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;vm's&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;will&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;be&lt;/span&gt;&lt;span class="nv"&gt; &lt;/span&gt;&lt;span class="s"&gt;residing"&lt;/span&gt; 
&lt;span class="na"&gt;fips&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; 
&lt;span class="na"&gt;pullSecret&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;....'&lt;/span&gt; 
&lt;span class="na"&gt;sshKey&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;..........'&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating the Kubernetes Manifest and Ignition Config Files
&lt;/h2&gt;

&lt;p&gt;Generate the necessary Kubernetes manifest and Ignition config files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openshift-install create manifests &lt;span class="nt"&gt;--dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open the /manifests/cluster-scheduler-02-config.yml file. locate the mastersSchedulable parameter and ensure that it is set to false. Save and exit.&lt;/p&gt;

&lt;p&gt;rm -f openshift/99_openshift-cluster-api_master-machines-&lt;em&gt;.yaml openshift/99_openshift-cluster-api_worker-machineset-&lt;/em&gt;.yaml&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;openshift-install create ignition-configs &lt;span class="nt"&gt;--dir&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Creating a Web Server on the same Installation VM/Different VM
&lt;/h2&gt;

&lt;p&gt;Update Your System&lt;br&gt;
The first step is to update your package index. Open a terminal and run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Install Apache:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;apt &lt;span class="nb"&gt;install &lt;/span&gt;apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After installation completes, Apache should start automatically. To verify:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;sudo &lt;/span&gt;systemctl status apache2
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Copy the ignitions files to Web Server
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt; &lt;span class="nb"&gt;sudo cp&lt;/span&gt; &lt;span class="k"&gt;*&lt;/span&gt;.ign /var/www/html/
 &lt;span class="nb"&gt;ls&lt;/span&gt; &lt;span class="nt"&gt;-ltr&lt;/span&gt; /var/www/html/
 &lt;span class="nb"&gt;sudo chmod &lt;/span&gt;775  /var/www/html/&lt;span class="k"&gt;*&lt;/span&gt;.ign
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Put the rhcos-4.14.0-x86_64-metal.x86_64.raw.gz in side the /var/www/html/&lt;/p&gt;

&lt;p&gt;From the installation host, validate that the Ignition config files are available on the URLs. The following example gets the Ignition config file for the bootstrap node:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-k&lt;/span&gt; http://&amp;lt;HTTP_server&amp;gt;/bootstrap.ign 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Boot ISO Image Preparation
&lt;/h2&gt;

&lt;h2&gt;
  
  
  Step 1: Boot ISO Image Using coreos-iso-maker
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download coreos-iso-maker: Use the provided GitHub repository link to download and set up coreos-iso-maker for generating the custom ISO image.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/chuckersjp/coreos-iso-maker.git
&lt;span class="nb"&gt;cd &lt;/span&gt;coreos-iso-maker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Modify inventory.yaml:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Navigate to the coreos-iso-maker directory and modify inventory.yaml as shown. Update IP addresses, network settings, and other configurations as needed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Example snippet from inventory.yaml&lt;/span&gt;
&lt;span class="na"&gt;all&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;children&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;bootstrap&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;oocbs01.openshift.onlinecluster.com:6443&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.70&lt;/span&gt;
    &lt;span class="na"&gt;master&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;dcajsbcn01.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.74&lt;/span&gt;
        &lt;span class="na"&gt;dcajsbcn02.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.75&lt;/span&gt;
        &lt;span class="na"&gt;dcajsbcn03.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.76&lt;/span&gt;
    &lt;span class="na"&gt;worker&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;hosts&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
        &lt;span class="na"&gt;oocwn01.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.80&lt;/span&gt;
        &lt;span class="na"&gt;oocwn02.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.81&lt;/span&gt;
        &lt;span class="na"&gt;oocwn03.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.82&lt;/span&gt;
        &lt;span class="na"&gt;oocwn04.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.83&lt;/span&gt;
        &lt;span class="na"&gt;oocwn05.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.84&lt;/span&gt;
        &lt;span class="na"&gt;oocinfra01.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.77&lt;/span&gt;
        &lt;span class="na"&gt;oocinfra02.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.78&lt;/span&gt;
        &lt;span class="na"&gt;oocinfra03.openshift.onlinecluster.com&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;ipv4&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.79&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Modify group_vars/all.yml:
Update the network and other configurations in the group_vars/all.yml file.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# group_vars/all.yml&lt;/span&gt;
&lt;span class="nn"&gt;---&lt;/span&gt;
&lt;span class="c1"&gt;# If only one network interface&lt;/span&gt;
&lt;span class="na"&gt;gateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;174.168.95.1&lt;/span&gt;
&lt;span class="na"&gt;netmask&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;255.255.255.0&lt;/span&gt;
&lt;span class="c1"&gt;# VMWare default ens192&lt;/span&gt;
&lt;span class="c1"&gt;# KVM default ens3&lt;/span&gt;
&lt;span class="c1"&gt;# Libvirt default enp1s0&lt;/span&gt;
&lt;span class="c1"&gt;# Intel NUC default eno1&lt;/span&gt;
&lt;span class="na"&gt;interface&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ens192&lt;/span&gt;

&lt;span class="na"&gt;dns&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;174.168.1.1&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;174.168.7.7&lt;/span&gt;

&lt;span class="na"&gt;webserver_url&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;&amp;lt;current installer VM IP&amp;gt;&lt;/span&gt;
&lt;span class="na"&gt;webserver_port&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80&lt;/span&gt;
&lt;span class="c1"&gt;# Ignition subpath in http server (optional, defaults to nothing)&lt;/span&gt;
&lt;span class="c1"&gt;#webserver_ignition_path: http://192.168.66.12/master.ign&lt;/span&gt;
&lt;span class="c1"&gt;# Path to download master ignition file will be&lt;/span&gt;
&lt;span class="c1"&gt;# http://192.168.1.20:8080/ignition/master.ign&lt;/span&gt;

&lt;span class="c1"&gt;# Drive to install RHCOS&lt;/span&gt;
&lt;span class="c1"&gt;# Libvirt - can be vda&lt;/span&gt;
&lt;span class="na"&gt;install_drive&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;sda&lt;/span&gt;

&lt;span class="c1"&gt;# Timeout for selection menu during first boot&lt;/span&gt;
&lt;span class="c1"&gt;# '-1' for infinite timeout. Default '10'&lt;/span&gt;
&lt;span class="na"&gt;boot_timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10&lt;/span&gt;

&lt;span class="c1"&gt;# Choose the binary architecture&lt;/span&gt;
&lt;span class="c1"&gt;# x86_64 or ppc64le&lt;/span&gt;
&lt;span class="na"&gt;arch&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x86_64"&lt;/span&gt;

&lt;span class="na"&gt;ocp_version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;4.14.0&lt;/span&gt;
&lt;span class="na"&gt;iso_checksum&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;d15bd7ae942573eece34ba9c59e110e360f15608f36e9b83ab9f2372d235bef2&lt;/span&gt;
&lt;span class="na"&gt;iso_checksum_ppc64&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ff3ef20a0c4c29022f52ad932278b9040739dc48f4062411b5a3255af863c95e&lt;/span&gt;
&lt;span class="na"&gt;iso_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rhcos-{{ ocp_version }}-x86_64-live.x86_64.iso&lt;/span&gt;
&lt;span class="na"&gt;iso_name_ppc64&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rhcos-{{ ocp_version }}-ppc64le-installer.ppc64le.iso&lt;/span&gt;
&lt;span class="na"&gt;rhcos_bios&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;rhcos-{{ ocp_version }}-x86_64-metal.x86_64.raw.gz&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Step 2: Ansible Playbook Execution
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;Run Ansible playbook: Execute the Ansible playbook (playbook-single.yml) to automate the provisioning of OpenShift nodes.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;#Execute Ansible playbook&lt;/span&gt;
ansible-playbook playbook-single.yml &lt;span class="nt"&gt;-K&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Step 3: Uploading and Provisioning VMs
&lt;/h1&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Upload ISO for Bootstrap Node:&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Upload the custom ISO to the VM environment. Ensure disk.enableUUID attribute is set to true in advanced settings.&lt;br&gt;
Provision Bootstrap Node: Wait for the bootstrap node to complete installation until the login screen appears.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Continue with Master and Worker Nodes: Follow the same process to upload and provision first the master nodes and then the worker nodes.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h1&gt;
  
  
  Step 4: Monitoring and Verification
&lt;/h1&gt;

&lt;p&gt;Monitor Bootstrap Process:&lt;/p&gt;

&lt;p&gt;Check the progress of the bootstrap process using the OpenShift installer command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Monitor bootstrap process&lt;/span&gt;
./openshift-install &lt;span class="nt"&gt;--dir&lt;/span&gt; &amp;lt;installation_directory&amp;gt; wait-for bootstrap-complete &lt;span class="nt"&gt;--log-level&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify Node Status: Confirm that all nodes are ready by checking their status.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Verify node status&lt;/span&gt;
oc get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Logging in to the cluster by using the CLI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;You installed the oc CLI.&lt;/li&gt;
&lt;li&gt;Export the kubeadmin credentials:&lt;/li&gt;
&lt;li&gt;export KUBECONFIG=/auth/kubeconfig&lt;/li&gt;
&lt;li&gt;For , specify the path to the directory that you stored the installation files in.&lt;/li&gt;
&lt;li&gt;oc whoami&lt;/li&gt;
&lt;li&gt;sample output : system:admin&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F286qxipvdton0h8yv8wn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F286qxipvdton0h8yv8wn.png" alt="Image description" width="800" height="372"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;To approve all pending CSRs, run the following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oc get csr &lt;span class="nt"&gt;-o&lt;/span&gt; go-template&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}'&lt;/span&gt; | xargs oc adm certificate approve
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;After all client and server CSRs have been approved, the machines have the Ready status. Verify this by running the following command:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;oc get nodes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>kubernetes</category>
      <category>openshift</category>
      <category>devops</category>
      <category>vmware</category>
    </item>
  </channel>
</rss>
