ciscoucs.github.io

To simplify bare metal UCS configurations KUBaM provides a container image that can be run to create a web server to create resources required for bare metal installations. These resources include media source as well as automated boot files.

The advantage of UCS is that a PXE server is not required to do automated Kickstart Installations. Thus we can achieve rapid provisioning with less complication using the advanced API that UCS provides for us.

The container image simply automates the manual steps shown in the manual settings instructions.

1. Provision an Installation Server

An installation server can be created with a VM or another bare metal server. The installation server has the following requirements:

1.1. Install Docker and Wget

For CentOS this can be done as follows:

yum -y install docker wget
systemctl enable docker
systemctl start docker

1.1.1 Proxy (Do this only if the Install Server requires a proxy)

If you are behind a proxy, then you will need to make some changes:

https_proxy=proxy.esl.cisco.com:80 yum -y install docker
mkdir -p /etc/systemd/system/docker.service.d
touch /etc/systemd/system/docker.service.d/https-proxy.conf

Edit the https-proxy.conf so it can reach proxy. It should look something like the following:

[Service]
Environment="HTTPS_PROXY=http://proxy.esl.cisco.com:80" "HTTP_PROXY=http://proxy.esl.cisco.com:80" "NO_PROXY=172.28.225.186"

Once this is complete:

systemctl daemon-reload
systemctl enable docker
systemctl restart docker

2. Obtain Installation Media

For Kubam we want a directory that will contain our installation media and that will be used by the docker container as a permament volume. This diretory can be anywhere. We will assume it is in ~/kubam.

mkdir -p ~/kubam
cd ~/kubam

Now download the latest Minimal CentOS 7 image. This can be done by running something like:

wget http://mirrors.ocf.berkeley.edu/centos/7/isos/x86_64/CentOS-7-x86_64-Minimal-1611.iso

For other mirros, check this page.

You should now have a directory with a 680MB file named something like CentOS-7-x86_64-Minimal-1611.iso

3. Create Configuration File

KUBaM stage 1 uses a simple configuration file to automatically tell it how to load. This file can be copied from the Github Source

Edit this file and place it in the ~/kubam directory. It should be called stage1.yaml.

E.g:

cd ~/kubam
wget https://raw.githubusercontent.com/CiscoUcs/KUBaM/master/stage1/stage1.yaml

(Use proxy if necessary)

3.1 Editing Tips

4. Run KUBaM Stage1 container

If everything is set right, you should now have a directory with two files:

From here you can now run:

cd ~/kubam
docker run -p 80:80 -d -v `pwd`:/kubam \
	--device /dev/fuse \
	--cap-add SYS_ADMIN \
	--name kube-stage1 \
	kubam/stage1-server

This could take several minutes to download the docker image and setup.

5. Verification and Troubleshooting

If all is well, you should now be able to navigate to http:///kubam

This page will show a diretory listing of the iso file as well as *.img files for each of the nodes.
You are now ready to go on to the next stage

5.1 Troubleshooting

If you are unable to reach the web server, check that the container is running:

docker ps

If the container is not running there may have been an issue starting it. You can then examine the log files.

To get this run:

docker ps -a

You should see the poor dead container there. To examine the logs, do:

docker logs kube-stage1

If you see a bunch of permission denied errors it may be that SELinux is enforcing. Delete the container:

docker rm kube-stage1
setenforce 0

Then rerun the container command described above in section 4.