Finishing a Computer Engineering degree with DevOps stuff

Reading Time: 4 minutes

It’s been more than one month since I published something here but I’ve been changing quite a lot my focus learning and I changed now from CCNA to DevOps things.

TL;DR  I will be building an automated CI/CD pipeline for my final assignment focusing on tools installed and configured on-premise although there will be cloud services like the front-end.

Also, I forgot to mention that last month I started the last semester of my Computer Engineering degree that I started back in 2014 (oh my!), and I expect to finish it (if I pass the last “subject”) next January 2021!.

And now let’s move to the point.

In this last semester, I have to deliver the “final assignment” which consists of a project of my own that will be documented and then defended (virtually as per the current circumstances) against university judges.

In my case, I finally decided to get into the DevOps world and my assignment is Building a production CI/CD pipeline.

Some sort of introduction…

I suppose you’re currently aware of the trending topic regarding Containers and Container Orchestrators, in particular (you know them), Docker and Kubernetes.

Those two are the most used technologies in the DevOps world because they work great in conjunction although there are alternatives that could work as good as them.

So regarding DevOps, you probably know is a culture and it follows a set of practices where the software development world and the IT operations are combined in order to speed up and improve the process of application delivery (a.k.a. SDLC).

Continuing with DevOps, there is a pipeline or process which combines the practices of CI (Continuos Integrity) and CD (Continuous Delivery) and that’s the process that I am going to describe and build for my final assignment.

But…why this topic?

Good question… I know almost nothing about that world which is a good approach for many enterprises but not for all of them.

And, the same thing with containers, all the applications shouldn’t be always in containers but if you can re-code your app to split it into micro-services to make it better would you do it (That probably means spending large amounts of money)?

Anyway, why I am choosing this topic?

I think it’s a great opportunity to finally take a look into this area where developers need to push updates to production apps in the faster way possible. We saw that even VMware focused on Kubernetes in their product catalog so maybe you should take a look as well…

But not because VMware did it nevertheless, we are moving to a faster and automated world where everything is becoming more and more automatized. 

Just deploying containers and building micro-services will make you the coolest guy in the world but in my opinion, knowing the use cases and some tools to provision and automate lots of items will make you smarter.

I believe that this will help me to gain knowledge in those areas and advance in my career, therefore, I will be sharing all the useful information I researched during the entire project.

How?

It is known that there many ways to build a CI/CD pipeline and many tools that you can use for each phase but in this project, I will try to start with the “foundation” of the main tools used (Container runtime, Container Orchestrator, Configuration and provision management, etc.).

All of them would be hosted in on-premise infrastructure, instead of going to the cloud where there are a lot of tools that integrates many things and will help you to avoid problems and headaches.

So basically, I am aiming to build everything on-premise except the service itself (which will be a web application) that would be hosted in the cloud, in order to achieve a better service in terms of availability, resiliency, etc.

Therefore, a mix of on-premise and cloud CI/CD pipeline is the objective with the main focus on the process and not the code of the application.

That doesn’t mean that the process where the developer has to push code to a repository (CI) will be neglected, in fact, probably some tools for the developer will be cloud-based due to the simplicity that adds but can’t ensure that this will be my final approach

 

Summary

In short, I am aiming to gain knowledge about this new area where developers and operations meet, and “everything” is automated (or at least a great part of it).

Although there are many tools to build a CI/CD pipeline, learning which tools to use on each phase, how and why are chosen will be key in order to understand clearly the whole process from a technical perspective.

I forgot to mention that, there are other things like IaC (Infrastructure as Code) and Control Version which are handy everywhere but especially in this environment as with code you can have different versions and avoid more errors than provisioning resources manually.

 

 

Increasing the heap memory on vCSA 6.7 services

Reading Time: 2 minutes

For some reason, our monitoring alerted that the service “vsphere-ui” from the vCSA it was having some problems randomly. From the user perspective only we noticed some slowness when navigating within the HTML5 client.

I took a quick view of the VAMI I saw this message from the VMware vSphere Client service:

The server is running low on heap memory (>90% utilized.)

So it was time to solve those random alerts about memory utilization.

Let’s work a bit…

Accessing the vCSA via SSH (using PuTTY):

I can see the service has 1110 MB assigned. So as the deployed VM for the vCenter Server appliance has 16GB of RAM allocated(you can see it anyway how much is being assigned in the previous screenshot), I decided to give it ~1.5x (1665MB) but in powers of 2!:
512+1024 = 1536 MB .

Executed:

cloudvm-ram-size -C 1536 vsphere-ui 

 

Now, restart the affected service:

service-control --stop vsphere-ui;service-control --start vsphere-ui; 

And now check the allocated memory for the service we configured:

It seems that the vCSA itself adjusted the value to what it considers it’s best so nothing that we can modify there. So finally this service memory allocation changed from 1110 MB to 1792 MB.

 

Final note: Obviously other services were modified and have allocated less memory, in general, it gathered a bit of memory allocation from each service (the most impacted was vmware-vpxd with ~ 300 MB)

 

All this information can be also reviewed in this KB: https://kb.vmware.com/s/article/2150757

That’s all for this quick post!

 

WSFC – Validate Configuration wizard error

Reading Time: 2 minutes

This is a short post talking about Windows Server Failover Clustering (WSFC) and a problem I found when adding the nodes from your cluster using the “Validate a Configuration” wizard.

This wizard is recommended to run after configuring your nodes and before creating the cluster in order to spot any misconfigurations.

So now, let’s go into the problem.

 

The issue

In the wizard when trying to add (in my example) the second node shows an error:

Failed to access remote registry on <FQDNoftheserver>. Ensure the remote registry service is running, and have remote administration enabled.

 

Possible solutions

  • Execute in Powershell (PS): winrm quickconfig

This will set up “winrm” (Windows Remote Management), more information in this link.

  • Review the NIC settings on the affected node:

Check the options “File and Print Sharing for Microsoft Networks” and “Client for Microsoft Networks” for the NIC that you’re are trying to add the node (based on what’s registered in DNS):

  •  Review the service “remote registry” is set to “automatic (trigger start)”.

 

After that, you shouldn’t have problems in order to add your nodes within the cluster from the wizard:

Now, you could continue with the testing options and so on but this post is only to explain the error and how to solve it.

 

That will conclude this quick post about Windows Server Failover Cluster and an issue you can find while trying to validate the configuration of your cluster from the wizard.

 

 

 

Upgrade vROps from 6.7.0 to 8.0.1

Reading Time: 5 minutes

 

In this blog post, we will see how to upgrade vRealize Operations (vROps) from version 6.7.0 to 8.0.1. The whole process takes about 30 minutes.

Bear in mind that, you will need new license keys after updating to the later version (after 8.0 version).

 

Note: You will see a version mismatch in some screenshots.

Download the required files

And also, proceed to download the Virtual appliance upgrade PAK file, that will be used later for the real upgrade:


Upgrade Assessment Tool
(optional but recommended)

The first thing to do is to install the Upgrade Assessment Tool in order to know if there are any problems before upgrading.

Although this is not mandatory it is highly recommended in order to know if there are any issues before running the real upgrade process.

The steps are:

  • Log in to the master node vRealize Operations Manager Administrator interface of your cluster at https://master-node-FQDN-or-IP-address/admin.
  • Click Software Update in the left panel (you can see an attempt I made previously) and then “Install a Software Update…”:
  • Follow the steps in the wizard to locate and install your PAK file. Upload the PAK file (the first file we downloaded) and check the first checkbox if you’re not sure if there is another one installed.
  • The PAK file will be uploaded from your local machine to vRealize Operations Manager. Uploading may take a few minutes. Once it is uploaded you will see something like this.
  • Once the uploaded PAK file, accept the EULA (step 2) if you agree, read the Update information (step 3) and finally click “Install”. You will see that the software update is being installed

Don’t worry this is just installing the Pre-Upgrade to 8.0.0 Assessment Tool, the real upgrade will be performed later

     

  • When the process is complete, click Support in the left pane. The Support screen appears. Select the Support Bundles option above the toolbar. The available support bundles are listed:
  • To review the report, extract the files from the ZIP file and open the HTML file.
    The file is located in \slice_<bundlenumber>_<nodeaddress>\apuat-data\report\index.html.
    This is my report, which it only gives me a warning about executing the proper Virtual appliance upgrade (we will see later)
  • After updating my Admin account I re-run the same process and checked that there were no errors.

So now, let’s go to the point and update the vROps master node!

 

Upgrade process

Before doing anything, remember to take a snapshot of the Master node that is going to be upgraded!

 

First, upload the .pak file we downloaded at the beginning of the Virtual Appliance upgrade PAK file (which is way larger than the Upgrade Assessment Tool  PAK file).

Once downloaded, go to the vROps admin interface (https://master-node-FQDN-or-IP-address/admin) and then “Software Updates” :

 

And then, upload the new file (which in this case is quite larger compared to the pre-upgrade assessment tool):

Once is staged (after you clicked upload), it will give you a warning regarding the cluster that will be restarted (obviously), just click NEXT:

Accept the EULA if you agree and read the Update information (which tells you that you must take a snapshot of the cluster you’re upgrading):

And proceed to install the update in step 4 by clicking INSTALL!

You will see on the same page that the upgrade is in progress:

It will take some time, and even you see that vROps is available, the cluster will still offline until the upgrade is finished. We just need to wait a bit more.

The whole upgrade took about 30 mins and it was upgraded successfully:


Finally, the cluster is online and the new version was applied correctly.

Remember to delete the snapshot that was created before proceeding with this upgrade. I hope this has been helpful to you.

 

vCenter Server 7.0 – Fresh install

Reading Time: 5 minutes

Prologue

With the release of vSphere 7 at the beginning of this month, I decided to make a post about how to install vCenter Server Appliance (vCSA) which is quite simple.

Which are the new features? Check this post from my friend Graham Barker to find out!

 

Let’s move on!

  • Proceed to download the “VMware vCenter Server 7.0.0” ISO file from my.vmware.com
  • Mount the ISO file and execute the installer.exe file :

Prerequisite: We need DNS if we want to deploy vCenter with an FQDN but if you don’t have it or you can’t for any reason, you can trick the installer and put the IP address as the hostname and it will work.

Another prerequisite will be to have an ESXi host where we’re going to install our vCenter

Stage 1 – New deployment

1. We will proceed to select install as we are going to perform a fresh install from the scratch of vCenter Server 7.0.

2. I like that it tells you that External PSC is deprecated! Continue with NEXT.

3. Just put the details of a vCenter (if you have one) or an ESXi host where you want to deploy this new vCenter. In my case (and probably the most if you’re doing everything from the scratch) I am using a host called “johto.pokemon.jp” to deploy the vCSA.

Once you press next, accept the certificate warning if you know the fingerprint of the certificate.

4. Put the name of the VM and set the root password for the vCSA and continue.

5. I am going for the Tiny deployment as it is more than enough for my lab environment. In a production environment usually, you will deploy a small one that fits in many small companies (or in your lab if you’re testing it).

6. Continue by selecting a Datastore and check ” Enable Thin Disk Mode” which is usually the best deployment as it doesn’t allocate all the space and is also enabled by default. (Look even my VMFS-5 datastores work well).

7. Now, let’s configure the network settings. Here my Network you can see a portgroup “Std_mgmt” from my ESXi host. If you have an ESXi host with default portgroups, yours probably is called “VM Network“.

About the FQDN, as I said before (check the Prerequisite section in the beginning) you need to create an A record in your DNS in order to be able to deploy a vCenter with a name.

If you don’t have DNS because you’re installing vCenter and you don’t have it, you can use the IP address as FQDN and it will work.

8. And that’s all for stage 1, here we have a summary saying what is going to do. Be sure to review it: Once you’re ready, press FINISH.

 

It will start with Stage 1, which is the deployment of the VM where the vCenter Server resides:

After some minutes, STAGE 1 is completed, which means that the VM where the vCSA resides is deployed but not configured yet.

Stage 2 – Configuration

Let’s go to STAGE 2 where the vCSA will be configured.

1. Set an NTP server or let the ESXi host also enable SSH if you want to have access to the vCSA.

2. Configure the SSO, the default is the “vsphere.local” domain, in my case I created a custom one.

3. And the last summary after we finish Stage 2 when the vCenter will be fully configured.

4. After a while (15-20 min.), Stage 2 finished without errors!

5. Now I access the GUI from the URL provided in the previous screenshot and I see that is working flawlessly!

6. Enjoy your new vCenter Server with the only HTML5 interface and lots of new features that were mentioned at the beginning of this post.

 

We conclude this article where you can see how simple and easy is to install and deploy vCenter Server version 7.0.