<?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>Forem: Ashish-Chorge</title>
    <description>The latest articles on Forem by Ashish-Chorge (@ashishchorge).</description>
    <link>https://forem.com/ashishchorge</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%2F801774%2F64823bfc-3f5a-467e-8b50-a19a23c0531b.jpeg</url>
      <title>Forem: Ashish-Chorge</title>
      <link>https://forem.com/ashishchorge</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ashishchorge"/>
    <language>en</language>
    <item>
      <title>Step-by-step guide to configure SSH key-based authorization</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Thu, 23 Jan 2025 10:38:55 +0000</pubDate>
      <link>https://forem.com/ashishchorge/step-by-step-guide-to-configure-ssh-key-based-authorization-1glj</link>
      <guid>https://forem.com/ashishchorge/step-by-step-guide-to-configure-ssh-key-based-authorization-1glj</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Generate SSH Key Pair&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Log in to the node1 machine .&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open the terminal and run:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-keygen -t rsa -b 4096
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;-t rsa: Specifies the RSA algorithm.&lt;/p&gt;

&lt;p&gt;-b 4096: Key size (4096 bits).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;You will be prompted:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Enter file to save the key: Press Enter to save it in the default location (~/.ssh/id_rsa), or specify a custom location.&lt;/p&gt;

&lt;p&gt;Enter passphrase: (Optional) Add a passphrase for extra security, or press Enter for no passphrase.&lt;/p&gt;

&lt;p&gt;This will create two files:&lt;/p&gt;

&lt;p&gt;Private key: ~/.ssh/id_rsa (keep this secure and private).&lt;/p&gt;

&lt;p&gt;Public key: ~/.ssh/id_rsa.pub (used for authorization).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Copy Public Key to the Server&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use ssh-copy-id to copy the public key to the server:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh-copy-id username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace username with your server’s username.&lt;/p&gt;

&lt;p&gt;Replace server_ip with your server’s IP address.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;If ssh-copy-id is unavailable, manually copy the public key:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat ~/.ssh/id_rsa.pub
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Copy the output.&lt;/p&gt;

&lt;p&gt;On the server:&lt;/p&gt;

&lt;p&gt;Log in using a password:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Append the public key to the ~/.ssh/authorized_keys file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;echo "paste_public_key_here" &amp;gt;&amp;gt; ~/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ensure the file permissions are correct:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod 600 ~/.ssh/authorized_keys
chmod 700 ~/.ssh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Test SSH Key Authentication&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;From the client machine, test the connection:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If configured correctly, it will log in without asking for a password.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Disable Password Authentication (Optional but Recommended)&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Edit the SSH configuration file on the server:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo nano /etc/ssh/sshd_config
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Look for and set the following options:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PasswordAuthentication no
PubkeyAuthentication yes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Restart the SSH service:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;sudo systemctl restart sshd&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Secure Your Keys&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Ensure proper permissions for the private key:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;chmod 600 ~/.ssh/id_rsa
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Do not share the private key with anyone or store it insecurely.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Troubleshooting Tips:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If key-based login doesn’t work, check the permissions of the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;~/.ssh directory: chmod 700 ~/.ssh

~/.ssh/authorized_keys file: chmod 600 ~/.ssh/authorized_keys
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Verify the SSH service status on the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo systemctl status sshd
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enable verbose mode during login for more details:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ssh -v username@server_ip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>linux</category>
    </item>
    <item>
      <title>Step by step to create ESXi customize image</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Mon, 23 Sep 2024 03:34:07 +0000</pubDate>
      <link>https://forem.com/ashishchorge/step-by-step-to-create-esxi-customize-image-34an</link>
      <guid>https://forem.com/ashishchorge/step-by-step-to-create-esxi-customize-image-34an</guid>
      <description>&lt;p&gt;This document is prepared for Dell servers and Intel x550 NIC cards.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Install PowerCLI &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Download the driver zip and extract it &lt;br&gt;
a. Go to &lt;a href="https://www.vmware.com/resources/compatibility/search.php" rel="noopener noreferrer"&gt;https://www.vmware.com/resources/compatibility/search.php&lt;/a&gt;&lt;br&gt;
b. Select details as per below screenshot&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2Fovfvobua095og3kakuzh.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%2Fovfvobua095og3kakuzh.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;c. Click on vSphere version example 6.0 U3 from the list.&lt;/p&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%2Foicdq2r0t2t1vpk74f3b.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%2Foicdq2r0t2t1vpk74f3b.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Sample URL where all above options are already selected:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://www.vmware.com/resources/compatibility/detail.php?deviceCategory=io&amp;amp;productid=40779&amp;amp;releaseid=276&amp;amp;deviceCategory=io&amp;amp;details=1&amp;amp;partner=46&amp;amp;releases=276&amp;amp;keyword=x550&amp;amp;deviceTypes=6&amp;amp;page=1&amp;amp;display_interval=10&amp;amp;sortColumn=Partner&amp;amp;sortOrder=Asc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Download ESXi image file ESXi600-201706001.zip&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, in powercli add driver bundles using Add-EsxSoftwareDepot command&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; Add-EsxSoftwareDepot -DepotUrl .\VMW-ESX-6.0.0-ixgben-1.7.20-offline_bundle-14161312.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depot URL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;zip:E:\share\ESXi-6.0U3a-Customize-ISO\VMW-ESX-6.0.0-ixgben-1.7.20-offline_bundle-14161312.zip?index.xml

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Now, in powercli add ESXi bundle using Add-EsxSoftwareDepot command
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; Add-EsxSoftwareDepot -DepotUrl .\ESXi600-201706001.zip
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depot URL&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;zip:E:\share\ESXi-6.0U3a-Customize-ISO\ESXi600-201706001.zip?index.xml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Get a list of ImageProfiles so you can choose one to modify.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; $ip = Get-EsxImageProfile
PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; $ip

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-6.0.0-20170604001-stan... VMware, Inc.    5/18/2017 1:... PartnerSupported
ESXi-6.0.0-20170604001-no-t... VMware, Inc.    5/18/2017 1:... PartnerSupported
ESXi-6.0.0-20170601001s-sta... VMware, Inc.    5/18/2017 1:... PartnerSupported
ESXi-6.0.0-20170601001s-no-... VMware, Inc.    5/18/2017 1:... PartnerSupported

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

&lt;/div&gt;



&lt;p&gt;Note: Select the Index which is without s and which starts with -stand. As per highlighted text. Index number 0 may change in your case.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; $ip[0]

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
ESXi-6.0.0-20170604001-stan... VMware, Inc.    5/18/2017 1:... PartnerSupported
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Create a new image profile by cloning an existing one.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; New-EsxImageProfile -CloneProfile $ip[0] -Name AshishProfile -Vendor VMW

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
AshishProfile                  VMW             5/18/2017 1:... PartnerSupported
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Now add the ixgben driver VIB to this image profile.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; Add-EsxSoftwarePackage -ImageProfile AshishProfile -SoftwarePackage ixgben

Name                           Vendor          Last Modified   Acceptance Level
----                           ------          -------------   ----------------
AshishProfile                  VMW             12/23/2019 1... PartnerSupported

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

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Finally, export the new image profile to ISO or Offline bundle zip.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; Export-EsxImageProfile -ImageProfile AshishProfile -FilePath ESXi-6.0U3a-CustomizeISO.iso -ExportToIso

PS E:\share\ESXi-6.0U3a-Customize-ISO&amp;gt; Export-EsxImageProfile -ImageProfile AshishProfile -FilePath mynewprofile.zip -ExportToBundle

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

&lt;/div&gt;



&lt;p&gt;Tip: The zip file you created with -ExportToBundle option, can be re-used as the input depot with the Add-EsxSoftwareDepot command.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Finally you will have below 4 files in your folder. &lt;/li&gt;
&lt;/ol&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%2F73u5kgt86tomvioh7qee.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%2F73u5kgt86tomvioh7qee.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>cloud</category>
      <category>testing</category>
      <category>performance</category>
    </item>
    <item>
      <title>Create nested ESXi (Virtual ESXi) on Physical ESXi server</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Tue, 11 Apr 2023 16:57:47 +0000</pubDate>
      <link>https://forem.com/ashishchorge/create-nested-esxi-virtual-esxi-on-physical-esxi-server-9mf</link>
      <guid>https://forem.com/ashishchorge/create-nested-esxi-virtual-esxi-on-physical-esxi-server-9mf</guid>
      <description>&lt;p&gt;This article is to prepare nested ESXi (virtual ESXi) on physical ESXi server. This is useful for doing small POC or creating 2 node vSAN cluster witness node. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 1. Create trunk portgroup as vesxi-trunk-portgroup in ESXi where you want to deploy vESXi&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%2Fx105msnnbehj7dmc9wev.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%2Fx105msnnbehj7dmc9wev.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Step 2. Create a new VM&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CPU = 4 &lt;/li&gt;
&lt;li&gt;Memory = 8 GB&lt;/li&gt;
&lt;li&gt;Disk = 12 GB to install ESXi + 4 GB Cache disk + 8 GB Capacity disk&lt;/li&gt;
&lt;li&gt;Edit VM settings for CPU to enabled Hardware Virtualization&lt;/li&gt;
&lt;/ul&gt;


&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%2Fb4bvisoq6445rrac70le.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%2Fb4bvisoq6445rrac70le.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Step 3. Power on and install ESXi similar to physical ESXi server. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 4. Configure ESXi for network and hostname&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Make sure to give your ESXi vLAN. This is similar to your other physical hosts configuration. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Step 5. after installation of ESXi add beow 2 paramters in advance &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; scsi0:1.virtualSSD = true&lt;/li&gt;
&lt;li&gt; scsi0:2.virtualSSD = true&lt;/li&gt;
&lt;/ul&gt;


&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%2Frojc39ox5fattkdsfj7c.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%2Frojc39ox5fattkdsfj7c.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Step 6. Reboot the nested ESXi VM. &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>architecture</category>
    </item>
    <item>
      <title>How to configure ESXi 7.x/8.x dump collector on vCenter Server 7.x/8.x</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Mon, 03 Apr 2023 13:15:56 +0000</pubDate>
      <link>https://forem.com/ashishchorge/how-to-configure-remote-esxi-7x8x-dump-collector-on-vcenter-server-7x8x-3in5</link>
      <guid>https://forem.com/ashishchorge/how-to-configure-remote-esxi-7x8x-dump-collector-on-vcenter-server-7x8x-3in5</guid>
      <description>&lt;p&gt;Prerequisite:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make sure that vCenter Server has enough space in /storage/core/ partition using df -h command.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Procedure to configure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;1] First thing first login to your vCenter Server appliance using web client (VAMI) and start the dump collector service. By default, this service, which starts manually, is in stopped state.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;2] Check current state of coredump. By default it is disabled.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   esxcli system coredump network check
   Network coredump not enabled
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;3] Confirm vmk0 is configured with the IP which is reachable to vCenter server.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esxcli network ip interface ipv4 get --interface-name=vmk0
Name  IPv4 Address  IPv4 Netmask   IPv4 Broadcast  Address Type  Gateway        DHCP DNS
----  ------------  -------------  --------------  ------------  -------------  --------
vmk0  192.168.1.20  255.255.255.0  192.168.1.255   STATIC        192.168.1.250     false
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;4] Set up an ESXi system to use ESXi Dump Collector by running esxcli system coredump in the local ESXi Shell or by using ESXCLI.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esxcli system coredump network set --interface-name vmk0 --server-ip 10.10.11.7 --server-port 6500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;10.10.11.7 is your vCenter Server IP&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;5] Enable ESXi Dump Collector
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esxcli system coredump network set --enable true
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;6] Check the details are set properly or not
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esxcli system coredump network get
 Enabled: true
 Host VNic: vmk0
 Is Using IPv6: false
 Network Server IP: 10.10.11.7
 Network Server Port: 6500
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;7] Refresh the firewall rules so the changes take effect by running the command
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esxcli network firewall refresh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;8] Check the connectivity
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;nc -z -w 1 -s 192.168.1.20 -u 10.10.11.7 6500
  Connection to 10.10.11.7 6500 port [udp/*] succeeded!
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;9] Check current state of coredump. Now it should be in running state.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;esxcli system coredump network check
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;10] Check the logs
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;root@set11-res-vc [ /var/log/vmware/netdumper ]# tail netdumper.log
2023-04-03T08:41:53.192Z In(05) netdumper Configured to handle 1024 clients in parallel.
2023-04-03T08:41:53.192Z In(05) netdumper Configuring /var/core/netdumps as the directory to store the cores
2023-04-03T08:41:53.192Z In(05) netdumper Configured to use wildcard [::0/0.0.0.0]:6500 as IP address:port
2023-04-03T08:41:53.192Z In(05) netdumper Using /var/log/vmware/netdumper/netdumper.log as the logfile.
2023-04-03T08:41:53.192Z In(05) netdumper Nothing to post process
2023-04-03T08:41:53.192Z In(05) netdumper Configured size limits: 5 GB per file, 10 GB per host, 20 GB for all
2023-04-03T08:41:53.192Z In(05) netdumper Running netdumper version 1.2
2023-04-03T08:41:53.192Z In(05) netdumper Netdumper Service is running in FIPS mode.
2023-04-03T08:45:15.028Z In(05) netdumper Posting back a status check reply to ::ffff:192.168.1.20
2023-04-03T09:04:26.763Z In(05) netdumper Posting back a status check reply to ::ffff:192.168.1.20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Reference documents:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-85D78165-E590-42CF-80AC-E78CBA307232.html" rel="noopener noreferrer"&gt;https://docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.esxi.install.doc/GUID-85D78165-E590-42CF-80AC-E78CBA307232.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Create Harbor Server on Ubuntu VM</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Tue, 01 Nov 2022 12:39:32 +0000</pubDate>
      <link>https://forem.com/ashishchorge/create-harbor-server-on-ubuntu-vm-2f30</link>
      <guid>https://forem.com/ashishchorge/create-harbor-server-on-ubuntu-vm-2f30</guid>
      <description>&lt;p&gt;Copy this script on your Ubuntu VM and update first user inputs section for IP, hostname and FQDN. I tested this script on Ubuntu 22.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# This script will install Harbor server 
# 

#  User Inputs
&amp;gt; #==================================================
&amp;gt; export my_hostname=&amp;lt;Harbor server short host name&amp;gt;
export my_fqdn=&amp;lt;Harbor server FQDN&amp;gt;
export my_ip=&amp;lt;IP Address of the Harbor server&amp;gt;
#==================================================

echo "Make sure your VM is configured with proper hostname, static IP address and its entry is mentioned in your DNS server"
read -n 1 -r -s -p $'Press enter to continue... else Control + c to stop \n'

die() {
    local message=$1

    echo "$message" &amp;gt;&amp;amp;2
    exit 1
}

# precheck
echo "Doing precheck "
ping $my_hostname -c 2 || die 'command failed'
ping $my_ip -c 2 || die 'command failed'
nslookup $my_fqdn || die 'command failed'
nslookup $my_fqdn | grep $my_ip || die 'command failed'

echo "==== Doing precheck ====" || die 'command failed'
ping $my_hostname -c 2 || die 'command failed'
nslookup $my_fqdn || die 'command failed'
nslookup $my_fqdn | grep $my_ip || die 'command failed'

echo "1. Enable ssh on the vm" || die 'command failed'
apt-get update || die 'command failed'
apt install openssh-server || die 'command failed'

echo "2. Verify ssh service is up and running" || die 'command failed'
systemctl status ssh || die 'command failed'

echo "3. Update the apt package index" || die 'command failed'
apt-get update || die 'command failed'

echo "4. Install packages to allow apt to use a repository over HTTPS" || die 'command failed'
apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y || die 'command failed'

echo "5. Add Docker's official GPG key" || die 'command failed'
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - || die 'command failed'
sudo apt-key fingerprint 0EBFCD88 || die 'command failed'

echo "6. Setup a stable repository" || die 'command failed'
echo -ne '\n' | add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" || die 'command failed'

echo "7. Install docker-ce" || die 'command failed'
apt-get update || die 'command failed'
apt-get install docker-ce docker-ce-cli containerd.io -y || die 'command failed'

echo "8. Install current stable release of Docker Compose" || die 'command failed'
curl -L "https://github.com/docker/compose/releases/download/1.25.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose || die 'command failed'

echo "9. Apply executable permissions to the binary" || die 'command failed'
chmod +x /usr/local/bin/docker-compose || die 'command failed'

echo "10. Verify installation" || die 'command failed'
docker-compose --version || die 'command failed'

echo "11. Download the Harbor installer" || die 'command failed'
curl -L https://github.com/goharbor/harbor/releases/download/v2.4.3/harbor-offline-installer-v2.4.3.tgz -o /root/harbor-offline-installer-v2.4.3.tgz || die 'command failed'

echo "12. Extract the Harbor installer" || die 'command failed'
tar -xvzf /root/harbor-offline-installer-v2.4.3.tgz || die 'command failed'

echo "13. Generate a CA certificate private key" || die 'command failed'
openssl genrsa -out ca.key 4096 || die 'command failed'

echo "14. Generate the CA certificate" || die 'command failed'
openssl req -x509 -new -nodes -sha512 -days 3650 -subj "/C=US/ST=CA/L=Palo Alto/O=HomeLab/OU=Solution Engineering/CN=$my_fqdn" -key ca.key -out ca.crt || die 'command failed'

echo "15. Generate a private key" || die 'command failed'
openssl genrsa -out $my_fqdn.key 4096 || die 'command failed'

echo "16. Generate a certificate signing request" || die 'command failed'
openssl req -sha512 -new -subj "/C=US/ST=CA/L=Palo Alto/O=HomeLab/OU=Solution Engineering/CN=$my_fqdn" -key $my_fqdn.key -out $my_fqdn.csr || die 'command failed'

echo "17. Generate an x509 v3 extension file" || die 'command failed'
cat &amp;gt; v3.ext &amp;lt;&amp;lt;-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names

[alt_names]
DNS.1=$my_fqdn
DNS.2=$my_hostname
IP.1=$my_ip
EOF

echo "18. Use the v3.ext file to generate a certificate for the Harbor host" || die 'command failed'
openssl x509 -req -sha512 -days 3650 -extfile v3.ext -CA ca.crt -CAkey ca.key -CAcreateserial -in $my_fqdn.csr -out $my_fqdn.crt || die 'command failed'

echo "19. Provide the certificates to harbor and docker" || die 'command failed'
sudo mkdir -p /data/cert || die 'command failed'
sudo mkdir -p /etc/docker/certs.d/$my_fqdn/ || die 'command failed'
sudo cp ~/$my_fqdn.crt /data/cert/$my_fqdn.crt || die 'command failed'
sudo cp ~/$my_fqdn.crt /etc/docker/certs.d/$my_fqdn/$my_fqdn.crt || die 'command failed'
sudo cp ~/ca.crt /etc/docker/certs.d/$my_fqdn/ca.crt || die 'command failed'
sudo openssl x509 -inform PEM -in ~/$my_fqdn.crt -out /etc/docker/certs.d/$my_fqdn/$my_fqdn.cert || die 'command failed'
sudo cp ~/$my_fqdn.key /data/cert/$my_fqdn.key || die 'command failed'
sudo cp ~/$my_fqdn.key /etc/docker/certs.d/$my_fqdn/$my_fqdn.key || die 'command failed'

sudo systemctl restart docker || die 'command failed'

echo "20. Copy and update certificate on Harbor VM" || die 'command failed'
cp $my_fqdn.crt /usr/local/share/ca-certificates/update-ca-certificates || die 'command failed'

echo "21. Configure the Harbor YML file manually" || die 'command failed'
cp /root/harbor/harbor.yml.tmpl /root/harbor/harbor.yml || die 'command failed'

##### update the yml file manually
#echo "Update the yml file manually /root/harbor/harbor.yml and execute below command" || die 'command failed'
#echo "/root/harbor/install.sh --with-notary --with-chartmuseum || die 'command failed'"

cp /root/harbor/harbor.yml.tmpl /root/harbor/harbor.yml || die 'command failed'
cat /root/harbor/harbor.yml | sed -e "s/hostname: reg.mydomain.com/hostname: $my_fqdn/" &amp;gt; /tmp/1 || die 'command failed'
cat /tmp/1 | sed -e "s/certificate: \/your\/certificate\/path/certificate: \/root\/$my_fqdn.crt/" &amp;gt; /tmp/2 || die 'command failed'
cat /tmp/2 | sed -e "s/private_key: \/your\/private\/key\/path/private_key : \/root\/$my_fqdn.key/" &amp;gt; /tmp/3 || die 'command failed'
cp /tmp/3 /root/harbor/harbor.yml || die 'command failed'

echo "22. Install with Notary, Clair and Chart Repository Service" || die 'command failed'
/root/harbor/install.sh --with-notary --with-chartmuseum || die 'command failed'

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

&lt;/div&gt;



</description>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Create a YUM server for RHEL 7.5 using its ISO file</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Tue, 15 Feb 2022 13:36:05 +0000</pubDate>
      <link>https://forem.com/ashishchorge/create-a-yum-server-for-rhel-75-using-its-iso-file-38hm</link>
      <guid>https://forem.com/ashishchorge/create-a-yum-server-for-rhel-75-using-its-iso-file-38hm</guid>
      <description>&lt;h2&gt;
  
  
  This document is to create a YUM server using RHEL installer ISO file.
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Install a RHEL VM with 2 GB RAM, 1 vCPU and 80 GB HDD.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a repository folder inside VM&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;mkdir -p /rhel75/repo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Mount the ISO using mount command and copy the Packages folder into your repository folder
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cp /run/media/vcloud/RHEL-7.5\ Server.x86_64/Packages/* /rhel75/repo/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install createrepo package if it is not installed during OS installation
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cd /rhel75/repo
rpm -ivh createrepo-0.9.9-28.el7.noarch.rpm
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create repository
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;createrepo /rhcelab/repo/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Clean YUM cache
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yum clean all
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Update the rhcelab.repo file to point to your local repository folder
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;vi /etc/yum.repos.d/rhcelab.repo
[rhcerepo]
name=rhcerepo
baseurl=file:///rhel75/repo/
enabled=1
gpgcheck=0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;List the repolist
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yum repolist
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;For testing, try to install any package
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yum install redhat-lsb
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>Create Kubernetes Setup on Ubuntu 20.04.3 VMs</title>
      <dc:creator>Ashish-Chorge</dc:creator>
      <pubDate>Thu, 03 Feb 2022 14:38:32 +0000</pubDate>
      <link>https://forem.com/ashishchorge/create-kubernetes-setup-on-ubuntu-20043-vms-4j2g</link>
      <guid>https://forem.com/ashishchorge/create-kubernetes-setup-on-ubuntu-20043-vms-4j2g</guid>
      <description>&lt;ul&gt;
&lt;li&gt;Make sure you have enough resources in your local laptop/desktop to deploy VMs.
One VM requires at least 2 GB RAM, 2 vCPU, 50 GB HDD &lt;/li&gt;
&lt;li&gt;Create 2 VMs and install Ubuntu 20.04.3 on it.
Note: Don't create swap partition during installation. &lt;/li&gt;
&lt;li&gt;Make sure the VMs are having internet access by using NAT network adapter. NAT will share host's IP address. &lt;/li&gt;
&lt;li&gt;Login as root
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo su -
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Assign static IP to both Primary and Secondary nodes. (Master = Primary and Worker = Secondary)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat /etc/netplan/01-network-manager-all.yaml

# Let NetworkManager manage all devices on this system
network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: no
      addresses:
       - 172.23.32.10/20 # IP address which you want to assign
      gateway4: 172.23.32.1
      nameservers:
        addresses: [127.0.0.53,8.8.8.8]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Apply the above configuration
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;netplan apply

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Update packages
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get update &amp;amp;&amp;amp; sudo apt-get upgrade -y
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install Curl and apt-transport-https packages
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get update &amp;amp;&amp;amp; sudo apt-get install -y curl apt-transport-https 

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add key to verify release
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add Kubernetes repository
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Update packages for Kubernetes repository
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get update
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install kubelet, kubeadm and kubectl as per your required version
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get install -y kubelet=1.xx.y-00 kubeadm=1.xx.y-00 kubectl=1.xx.y-00

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install Docker
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-get install docker.io
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;apt-mark hold will will not update or remove below packages
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apt-mark hold kubelet kubeadm kubectl
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Note down the VM Primary address. (Below command is only for Primary node)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;export PRIMARY_IP=&amp;lt;VM management IP address&amp;gt; 
kubeadm init --apiserver-advertise-address=${PRIMARY_IP} --pod-network-cidr=10.100.0.0/16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Create bootstrap token on the Primary server. This command is use to join seconadary node to Primary node in a cluster. (Below command is only for Secondary nodes)
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubeadm token create --print-join-command

Example: kubeadm join &amp;lt;Primary management IP&amp;gt;:6443 --token dad5o8.w3rj4bvgvdq6c7xh \
        --discovery-token-ca-cert-hash sha256:63945cc1edb6d637b536a7acb74b0b8185f587cfe16d41a36edae8fe29b2453e
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Install CNI
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

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

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Remove tent from Primary node to deploy pods
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;kubectl taint nodes &amp;lt;primary node hostname&amp;gt; node-role.kubernetes.io/master- 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
