Using Cobbler to Rapidly Deploy ESXi With Zero Touch Configuration

This article came about when a collegue of mine, Joe Ploehn @jploehn , created this guide for a customer of his. This guide was developed with the thought process of installing cobbler on his laptop and then being able to deploy items from there. The process will work very similarly within vsphere as well if you want to have cobbler as a good deployment platform. I have attached the PDF Using Cobbler to Rapidly Deploy ESXi, it has excellent screenshots that help visually, trying to include them here would have made the post way too long, and i’m already breaking the scroll rule too much as it is.

This will guide the reader through the process of standing up a Cobbler PXE deployment server and configuring Cobbler to rapidly deploy ESXi without having to touch the target server. Hundreds of ESXi servers can be deployed in minutes using this technique.

Introduction

From Cobbler’s website:

Cobbler (http://www.cobblerd.org) is a Linux installation server that allows for rapid setup of network installation environments. It glues together and automates many associated Linux tasks so you do not have to hop between many various commands and applications when deploying new systems, and, in some cases, changing existing ones. Cobbler can help with provisioning, managing DNS and DHCP, package updates, power management, configuration management orchestration, and much more.

In order to use Cobber to deploy ESXi, or any Linux distribution, the Linux platform that Cobbler resides on needs to be installed and configured. Prerequisite services such as DHCP and EPEL also need to be setup and configured before Cobbler is installed.

Cobbler uses PXE boot services as the method for booting the target system via TFTP in preparation for OS installation. PXE is tightly coupled with DHCP and performs best on a pure layer 2 network without the need for DHCP Helper configuration on network switches. Cobbler should be isolated to either a temporary layer 2 network segment or permanent VLAN in order to prevent production systems from booting from Cobbler by mistake.

Installing the Base OS

For this example, CentOS 6.5 x64 will be installed as the base OS. Cobbler and all of its prerequisites will be installed on this system. Before that can happen, the base OS needs to be installed along with Cobbler’s prerequisite applications like DHCP and EPEL.

VMware Workstation 10 will be used as the environment in which the Cobbler VM will be setup and configured. The following screenshots show how CentOS 6.5 is installed in Workstation 10:

Create a new Virtual Machine

Choose Custom, then click next

Click next on the Choose the Virtual Machine Hardware Compatibility screen

Click Browse and select the CentOS 6.5 distribution ISO. VMware Workstation 10 will use its Easy Install process to automate the installation of CentOS, including the installation of VMware Tools. Click next to continue.

FYI: CentOS 6.5 can be downloaded from: http://www.centos.org/download/

Add your personal credential. Note that the password that you select will also be set for the root account. Click next to continue.

Name the virtual machine. In this case I am using “COBBLER” as my server name. Click Next to continue.

Select the number of processors and cores based on how busy you predict the Cobbler server to be. Since this server will be used to load up to 50 ESXi servers simultaneously, this has been set to 4 cores.

In a similar fashion, set the amount of RAM for the Cobbler server. In this case this has been set to 4096MB, or 1024MB/core. Click next to continue.

Click next to accept the defaults on the Network Type screen, the I/O Controller Types screen, the Disk Type screen, and Select a Disk screen.

Specify the amount of Disk Capacity to carve up for the Cobbler server. Since this Cobbler server will only be used to distribute ESXi, the default 20GB storage capacity is plenty.

Click next on the Specify Disk File screen to accept the default disk file name.

Click Customize Hardware to change the hardware settings on the VM.

Click on Add to add an additional Network Adapter, select Network Adapter, and then click next. The first adapter is used for private access to the VM and allows the VM to access the internet through the host’s connection.

Choose Custom, then pick a custom network that is not being used. In this case, VMnet5 has been selected. That will be our test deployment network where DHCP and PXE services will run. Click Finish to complete the Add Hardware Wizard. You should then see something similar to below:

Verify that the Cobbler VM’s hardware is similar to that shown above and click Close, then click Finish on the New Virtual Machine Wizard to complete the setup of the Cobbler VM.

The Cobbler VM boots and VMware Workstation starts the Easy Install process. CentOS is installed and VMware Tools will be installed near the end of this process as shown below.

The installation continues…

After the GUI portion of the OS install has been completed, the VM will reboot and Easy Install will automatically install VMware Tools prior to making the OS available for login.

The installation of CentOS has completed successfully. At this point several prerequisite tools need to be installed and configured before Cobbler can be installed. These include the following:

  • DHCP Installation and Configuration
  • EPEL Repository
  • Disable IPtables and SELinux

DHCP Installation and Configuration

To install DHCP, use the yum installer as shown below:
[root@cobbler ~]# yum install dhcp

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

* base: centos.sonn.com

* extras: ftp.usf.edu

* updates: centos-mirror.jchost.net

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package dhcp.x86_64 12:4.1.1-38.P1.el6.centos will be installed

–> Finished Dependency Resolution

Dependencies Resolved

=================================================================================================

Package Arch Version Repository Size

=================================================================================================

Installing:

dhcp x86_64 12:4.1.1-38.P1.el6.centos base 817 k

Transaction Summary

=================================================================================================

Install 1 Package(s)

Total download size: 817 k

Installed size: 1.9 M

Is this ok [y/N]: y

Downloading Packages:

dhcp-4.1.1-38.P1.el6.centos.x86_64.rpm | 817 kB 00:01

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Importing GPG key 0xC105B9DE:

Userid : CentOS-6 Key (CentOS 6 Official Signing Key) <centos-6-key@centos.org>

Package: centos-release-6-5.el6.centos.11.1.x86_64 (@anaconda-CentOS-201311272149.x86_64/6.5)

From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6

Is this ok [y/N]: y

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Installing : 12:dhcp-4.1.1-38.P1.el6.centos.x86_64 1/1

Verifying : 12:dhcp-4.1.1-38.P1.el6.centos.x86_64 1/1

Installed:

dhcp.x86_64 12:4.1.1-38.P1.el6.centos

Complete!

[root@cobbler ~]#

Once DHCP has been installed, the second network adapter needs to be configured and started. This network interface will have a statically assigned IP address and will be the interface that communicates on the layer 2 cobbler network.

[root@cobbler ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth1

Change the ifcfg-eth1 text file so that it looks similar to the following. Note that the HWADDR and UUID values will be different that shown below:

DEVICE=eth1

HWADDR=00:0C:29:0B:9D:E0

TYPE=Ethernet

UUID=f7c890cc-e65f-4679-9bc7-ae8f32b1ea5b

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=172.16.1.1

NETMASK=255.255.255.0

NETWORK=172.16.1.0

Change the IP address, subnet mask, and network values according to your requirements. These values are used as a test, using a non-routable IP network. Once the ifcfg-eth1 file is changed, the network service will need to be restarted using the following command:

[root@cobbler ~]# service network restart

Shutting down interface eth0: [ OK ]

Shutting down interface eth1: [ OK ]

Shutting down loopback interface: [ OK ]

Bringing up loopback interface: [ OK ]

Bringing up interface eth0: [ OK ]

Bringing up interface eth1: [ OK ]

[root@cobbler /]#

Verify that the eth1 interface has been started with the IP address previously specified:

[root@cobbler /]# ifconfig eth1

eth1 Link encap:Ethernet HWaddr 00:0C:29:0B:9D:E0

inet addr:172.16.1.1 Bcast:172.16.1.255 Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fe0b:9de0/64 Scope:Link


UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1

RX packets:0 errors:0 dropped:0 overruns:0 frame:0

TX packets:3 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:0 (0.0 b) TX bytes:258 (258.0 b)

Interrupt:16 Base address:0x2024

Once the eth1 interface has been configured and started successfully, DHCP needs to be configured, started, and set to automatically start every time the Cobbler VM starts. The DHCP configuration is set in the dhcpd.conf file located in either the /etc or /etc/dhcp directory. Edit the dhcpd.conf file and make the changes shown in red below:

[root@cobbler ~]# vi /etc/dhcp/dhcpd.conf

# DHCP Server Configuration file.

# see /usr/share/doc/dhcp*/dhcpd.conf.sample

# see ‘man 5 dhcpd.conf’

#

ddns-update-style interim;

allow booting;

allow bootp;

ignore client-updates;

set vendorclass = option vendor-class-identifier;

subnet 172.16.1.0 netmask 255.255.255.0 {

option routers 172.16.1.1;

option domain-name-servers 172.16.1.1;

option subnet-mask 255.255.255.0;

range 172.16.1.11 172.16.1.249;

filename “/pxelinux.0”;

default-lease-time 21600;

max-lease-time 43200;

next-server 172.16.1.1;

}

Next, turn DHCP on and configure it to start every time the Cobbler VM starts, then check it as shown below:

[root@cobbler /]# service dhcpd start

Starting dhcpd:                 [ OK ]

[root@cobbler /]# chkconfig dhcpd on

[root@cobbler /]# chkconfig –list dhcpd

dhcpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Next, since this environment is running within VMware Workstation, testing to make sure that a VM gets an IP address from the DHCP server is always comforting. Setup a test VM if necessary or use an existing VM and verify that the DHCP server is working properly.

Installing the EPEL Repository

The Cobbler application and associated libraries are packages that are in EPEL, the Extra Packages for Enterprise Linux repository. In order to access the EPEL repository, EPEL needs to be installed.

[root@cobbler /]# rpm -ivh http://mirror.sfo12.us.leaseweb.net/epel//6/i386/epel-release-6-8.noarch.rpm

Retrieving http://mirror.sfo12.us.leaseweb.net/epel//6/i386/epel-release-6-8.noarch.rpm

warning: /var/tmp/rpm-tmp.ntcv4D: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

Preparing… ########################################### [100%]

1:epel-release ########################################### [100%]

Verify that the EPEL repository has been installed successfully:

[root@cobbler /]# yum repolist

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

epel/metalink | 14 kB 00:00

* base: centos.sonn.com

* epel: mirror.steadfast.net

* extras: ftp.usf.edu

* updates: centos-mirror.jchost.net

base | 3.7 kB 00:00

epel | 4.4 kB 00:00

epel/primary_db | 6.2 MB 00:08

extras | 3.4 kB 00:00

updates | 3.4 kB 00:00

repo id repo name status

base CentOS-6 – Base 6,367

epel Extra Packages for Enterprise Linux 6 – x86_64 10,999

extras CentOS-6 – Extras 14

updates CentOS-6 – Updates 1,153

repolist: 18,533

[root@cobbler /]#

Disable IPtables and SELinux

In order for the PXE boot process to work in an isolated environment, SELinux has to be disabled and the IPtables firewall should be turned off. This will improve the usability of Cobbler in an isolated environment and it will reduce the amount of configuration and troubleshooting that may need to be done in the future to make Cobbler work.

To disable SELinux, use the SED tool. Check and see how the SELinux config file looks before making the change, then check the file after SED runs:

[root@cobbler /]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing – SELinux security policy is enforced.

# permissive – SELinux prints warnings instead of enforcing.

# disabled – No SELinux policy is loaded.

SELINUX=enforcing

# SELINUXTYPE= can take one of these two values:

# targeted – Targeted processes are protected,

# mls – Multi Level Security protection.

SELINUXTYPE=targeted

[root@cobbler /]# sed -i ‘s/SELINUX\=enforcing/SELINUX\=disabled/g’ /etc/selinux/config

[root@cobbler /]# cat /etc/selinux/config

# This file controls the state of SELinux on the system.

# SELINUX= can take one of these three values:

# enforcing – SELinux security policy is enforced.

# permissive – SELinux prints warnings instead of enforcing.

# disabled – No SELinux policy is loaded.

SELINUX=disabled

# SELINUXTYPE= can take one of these two values:

# targeted – Targeted processes are protected,

# mls – Multi Level Security protection.

SELINUXTYPE=targeted

The IPtables firewall is not needed in this isolated environment so it should be disabled and removed from the startup boot process:

[root@cobbler /]# chkconfig –list iptables

iptables 0:off 1:off 2:on 3:on 4:on 5:on
6:off

[root@cobbler /]# chkconfig iptables off

[root@cobbler /]# chkconfig –list iptables

iptables 0:off 1:off 2:off 3:off 4:off 5:off
6:off

Cobbler Installation and Configuration

Once all of the prerequisite configuration adjustments have been made and DHCP has been installed, Cobbler itself can be installed along with some of its associated utilities like the web interface, tftp server, and Python tools.

To install Cobbler and its associated utilities, execute the yum command below:

[root@cobbler /]# yum install cobbler cobbler-web httpd xinetd tftp-server mod_python pykickstart wget -y

Loaded plugins: fastestmirror, refresh-packagekit, security

Loading mirror speeds from cached hostfile

* base: centos.sonn.com

* epel: mirror.steadfast.net

* extras: ftp.usf.edu

* updates: centos-mirror.jchost.net

Setting up Install Process

Resolving Dependencies

–> Running transaction check

—> Package cobbler.noarch 0:2.4.4-1.el6 will be installed

–> Processing Dependency: syslinux for package: cobbler-2.4.4-1.el6.noarch

–> Processing Dependency: python-simplejson for package: cobbler-2.4.4-1.el6.noarch

–> Processing Dependency: python-netaddr for package: cobbler-2.4.4-1.el6.noarch

–> Processing Dependency: python-cheetah for package: cobbler-2.4.4-1.el6.noarch

–> Processing Dependency: mod_wsgi for package: cobbler-2.4.4-1.el6.noarch

–> Processing Dependency: createrepo for package: cobbler-2.4.4-1.el6.noarch

–> Processing Dependency: PyYAML for package: cobbler-2.4.4-1.el6.noarch

—> Package cobbler-web.noarch 0:2.4.4-1.el6 will be installed

–> Processing Dependency: mod_ssl for package: cobbler-web-2.4.4-1.el6.noarch

–> Processing Dependency: Django for package: cobbler-web-2.4.4-1.el6.noarch

—> Package httpd.x86_64 0:2.2.15-29.el6.centos will be updated

—> Package httpd.x86_64 0:2.2.15-30.el6.centos will be an update

–> Processing Dependency: httpd-tools = 2.2.15-30.el6.centos for package: httpd-2.2.15-30.el6.centos.x86_64

—> Package mod_python.x86_64 0:3.3.1-16.el6 will be installed

—> Package tftp-server.x86_64 0:0.49-7.el6 will be installed

—> Package wget.x86_64 0:1.12-1.8.el6 will be updated

—> Package wget.x86_64 0:1.12-1.11.el6_5 will be an update

—> Package xinetd.x86_64 2:2.3.14-39.el6_4 will be installed

–> Running transaction check

—> Package Django14.noarch 0:1.4.13-1.el6 will be installed

—> Package PyYAML.x86_64 0:3.10-3.el6 will be installed

–> Processing Dependency: libyaml-0.so.2()(64bit) for package: PyYAML-3.10-3.el6.x86_64

—> Package createrepo.noarch 0:0.9.9-18.el6 will be installed

–> Processing Dependency: python-deltarpm for package: createrepo-0.9.9-18.el6.noarch

—> Package httpd-tools.x86_64 0:2.2.15-29.el6.centos will be updated

—> Package httpd-tools.x86_64 0:2.2.15-30.el6.centos will be an update

—> Package mod_ssl.x86_64 1:2.2.15-30.el6.centos will be installed

—> Package mod_wsgi.x86_64 0:3.2-6.el6_5 will be installed

—> Package python-cheetah.x86_64 0:2.4.1-1.el6 will be installed

—> Package pykickstart.noarch 0:1.74.14-1.el6 will be installed

–> Processing Dependency: python-pygments for package: python-cheetah-2.4.1-1.el6.x86_64

–> Processing Dependency: python-markdown for package: python-cheetah-2.4.1-1.el6.x86_64

—> Package python-netaddr.noarch 0:0.7.5-4.el6 will be installed

—> Package python-simplejson.x86_64 0:2.0.9-3.1.el6 will be installed

—> Package syslinux.x86_64 0:4.02-16.el6_5 will be installed

–> Processing Dependency: syslinux-nonlinux for package: syslinux-4.02-16.el6_5.x86_64

–> Running transaction check

—> Package libyaml.x86_64 0:0.1.6-1.el6 will be installed

—> Package python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6 will be installed

–> Processing Dependency: deltarpm = 3.5-0.5.20090913git.el6 for package: python-deltarpm-3.5-0.5.20090913git.el6.x86_64

—> Package python-markdown.noarch 0:2.0.1-3.1.el6 will be installed

—> Package python-pygments.noarch 0:1.1.1-1.el6 will be installed

–> Processing Dependency: python-setuptools for package: python-pygments-1.1.1-1.el6.noarch

—> Package syslinux-nonlinux.i686 0:4.02-16.el6_5 will be installed

–> Running transaction check

—> Package deltarpm.x86_64 0:3.5-0.5.20090913git.el6 will be installed

—> Package python-setuptools.noarch 0:0.6.10-3.el6 will be installed

–> Finished Dependency Resolution

Dependencies Resolved

=======================================================================================================

Package Arch Version Repository Size

=======================================================================================================

Installing:

cobbler noarch 2.4.4-1.el6 epel 666 k

cobbler-web noarch 2.4.4-1.el6 epel 300 k

mod_python x86_64 3.3.1-16.el6 epel 293 k

pykickstart noarch 1.74.14-1.el6 base 309 k

tftp-server x86_64 0.49-7.el6 base 39 k

xinetd x86_64 2:2.3.14-39.el6_4 base 121 k

Updating:

httpd x86_64 2.2.15-30.el6.centos updates 821 k

wget x86_64 1.12-1.11.el6_5 updates 483 k

Installing for dependencies:

Django14 noarch 1.4.13-1.el6 epel 4.3 M

PyYAML x86_64 3.10-3.el6 epel 157 k

createrepo noarch 0.9.9-18.el6 base 94 k

deltarpm x86_64 3.5-0.5.20090913git.el6 base 71 k

libyaml x86_64 0.1.6-1.el6 epel 52 k

mod_ssl x86_64 1:2.2.15-30.el6.centos updates 91 k

mod_wsgi x86_64 3.2-6.el6_5 updates 66 k

python-cheetah x86_64 2.4.1-1.el6 base 365 k

python-deltarpm x86_64 3.5-0.5.20090913git.el6 base 27 k

python-markdown noarch 2.0.1-3.1.el6 base 118 k

python-netaddr noarch 0.7.5-4.el6 base 1.0 M

python-pygments noarch 1.1.1-1.el6 base 562 k

python-setuptools noarch 0.6.10-3.el6 base 336 k

python-simplejson x86_64 2.0.9-3.1.el6 base 126 k

syslinux x86_64 4.02-16.el6_5 updates 331 k

syslinux-nonlinux i686 4.02-16.el6_5 updates 513 k

Updating for dependencies:

httpd-tools x86_64 2.2.15-30.el6.centos updates 73 k

Transaction Summary

=======================================================================================================

Install 21 Package(s)

Upgrade 3 Package(s)

Total download size: 11 M

Downloading Packages:

(1/24): Django14-1.4.13-1.el6.noarch.rpm | 4.3 MB 00:06

(2/24): PyYAML-3.10-3.el6.x86_64.rpm | 157 kB 00:00

(3/24): cobbler-2.4.4-1.el6.noarch.rpm | 666 kB 00:01

(4/24): cobbler-web-2.4.4-1.el6.noarch.rpm | 300 kB 00:00

(5/24): createrepo-0.9.9-18.el6.noarch.rpm | 94 kB 00:00

(6/24): deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 71 kB 00:00

(7/24): httpd-2.2.15-30.el6.centos.x86_64.rpm | 821 kB 00:00

(8/24): httpd-tools-2.2.15-30.el6.centos.x86_64.rpm | 73 kB 00:00

(9/24): libyaml-0.1.6-1.el6.x86_64.rpm | 52 kB 00:00

(10/24): mod_python-3.3.1-16.el6.x86_64.rpm | 293 kB 00:00

(11/24): mod_ssl-2.2.15-30.el6.centos.x86_64.rpm | 91 kB 00:00

(12/24): mod_wsgi-3.2-6.el6_5.x86_64.rpm | 66 kB 00:00

(13/24): python-cheetah-2.4.1-1.el6.x86_64.rpm | 365 kB 00:00

(14/24): python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm | 27 kB 00:00

(15/24): python-markdown-2.0.1-3.1.el6.noarch.rpm | 118 kB 00:00

(16/24): python-netaddr-0.7.5-4.el6.noarch.rpm | 1.0 MB 00:00

(17/24): python-pygments-1.1.1-1.el6.noarch.rpm | 562 kB 00:00

(18/24): python-setuptools-0.6.10-3.el6.noarch.rpm | 336 kB 00:00

(19/24): python-simplejson-2.0.9-3.1.el6.x86_64.rpm | 126 kB 00:00

(20/24): syslinux-4.02-16.el6_5.x86_64.rpm | 331 kB 00:00

(21/24): syslinux-nonlinux-4.02-16.el6_5.i686.rpm | 513 kB 00:00

(22/24): tftp-server-0.49-7.el6.x86_64.rpm | 39 kB 00:00

(23/24): wget-1.12-1.11.el6_5.x86_64.rpm | 483 kB 00:00

(24/24): xinetd-2.3.14-39.el6_4.x86_64.rpm | 121 kB 00:00

(24/24): pykickstart-1.74.14-1.el6.noarch.rpm | 309 kB 00:00

——————————————————————————————————-

Total 710 kB/s | 11 MB 00:15

warning: rpmts_HdrFromFdno: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

Retrieving key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

Importing GPG key 0x0608B895:

Userid : EPEL (6) <epel@fedoraproject.org>

Package: epel-release-6-8.noarch (installed)

From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

Running rpm_check_debug

Running Transaction Test

Transaction Test Succeeded

Running Transaction

Warning: RPMDB altered outside of yum.

Installing : syslinux-nonlinux-4.02-16.el6_5.i686 1/27

Installing : syslinux-4.02-16.el6_5.x86_64 2/27

Installing : python-simplejson-2.0.9-3.1.el6.x86_64 3/27

Installing : Django14-1.4.13-1.el6.noarch 4/27

Installing : python-setuptools-0.6.10-3.el6.noarch 5/27

Installing : python-pygments-1.1.1-1.el6.noarch 6/27

Installing : python-markdown-2.0.1-3.1.el6.noarch 7/27

Installing : python-cheetah-2.4.1-1.el6.x86_64 8/27

Installing : python-netaddr-0.7.5-4.el6.noarch 9/27

Installing : deltarpm-3.5-0.5.20090913git.el6.x86_64 10/27

Installing : python-deltarpm-3.5-0.5.20090913git.el6.x86_64 11/27

Installing : createrepo-0.9.9-18.el6.noarch 12/27

Installing : 2:xinetd-2.3.14-39.el6_4.x86_64 13/27

Installing : tftp-server-0.49-7.el6.x86_64 14/27

Installing : libyaml-0.1.6-1.el6.x86_64 15/27

Installing : PyYAML-3.10-3.el6.x86_64 16/27

Updating : httpd-tools-2.2.15-30.el6.centos.x86_64 17/27

Updating : httpd-2.2.15-30.el6.centos.x86_64 18/27

Installing : mod_wsgi-3.2-6.el6_5.x86_64 19/27

Installing : cobbler-2.4.4-1.el6.noarch 20/27

Installing : 1:mod_ssl-2.2.15-30.el6.centos.x86_64 21/27

Installing : cobbler-web-2.4.4-1.el6.noarch 22/27

Installing : mod_python-3.3.1-16.el6.x86_64 23/27

Updating : wget-1.12-1.11.el6_5.x86_64 24/27

Cleanup : httpd-2.2.15-29.el6.centos.x86_64 25/27

Cleanup : httpd-tools-2.2.15-29.el6.centos.x86_64 26/27

Cleanup : wget-1.12-1.8.el6.x86_64 27/27

Verifying : httpd-2.2.15-30.el6.centos.x86_64 1/27

Verifying : httpd-tools-2.2.15-30.el6.centos.x86_64 2/27

Verifying : cobbler-web-2.4.4-1.el6.noarch 3/27

Verifying : mod_wsgi-3.2-6.el6_5.x86_64 4/27

Verifying : 1:mod_ssl-2.2.15-30.el6.centos.x86_64 5/27

Verifying : syslinux-4.02-16.el6_5.x86_64 6/27

Verifying : libyaml-0.1.6-1.el6.x86_64 7/27

Verifying : mod_python-3.3.1-16.el6.x86_64 8/27

Verifying : wget-1.12-1.11.el6_5.x86_64 9/27

Verifying : python-simplejson-2.0.9-3.1.el6.x86_64 10/27

Verifying : 2:xinetd-2.3.14-39.el6_4.x86_64 11/27

Verifying : deltarpm-3.5-0.5.20090913git.el6.x86_64 12/27

Verifying : tftp-server-0.49-7.el6.x86_64 13/27

Verifying : python-netaddr-0.7.5-4.el6.noarch 14/27

Verifying : python-pygments-1.1.1-1.el6.noarch 15/27

Verifying : Django14-1.4.13-1.el6.noarch 16/27

Verifying : python-cheetah-2.4.1-1.el6.x86_64 17/27

Verifying : python-markdown-2.0.1-3.1.el6.noarch 18/27

Verifying : createrepo-0.9.9-18.el6.noarch 19/27

Verifying : python-setuptools-0.6.10-3.el6.noarch 20/27

Verifying : python-deltarpm-3.5-0.5.20090913git.el6.x86_64 21/27

Verifying : syslinux-nonlinux-4.02-16.el6_5.i686 22/27

Verifying : cobbler-2.4.4-1.el6.noarch 23/27

Verifying : PyYAML-3.10-3.el6.x86_64 24/27

Verifying : httpd-2.2.15-29.el6.centos.x86_64 25/27

Verifying : wget-1.12-1.8.el6.x86_64 26/27

Verifying : httpd-tools-2.2.15-29.el6.centos.x86_64 27/27

Installed:


cobbler.noarch 0:2.4.4-1.el6 cobbler-web.noarch 0:2.4.4-1.el6 mod_python.x86_64 0:3.3.1-16.el6

tftp-server.x86_64 0:0.49-7.el6 xinetd.x86_64 2:2.3.14-39.el6_4

Dependency Installed:

Django14.noarch 0:1.4.13-1.el6 PyYAML.x86_64 0:3.10-3.el6

createrepo.noarch 0:0.9.9-18.el6 deltarpm.x86_64 0:3.5-0.5.20090913git.el6

libyaml.x86_64 0:0.1.6-1.el6 mod_ssl.x86_64 1:2.2.15-30.el6.centos

mod_wsgi.x86_64 0:3.2-6.el6_5 python-cheetah.x86_64 0:2.4.1-1.el6

python-deltarpm.x86_64 0:3.5-0.5.20090913git.el6 python-markdown.noarch 0:2.0.1-3.1.el6

python-netaddr.noarch 0:0.7.5-4.el6 python-pygments.noarch 0:1.1.1-1.el6

python-setuptools.noarch 0:0.6.10-3.el6 python-simplejson.x86_64 0:2.0.9-3.1.el6

syslinux.x86_64 0:4.02-16.el6_5 syslinux-nonlinux.i686 0:4.02-16.el6_5

pykickstart.noarch 0:1.74.14-1.el6

Updated:

httpd.x86_64 0:2.2.15-30.el6.centos wget.x86_64 0:1.12-1.11.el6_5

Dependency Updated:

httpd-tools.x86_64 0:2.2.15-30.el6.centos

Complete!

[root@cobbler /]#

Before Cobbler can be configured and enabled, depepdent utilities such as rsync and tftp need to be enabled and started, and tftp also needs to start every time the Cobbler VM starts. In both the rsync and tftp files, change disable = yes to disable = no as shown below:

[root@cobbler /]# vi /etc/xinetd.d/rsync

# default: off

# description: The rsync server is a good addition to an ftp server, as it \

# allows crc checksumming etc.

service rsync

{


disable = no

flags = IPv6

socket_type = stream

wait = no

user = root

server = /usr/bin/rsync

server_args = –daemon

log_on_failure += USERID

}

[root@cobbler /]# vi /etc/xinetd.d/tftp

# default: off

# description: The tftp server serves files using the trivial file transfer \

# protocol. The tftp protocol is often used to boot diskless \

# workstations, download configuration files to network-aware printers, \

# and to start the installation process for some operating systems.

service tftp

{

socket_type = dgram

protocol = udp

wait = yes

user = root

server = /usr/sbin/in.tftpd

server_args = -s /var/lib/tftpboot


disable = no

per_source = 11

cps = 100 2

flags = IPv4

}

This process controls whether tftp is started when xinetd starts. Now we need to restart the xinetd service using the command below:

[root@cobbler /]# service xinetd restart

Stopping xinetd: [FAILED]

Starting xinetd: [ OK ]

The FAILED under xinetd stopping is to be expected. Now we need to check and make sure that xinetd and tftp services start whenever the Cobbler VM starts:

[root@cobbler /]# chkconfig –list xinetd

xinetd 0:off 1:off 2:off 3:on 4:on 5:on
6:off

[root@cobbler /]# chkconfig –list tftp

tftp on

Once the prerequisite services are running and configured, the services related to Cobbler itself, namely httpd and cobblerd, can be started and set to autostart whenever the Cobbler VM starts. The following commands take care of this:

[root@cobbler /]# service httpd restart

Stopping httpd: [FAILED]

Starting httpd: [ OK ]

[root@cobbler /]# service cobblerd restart

Stopping cobbler daemon: [FAILED]

Starting cobbler daemon: [ OK ]

[root@cobbler /]# chkconfig httpd on

[root@cobbler /]# chkconfig cobblerd on

[root@cobbler /]# chkconfig –list httpd

httpd 0:off 1:off 2:on 3:on 4:on 5:on
6:off

[root@cobbler /]# chkconfig –list cobblerd

cobblerd 0:off 1:off 2:on 3:on 4:on 5:on
6:off

At this point in the process reboot the Cobbler VM to make sure that services start properly and the environment is prepared for Cobbler configuration.

[root@cobbler /]# shutdown -r now

Broadcast message from root@cobbler.comcast.com

(/dev/pts/0) at 11:37 …

The system is going down for reboot NOW!

<AFTER COBBLER REBOOT>

As part of the initial Cobbler configuration, the latest boot loaders need to be downloaded from www.cobblerd.org. This is done using the cobbler get-loaders command.

[root@cobbler ~]# cobbler get-loaders

httpd does not appear to be running and proxying cobbler, or SELinux is in the way. Original traceback:

Traceback (most recent call last):

File “/usr/lib/python2.6/site-packages/cobbler/cli.py”, line 252, in check_setup

s.ping()

File “/usr/lib64/python2.6/xmlrpclib.py”, line 1199, in call

return self.__send(self.__name, args)

File “/usr/lib64/python2.6/xmlrpclib.py”, line 1489, in __request

verbose=self.__verbose

File “/usr/lib64/python2.6/xmlrpclib.py”, line 1243, in request

headers

ProtocolError: <ProtocolError for 127.0.0.1:80/cobbler_api: 502 Proxy Error>

Note: Anytime the error above is displayed it generally means that the httpd service needs to be restarted. Restart httpd and execute the cobbler get-loaders command again.

[root@cobbler ~]# service httpd restart

Stopping httpd: [ OK ]

Starting httpd: httpd: Could not reliably determine the server’s fully qualified domain name, using cobbler.comcast.com for ServerName

[ OK ]

[root@cobbler ~]# cobbler get-loaders

task started: 2014-07-20_113903_get_loaders

task started (id=Download Bootloader Content, time=Sun Jul 20 11:39:03 2014)

downloading http://www.cobblerd.org/loaders/README to /var/lib/cobbler/loaders/README

downloading http://www.cobblerd.org/loaders/COPYING.elilo to /var/lib/cobbler/loaders/COPYING.elilo

downloading http://www.cobblerd.org/loaders/COPYING.yaboot to /var/lib/cobbler/loaders/COPYING.yaboot

downloading http://www.cobblerd.org/loaders/COPYING.syslinux to /var/lib/cobbler/loaders/COPYING.syslinux

downloading http://www.cobblerd.org/loaders/elilo-3.8-ia64.efi to /var/lib/cobbler/loaders/elilo-ia64.efi

downloading http://www.cobblerd.org/loaders/yaboot-1.3.14-12 to /var/lib/cobbler/loaders/yaboot

downloading http://www.cobblerd.org/loaders/pxelinux.0-3.86 to /var/lib/cobbler/loaders/pxelinux.0

downloading http://www.cobblerd.org/loaders/menu.c32-3.86 to /var/lib/cobbler/loaders/menu.c32

downloading http://www.cobblerd.org/loaders/grub-0.97-x86.efi to /var/lib/cobbler/loaders/grub-x86.efi

downloading http://www.cobblerd.org/loaders/grub-0.97-x86_64.efi to /var/lib/cobbler/loaders/grub-x86_64.efi

*** TASK COMPLETE ***

[root@cobbler ~]#

The next important step in getting Cobbler configured is to edit the Cobbler settings file located in the /etc/cobbler directory. The following entries need to be changed in order to Cobbler to work properly:

Original Setting New Setting
next_server: 127.0.0.1 next_server: 172.16.1.1
server: 127.0.0.1 server: 172.16.1.1
default_password_crypted: “$1$mF86/UHC$WvcIcX2t6crBz2onWxyac.” A password of your choosing that is generated with the openssl command as shown below

Generate a new encrypted default password using the openssl command:

[root@cobbler /]# openssl passwd -1 ‘P@ssw0rd’

$1$HSZ6fep.$OZuwxl1eGQGDlpHxtpQ4p.

Edit the /etc/cobbler/settings file and make the appropriate changes

Once the changes identified above have been made to the /etc/cobbler/settings file, restart the cobblerd service for the settings to take effect, then run a cobbler check to verify functionality.

[root@cobbler /]# service cobblerd restart

Stopping cobbler daemon: [ OK ]

Starting cobbler daemon: [ OK ]

[root@cobbler /]# cobbler check

The following are potential configuration items that you may want to fix:

1 : debmirror package is not installed, it will be required to manage debian deployments and repositories

2 : fencing tools were not found, and are required to use the (optional) power management features. install cman or fence-agents to use them

Restart cobblerd and then run ‘cobbler sync’ to apply changes.

The two items listed above are to be expected and are normal. At this point Cobbler is working normally and is ready to accept Linux and ESXi distributions. The configuration steps listed below show how to import Linux and ESXi distributions, resync Cobbler, edit the PXE boot menu, and successfully use Cobbler to zero touch distribute ESXi automatically.

The first step is to mount the ESXi ISO to the Cobbler VM:

The location of the ESXi ISO media in the Cobbler VM will depend on what platform Cobbler is being integrated within. Since this example uses CentOS, the ESXi ISO is automatically mounted in the /media directory:

[root@cobbler /]# ls /media/ESXI-5.5U1-1623589-ROLLUPISO-STA/

a.b00 esx-dvfi.v00 misc-dri.v00 net-sfc.v00 scsi-adp.v01 scsi-mpt.v03

ata-pata.v00 ima-be2i.v00 mtip32xx.v00 net-tg3.v00 scsi-aic.v00 scsi-qla.v00

ata-pata.v01 ima-qla4.v00 net-be2n.v00 net-vmxn.v00 scsi-be2.v00 scsi-qla.v01

ata-pata.v02 imgdb.tgz net-bna.v00 ohci-usb.v00 scsi-bnx.v00 s.v00

ata-pata.v03 imgpayld.tgz net-bnx2.v00 qlnative.v00 scsi-bnx.v01 tboot.b00

ata-pata.v04 ipmi-ipm.v00 net-bnx2.v01 rste.v00 scsi-fni.v00 tools.t00

ata-pata.v05 ipmi-ipm.v01 net-cnic.v00 safeboot.c32 scsi-hfc.v00 uhci-usb.v00

ata-pata.v06 ipmi-ipm.v02 net-e100.v00 sas-vgc.v00 scsi-hps.v00 upgrade

ata-pata.v07 isolinux.bin net-e100.v01 sata-ahc.v00 scsi-iom.v00 user.b00

b.b00 isolinux.cfg net-enic.v00 sata-ata.v00 scsi-ips.v00 useropts.gz

block-cc.v00 jumpstrt.gz net-forc.v00 sata-sat.v00 scsi-lpf.v00 vmware-esx-base-osl.txt

boot.cat k.b00 net-igb.v00 sata-sat.v01 scsi-meg.v00 vmware-esx-base-readme

boot.cfg lpfc.v00 net-ixgb.v00 sata-sat.v02 scsi-meg.v01 weaselin.t00

chardevs.b00 lsi-mr3.v00 net-mlx4.v00 sata-sat.v03 scsi-meg.v02 xlibs.v00

efi lsi-msgp.v00 net-mlx4.v01 sata-sat.v04 scsi-meg.v03 xorg.v00

efiboot.img mboot.c32 net-nx-n.v00 sb.v00 scsi-mpt.v00

ehci-ehc.v00 menu.c32 net-qlcn.v00 scsi-aac.v00 scsi-mpt.v01

elxnet.v00 misc-cni.v00 net-qlge.v00 scsi-adp.v00 scsi-mpt.v02

Once the ISO is accessible to the Cobbler VM, it can be imported into Cobbler for distribution. This process will take a few minutes to complete as all of the ESXi bits are being copied into Cobbler.

[root@cobbler /]# cobbler import –name=ESXI55U1 –path=/media/ESXI-5.5U1-1623589-ROLLUPISO-STA/

task started: 2014-07-21_055825_import

task started (id=Media import, time=Mon Jul 21 05:58:25 2014)

Found a candidate signature: breed=vmware, version=esxi51

running: /usr/bin/file /var/www/cobbler/ks_mirror/ESXI55U1/s.v00

received on stdout: /var/www/cobbler/ks_mirror/ESXI55U1/s.v00: gzip compressed data, was “vmvisor-sys.tar.vtar”, from Unix, last modified: Fri Feb 21 17:45:51 2014

received on stderr:

Found a candidate signature: breed=vmware, version=esxi55

running: /usr/bin/file /var/www/cobbler/ks_mirror/ESXI55U1/s.v00

received on stdout: /var/www/cobbler/ks_mirror/ESXI55U1/s.v00: gzip compressed data, was “vmvisor-sys.tar.vtar”, from Unix, last modified: Fri Feb 21 17:45:51 2014

received on stderr:

Found a matching signature: breed=vmware, version=esxi55

Adding distros from path /var/www/cobbler/ks_mirror/ESXI55U1:

running: /usr/bin/file /var/www/cobbler/ks_mirror/ESXI55U1/tools.t00

received on stdout: /var/www/cobbler/ks_mirror/ESXI55U1/tools.t00: gzip compressed data, from Unix, last modified: Fri Feb 21 17:44:34 2014

received on stderr:

creating new distro: ESXI55U1-x86_64

trying symlink: /var/www/cobbler/ks_mirror/ESXI55U1 -> /var/www/cobbler/links/ESXI55U1-x86_64

creating new profile: ESXI55U1-x86_64

associating repos

*** TASK COMPLETE ***

To verify that Cobbler has successfully imported the ESXi distribution, use the cobbler profile list command to list out the Cobbler profiles, then use the cobbler distro report command to get the specific distribution report:

[root@cobbler /]# cobbler profile list

ESXI55U1-x86_64

[root@cobbler /]# cobbler distro report –name=ESXI55U1-x86_64

Name : ESXI55U1-x86_64

Architecture : x86_64

TFTP Boot Files : {‘$local_img_path/.‘: ‘/var/www/cobbler/ks_mirror/ESXI55U1/.‘}

Breed : vmware

Comment :

Fetchable Files : {}

Initrd : /var/www/cobbler/ks_mirror/ESXI55U1/imgpayld.tgz

Kernel : /var/www/cobbler/ks_mirror/ESXI55U1/mboot.c32

Kernel Options : {}

Kernel Options (Post Install) : {}

Kickstart Metadata : {‘tree’: ‘http://@@http_server@@/cblr/links/ESXI55U1-x86_64’}

Management Classes : []

OS Version : esxi55

Owners : [‘admin’]

Red Hat Management Key : <<inherit>>

Red Hat Management Server : <<inherit>>

Template Files : {‘/etc/cobbler/pxe/bootcfg_esxi55.template’: ‘$local_img_path/cobbler-boot.cfg’}

Next, whenever an OS distribution gets added to Cobbler, a cobbler sync needs to be performed so that the necessary boot files and configuration files are moved into their appropriate locations.

[root@cobbler dhcp]# cobbler sync

task started: 2014-07-21_074056_sync

task started (id=Sync, time=Mon Jul 21 07:40:56 2014)

running pre-sync triggers

cleaning trees

removing: /var/www/cobbler/images/ESXI55U1-x86_64

removing: /var/lib/tftpboot/pxelinux.cfg/default

removing: /var/lib/tftpboot/grub/efidefault

removing: /var/lib/tftpboot/grub/images

removing: /var/lib/tftpboot/grub/grub-x86.efi

removing: /var/lib/tftpboot/grub/grub-x86_64.efi

removing: /var/lib/tftpboot/images/ESXI55U1-x86_64

removing: /var/lib/tftpboot/s390x/profile_list

copying bootloaders

trying hardlink /var/lib/cobbler/loaders/grub-x86.efi -> /var/lib/tftpboot/grub/grub-x86.efi

trying hardlink /var/lib/cobbler/loaders/grub-x86_64.efi -> /var/lib/tftpboot/grub/grub-x86_64.efi

copying distros to tftpboot

copying files for distro: ESXI55U1-x86_64

trying hardlink /var/www/cobbler/ks_mirror/ESXI55U1/mboot.c32 -> /var/lib/tftpboot/images/ESXI55U1-x86_64/mboot.c32

trying hardlink /var/www/cobbler/ks_mirror/ESXI55U1/imgpayld.tgz -> /var/lib/tftpboot/images/ESXI55U1-x86_64/imgpayld.tgz

copying images

generating PXE configuration files

generating PXE menu structure

copying files for distro: ESXI55U1-x86_64

trying hardlink /var/www/cobbler/ks_mirror/ESXI55U1/mboot.c32 -> /var/www/cobbler/images/ESXI55U1-x86_64/mboot.c32

trying hardlink /var/www/cobbler/ks_mirror/ESXI55U1/imgpayld.tgz -> /var/www/cobbler/images/ESXI55U1-x86_64/imgpayld.tgz

Writing template files for ESXI55U1-x86_64

generating: /var/lib/tftpboot/images/ESXI55U1-x86_64/cobbler-boot.cfg

rendering TFTPD files

generating /etc/xinetd.d/tftp

processing boot_files for distro: ESXI55U1-x86_64

cleaning link caches

running post-sync triggers

running python triggers from /var/lib/cobbler/triggers/sync/post/*

running python trigger cobbler.modules.sync_post_restart_services

running shell triggers from /var/lib/cobbler/triggers/sync/post/*

running python triggers from /var/lib/cobbler/triggers/change/*

running python trigger cobbler.modules.scm_track

running shell triggers from /var/lib/cobbler/triggers/change/*

*** TASK COMPLETE ***

During testing it has been determined that the cobbler-boot.cfg file that is generated by Cobbler is incorrect. It should be replaced with the file below. Note that the IP address used is the same one as used in this example. Be sure to change this based on your previous selection.

File Location: /var/lib/tftpboot/images/ESXI55U1-x86_64/cobbler-boot.cfg

File Contents:

bootstate=0

title=Loading ESXi installer

prefix=/images/ESXI55U1-x86_64/

kernel=tboot.b00

kernelopt=runweasel ks=http://172.16.1.1:80/cblr/svc/op/ks/profile/ESXI55U1-x86_64

modules=b.b00 — jumpstrt.gz — useropts.gz — k.b00 — chardevs.b00 — a.b00 — user.b00 — scsi-aac.v00 — scsi-adp.v00 — misc-cni.v00 — net-bnx2.v00 — net-bnx2.v01 — net-cnic.v00 — net-tg3.v00 — scsi-bnx.v00 — scsi-bnx.v01 — net-bna.v00 — net-enic.v00 — elxnet.v00 — ima-be2i.v00 — lpfc.v00 — scsi-be2.v00 — scsi-iom.v00 — scsi-hps.v00 — scsi-hfc.v00 — net-ixgb.v00 — scsi-meg.v00 — scsi-meg.v01 — scsi-mpt.v00 — scsi-mpt.v01 — mtip32xx.v00 — net-mlx4.v00 — net-nx-n.v00 — net-qlcn.v00 — qlnative.v00 — net-sfc.v00 — ata-pata.v00 — ata-pata.v01 — ata-pata.v02 — ata-pata.v03 — ata-pata.v04 — ata-pata.v05 — ata-pata.v06 — ata-pata.v07 — block-cc.v00 — ehci-ehc.v00 — s.v00 — sb.v00 — weaselin.t00 — esx-dvfi.v00 — xlibs.v00 — ima-qla4.v00 — ipmi-ipm.v00 — ipmi-ipm.v01 — ipmi-ipm.v02 — lsi-mr3.v00 — lsi-msgp.v00 — misc-dri.v00 — net-be2n.v00 — net-e100.v00 — net-e100.v01 — net-forc.v00 — net-igb.v00 — net-mlx4.v01 — net-qlge.v00 — net-vmxn.v00 — ohci-usb.v00 — rste.v00 — sata-ahc.v00 — sata-ata.v00 — sata-sat.v00 — sata-sat.v01 — sata-sat.v02 — sata-sat.v03 — sata-sat.v04 — scsi-adp.v01 — scsi-aic.v00 — scsi-ips.v00 — scsi-lpf.v00 — scsi-meg.v02 — scsi-meg.v03 — scsi-mpt.v02 — scsi-mpt.v03 — scsi-qla.v00 — scsi-qla.v01 — uhci-usb.v00 — tools.t00 — sas-vgc.v00 — scsi-fni.v00 — xorg.v00 — imgdb.tgz — imgpayld.tgz

build=

updated=0

In addition to this, some files within the /var/lib/tftpboot/images/ESXI55U1-x86_64/

directory are not accessible during the installation. Use the following chmod command to make all files readable by the PXE boot process:

[root@cobbler /]# chmod 644 /var/lib/tftpboot/images/ESXI55U1-x86_64/*

The last change that needs to be made has to do with how the kickstart file is dynamically created using the Python snippets code that is provided by cobbler. The template for the ESXi 5.x version is shown below:

[root@cobbler kickstarts]# pwd

/var/lib/cobbler/kickstarts

[root@cobbler kickstarts]# cat sample_esxi5.ks

#

# Sample scripted installation file

# for ESXi 5+

#

vmaccepteula

reboot –noeject

rootpw –iscrypted $default_password_crypted

install –firstdisk –overwritevmfs

clearpart –firstdisk –overwritevmfs

$SNIPPET(‘network_config’) < – – – – This produces errors!

%pre –interpreter=busybox

$SNIPPET(‘kickstart_start’)

$SNIPPET(‘pre_install_network_config’)

%post –interpreter=busybox

$SNIPPET(‘kickstart_done’)

This generates a dynamic kickstart that looks like this, where the error is shown below in red:

# Sample scripted installation file

# for ESXi 5+

vmaccepteula

reboot –noeject

rootpw –iscrypted $1$HSZ6fep.$OZuwxl1eGQGDlpHxtpQ4p.

install –firstdisk –overwritevmfs

clearpart –firstdisk –overwritevmfs

network –bootproto=dhcp –device=eth0 –onboot=on

%pre –interpreter=busybox

wget “http://172.16.1.1/cblr/svc/op/trig/mode/pre/profile/ESXI55U1-x86_64” -O /dev/null

%post –interpreter=busybox

wget “http://172.16.1.1/cblr/svc/op/ks/profile/ESXI55U1-x86_64” -O /var/log/cobbler.ks

wget “http://172.16.1.1/cblr/svc/op/trig/mode/post/profile/ESXI55U1-x86_64” -O /dev/null

The network_config snippet needs to be edited to fix this problem for ESXi. Edit the network_config file and change the line as described below:

Backup the original network_config file:

[root@cobbler /]# cp /var/lib/cobbler/snippets/network_config /var/lib/cobbler/snippets/network_config.old

Edit the network_config file and change this line:

network –bootproto=dhcp –device=eth0 –onboot=on

To this line:

network –bootproto=dhcp –device=vmnic0

The last adjustment that needs to be made is to the PXE default menu to enable zero touch deployments. Each time the cobbler sync command is executed the PXE default menu is regenerated. At this time there is only one version of ESXi that has been assimilated into Cobbler. The PXE default menu will be changed to automatically select ESXi Version 5.5 Update 1 in 10 seconds after the menu is displayed.

Edit the /var/lib/tftpboot/pxelinux.cfg/default file. The original default file looks like this:

DEFAULT menu

PROMPT 0

MENU TITLE Cobbler | http://www.cobblerd.org/

TIMEOUT 200

TOTALTIMEOUT 6000

ONTIMEOUT local

LABEL local

MENU LABEL (local)

MENU DEFAULT

LOCALBOOT -1

LABEL ESXI55U1-x86_64

kernel /images/ESXI55U1-x86_64/mboot.c32

MENU LABEL ESXI55U1-x86_64

ipappend 2

append -c /images/ESXI55U1-x86_64/cobbler-boot.cfg

MENU end

After making a backup copy of the original file, edit it to look like the following:

PROMPT 0

MENU TITLE Automatic ESXi Installer | Vsphere ESXi Version 5.5 Update 1

TIMEOUT 100

TOTALTIMEOUT 6000

ONTIMEOUT ESXI55U1-x86_64

LABEL local

MENU LABEL (local)

LOCALBOOT -1

LABEL ESXI55U1-x86_64

kernel /images/ESXI55U1-x86_64/mboot.c32

MENU LABEL ESXi Version 5.5 Update 1

MENU DEFAULT

ipappend 2

append -c /images/ESXI55U1-x86_64/cobbler-boot.cfg

MENU end

Once this process has been completed, Cobbler is ready to be tested from within VMware Workstation. The following pages will provide guidance on how to setup the test ESXi VM and boot it so that it loads ESXi off of the Cobbler VM.

Optional: To use the previously installed Cobbler web interface, the web interface needs to be enabled and the cobblerd and httpd services need to be started. The following steps demonstrate this:

[root@cobbler /]# sed -i ‘s/module = authn_denyall/module = authn_testing/g’

/etc/cobbler/modules.conf

[root@cobbler /]# service cobblerd restart

Stopping cobbler daemon: [ OK ]

Starting cobbler daemon: [ OK ]

[root@cobbler /]# service httpd restart

Stopping httpd: [ OK ]

Starting httpd: [ OK ]

Browse to Cobbler’s management webpage at: https://cobbler_ip_address/cobbler_web

In my example this URL is: https://192.168.129.133/cobbler_web

Cobbler web page logon screen. Use the userid testing with a password of testing to gain access.

Cobbler management webpage. Explore the different things that can be done from within this management web interface to see how it can be utilized.

Testing Cobbler on VMware Workstation

Create a test ESXi virtual machine to test the Cobbler PXE boot and installation process:

Create a new Virtual Machine

Choose Custom, then click next

Click next on the Choose the Virtual Machine Hardware Compatibility screen

Select “I will install the operating system later” radio button and click next.

Choose VMware ESX version 5 and click next.

Choose a name for the test ESX server and an appropriate location for the VM then click next.

Select the appropriate number of processors and cores, then click next.

Select the amount of memory for the test ESX VM. A minimum of 4GB is needed for ESXi. Click next once the amount of memory has been chosen.

Click next on the “Network Type” screen to choose the default (NAT), then click next on the “Select I/O Controller Types” screen. Click next again on the “Select a Disk Type” screen as well as the “Select a Disk” screen.

Specify a maximum disk size of 10GB for the test ESX server, then click next. Also click next on the “Specify Disk File” screen.

Click “Customize Hardware…” on the “Ready to Create Virtual Machine” screen

Click the Network Adapter, then choose Custom and pick the isolated network that is being used by Cobbler for testing. VMnet5 is being used here so that network is selected. Click Close to continue.

Click Finish to complete the setup of the test ESXi VM. This VM will be used to test the installation of ESXi from the Cobbler VM.

Power on the newly created ESXi VM. Notice the customized PXE boot menu shown below.

ESXi installation files are being loaded into memory…

Installation of ESXi onto the 10GB local hard disk continues automatically.

The installation of ESXi Version 5.5 Update 1 has completed successfully and will automatically reboot

ESXi has booted successfully and is ready to be configured.

What is in my Bag??

I was recently asked what cool “nerd” tools to have with me whenever i’m going out to do an install.  Now there are plenty of times i don’t need some of these or any in fact.  However if i’m walking into an engagement where i’ve gotten a lot of “I don’t know”s or “i think we have those”.  I tend to bring more of the equipment.  While if its just a SME or non-datacenter job i may leave them all at home.  However, it’s much better to be over-prepared then under prepared.  I have included links to the equipment where i can, a lot of them are from Amazon.  There may be better prices, but since i’m a Prime Member, the faster and cheap shipping is why i buy a lot through them.

So here is my MUST haves;

USB to Serial Adapter cable.  This lets me console into the equipment to perform the initial configuration. Without this i’m totally dead in the water. I haven’t found one to be any better or worse then others, so use whatever one you’d like.  I was recently given a cool double-headed one thats pretty neat.

-6ft Cat5e cable.  The number of times i’ve needed a cable and either there isn’t any or they look like they were used to tie people up with.

2x NEMA 5-15R to C14 cable  This allows you to plug in your laptop or anything else into the hooded C13’s that are in most datacenter racks.  Here is the one i usually buy, 5-15R-C14 1ft , however i have found this one just today which would be really cool to save space in your bag. 5-15R-C14 adapter

Rolls of Velcro  I refuse to use plastic zip-ties, even the removable ones.  They tend to pinch cables, and when you cut off the “excess” they can leave sharp edges.  I have found this one to be a  pretty good price and it is nice velcro.  It does say tear by hand… and while that does work, i find a small pair of scissors works MUCH nicer.  Just make sure they are small enough to not get nabbed by TSA if your not checking the bag.

ISOStick  This allows me to carry all of my Necessary ISOs, and boot any one of them from a baremetal server. This has saved me a TON of time, and works really well.

Other items that have come in handy;

NETGEAR 8-port GigE switch I‘ve used this a few times when the customer doesn’t have the upstream switch ready and i’d still like to do some of the basic configuration work.)  Its just a simple stupid switch but seems to work well.

Trendnet TEW-654TR Wireless device (This device works in various modes, as an Wireless Router, as an AP for the network or a wireless adapter for a client)  This has come in handy with the above switch when i don’t want to or can’t sit right in the datacenter.  This can get its power from a wall outlet, or USB ports.

3M Gold Privacy Filter (This prevents people from eavesdropping on what i’m doing.) This is really nice on a plane, but also while on the customers site.  There are times while waiting for an task to finish that we check email, etc, and don’t need people to be watching that.

-USB Stick with various software.  (Unfortunately we don’t always have internet access to the environments were are building.)  I’d ensure you have offline installers for all the software you might need, including things like Java & Flash.  I’d also have firmware packages for all the equipment you’ll be installing

 

VSAN testing in progress!!

So i’ve been working on “Virtualized VSAN” by marking vmdk’s as SSDs.

While this lets me play with setting up VSAN, the performance is …well sad.

Looks like i’ve got some SSDs to add to my servers and try and give it a go.

Now i’m just trying to convince my company to let me get 32 SSDs and servers and try and test out the VMware whitepaper and see if i can get some serious performance.

Return to Blogging and Recent updates

So for a while now i was “stuck” pretty much living in Southern California doing some interesting work, however it was slowing sending me to a dark place.

Anyway i am now back in PA and doing some pretty cool work lately. I will be writing a bunch of stuff again, and trying to update a lot of my older stuff.

I have been doing a lot of work on my own with ZFS which has been a BLAST!! I can get some pretty impressive IOPS out of just my little array at home.

I just did a UCS deployment for a 20,000 seat XenDesktop setup. They will be using the new Cisco Invicta array, which was Whiptail. Seems really cool, i’m trying to assist the customer with whatever they need, maybe get in on a whitepaper 🙂

I have a bake-off upcoming with a new NetApp 6280 vs a ZFS based Oracle array. This is Nerdtastic!! I’ll be doing a pretty deep writeup on this as prior around the test-cases and afterword as well with the results.

I am attending my first Cisco Live ever, and i have to say i haven’t been this excited for a conference in some time. I’d have to clone myself 3 times over to hit all the sessions i want to hit. Hopefully the outcome meets my expectations.

CCIA Training

So i passed my three CCA Tests, XenDesktop, XenApp & XenServer.  Thankfully!

I will be creating some good study guides for this at some point.
So i’m now sitting in the second class of the Citrix Acadamy in Fort Lauderdale.  It is an intense 6-week course.  I already feel like i’m taking an intense summer class in college, it’s an entire semesters worth of information in a few weeks.

I have a lot of really good content that i want to post here, my article notebook listing keeps growing by the day.  However not sure how much time i’ll actually have to write these.

I’ll do what i can.

Inital impressions of Ubuntu 10.10

Alright so even though i work in IT, i actually like Windows OS’s for a few reasons.  Granted i’m refering more towards Windows 7, Server 2008, and maybe XP.

However i’m pretty good with Linux, and i use a 2010 MacBook Pro for work, so suffice to say i’ve worked with the major players.  I recently decided to try my hands at doing a ChromeOS build, but to do so they recommend Ubuntu.  I’ve used Ubuntu in the past, but not anytime recently.  I’ve been using Fedora or CentOS, since i’m comfortable with RHEL.

I have to say i’m really really impressed with the new Ubuntu.  I think it actually could make for a very nice Full-Time OS, even for the average user.  Now granted i wouldn’t give it to the extreme novice, but for your average user, especially a power user it works quite well.  They have made it intuitive, and easy to use.  It is “pretty” which is still necessary as most people don’t want something that looks like it’s from the Windows 3.1 era.

I think i’m going to keep it as a VM for a while, yet i think i’m going to try and do as much work in it as possible.  Here’s to nothing…..