The CentOS 6 template within the VMware Big Data Extensions was becoming bit long in the tooth and needed to be updated to CentOS 7 for a variety of reasons. As I began to look at using some of the newer features in Docker, it became apparent CentOS 6 was no longer going to be a useful template VM. I tried using the Debian 7 template included as a part of the VMware Fling for BDE released last year, however it had several problems with the Chef recipes. The effort required to get a CentOS 7 template built and working with BDE took a bit of trial-and-error, this post will simplify it for others to get them going in a more timely manner.
The documentation for building an alternate VM template for BDE are a bit outdated, specifically referring to building a CentOS 6 template when it was still using the CentOS 5 branch. I started with those directions and pieced them together with some of the work I had done previously getting Photon to support Apache Mesos. Let’s get started with a base CentOS 7 VM.
Start by downloading the CentOS 7 minimal ISO file from a local mirror. Once you have ISO go ahead and create a new VM in your vCenter environment. Make sure you provide a 40GB disk drive — I allocated a single vCPU and 1GB of memory to my template VM. Mount the ISO file and power on the VM. Once you’ve gone through the installation, reboot the VM and SSH into it.
The first thing I like to do is make sure the OS is up-to-date, followed by installing VMware Tools.
# yum -y update # yum -y install open-vm-tools # cat <<-EOF >> /etc/yum.repos.d/vmware-tools.repo > [vmware-tools] > name = VMware Tools > baseurl = http://packages.vmware.com/packages/rhel7/x86_64/ > enabled = 1 > gpgcheck = 1 > EOF # curl -o vmware-dsa.pub http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-DSA-KEY.pub # curl -o vmware-rsa.pub http://packages.vmware.com/tools/keys/VMWARE-PACKAGING-GPG-RSA-KEY.pub # rpm --import vmware-dsa.pub # rpm --import vmware-rsa.pub # yum -y install open-vm-tools-debloypkg # systemctl restart vmtoolsd # ECHO localhost.localdomain > /etc/hostname # shutdown -h now
The above steps will create a basic CentOS 7 VM that can be cloned to a template for use within your environment going forward. Once you are satisfied with the VM, the next step is to install the BDE specific bits for it to function properly.
Power on the VM and SSH back into it. The next things to do are to install the JDK and install several customization packages that are provided on the BDE management server. There are a few minor modifications that have to be made in order to get it working.
# systemctl disable firewalld # systemctl stop firewalld # mkdir os && cd os # curl --insecure -o custos.tar.gz https://BDE_MGMT_SERVER/custos/custos.tar.gz # tar zxf custos.tar.gz # vim installer.sh 48 #reduce grub boot waiting time 49 #sed -i 's|^timeout=.*$|timeout=0|' /boot/grub/grub.conf ... 143 #stop firewall 144 #service iptables stop 145 #chkconfig iptables off # ./installer.sh
When the installer completes, the terminal screen should look like the following:
One of the packages installed is chef-client. I prefer to run a quick check to make sure the binary is installed properly.
# which chef-client /usr/bin/chef-client # sed -i 's/enforcing/disabled/g' /etc/selinux/config /etc/selinux/config # shutdown -h now
Notice that I turned off selinux as it was interfering with the latest version of Docker when the service was trying to be started.
The template can now be placed in the vApp for BDE and Tomcat on the management server can be restarted to see the new template.
Simply building a new CentOS 7 template VM and throwing it into the vApp is not all that is required. The next steps took me through quite a bit of trial-and-error before I had a cluster deploying properly again. Many of the Chef recipes need to be modified to account for newer package version configuration changes and other configurations performed within the recipes. I had to step through each service role one-by-one and make sure they were all working properly.
Rather than go through each and every recipe included on the BDE Management server, I will merely say there were a myriad of changes and you can download my updated Chef recipes from the GitHub repo for Virtual Elephant.
I would strongly encourage you to take a backup of the entire BDE Management VM, snapshot the VM or create an off-site copy of the /opt/serengeti/chef/cookbooks directory before pulling my changes into your environment.
Once all of the recipes are updated, be sure to run the ‘knife cookbook upload -a’ command on the BDE Management server. Then the template will be fully ready to be utilized within your environment.
Getting a CentOS7 VM template was a necessity for me with some of the work I am doing in my lab environments. The next few posts on the site will be focused around these efforts and they would not have been possible if I had not done this work up-front. When my wife asked what I had been working on for the past few nights, I had to explain to her that I had gotten into a bit of a rabbit-hole and I’ve finally come back out…just to start on the work I wanted to begin several days ago.