Skip to content

Instantly share code, notes, and snippets.

What would you like to do?
Shell Script to install Cobbler 2.6 on Ubuntu Server 14.04
# Script to deploy a wrking cobbler installation in Ubuntu Server 14.10
# Author: Luis Henrique Bolson <>
# Based on
# Please run as root (don't use sudo <script>)
# curl -s | bash -s
# Add cobbler repository
wget -qO - | apt-key add -
add-apt-repository "deb ./"
# Update APT repo and install required packages
apt-get update
apt-get install -y cobbler debmirror isc-dhcp-server ipcalc tftpd
# Get network information for the given IP
NETMASK=$(ifconfig | grep $IP_ADDR | cut -d ':' -f 4)
NETDEVICE=$(ifconfig | grep -B1 $IP_ADDR | head -1 | awk '{print $1}')
NETWORK=$(ipcalc ${IP_ADDR}/${NETMASK} | grep Network | cut -d '/' -f 1 | awk '{print $2}')
NETMASK_HALF=$(expr $(ipcalc ${IP_ADDR}/${NETMASK} | grep Network | cut -d '/' -f 2 | awk '{print $1}') + 1)
DHCP_MIN_HOST=$(ipcalc ${IP_ADDR}/${NETMASK_HALF} | grep Broadcast | awk '{print $2}')
DHCP_MAX_HOST=$(ipcalc ${IP_ADDR}/${NETMASK} | grep HostMax | awk '{print $2}')
# Move Cobbler Apache config to the right place
cp /etc/apache2/conf.d/cobbler.conf /etc/apache2/conf-available/
cp /etc/apache2/conf.d/cobbler_web.conf /etc/apache2/conf-available/
# Enable the above config
a2enconf cobbler cobbler_web
# Enable Proxy modules
a2enmod proxy
a2enmod proxy_http
# Generate a new django secret key
SECRET_KEY=$(python -c 'import re;from random import choice; import sys; sys.stdout.write(re.escape("".join([choice("abcdefghijklmnopqrstuvwxyz0123456789^&*(-_=+)") for i in range(100)])))')
sed -i "s/^SECRET_KEY = .*/SECRET_KEY = '${SECRET_KEY}'/" /usr/share/cobbler/web/
# Change IP and manage_dhcp in cobbler settings
sed -i "s/127\.0\.0\.1/${IP_ADDR}/" /etc/cobbler/settings
sed -i "s/manage_dhcp: .*/manage_dhcp: 1/" /etc/cobbler/settings
# Change DHCP server template to match the given network configuration
sed -i "s/subnet .* netmask .* {/subnet $NETWORK netmask $NETMASK {/" /etc/cobbler/dhcp.template
sed -i "/option routers;/d" /etc/cobbler/dhcp.template
sed -i "/option domain-name-servers;/d" /etc/cobbler/dhcp.template
sed -i "s/range dynamic-bootp .*/range dynamic-bootp ${DHCP_MIN_HOST} ${DHCP_MAX_HOST};/" /etc/cobbler/dhcp.template
# Change dhcp-server default listening interface
sed -i "s/INTERFACES=.*/INTERFACES=\"${NETDEVICE}\"/" /etc/default/isc-dhcp-server
# Fix TFTP server arguments in cobbler template to enable it to work on Ubuntu
sed -i "s/server_args .*/server_args = -s \$args/" /etc/cobbler/tftpd.template
# Fix Apache conf to match 2.4 configuration
sed -i "/Order allow,deny/d" /etc/apache2/conf-enabled/cobbler*.conf
sed -i "s/Allow from all/Require all granted/" /etc/apache2/conf-enabled/cobbler*.conf
# Permission Workarounds
mkdir /tftpboot
chown www-data /var/lib/cobbler/webui_sessions
# Restart services
service cobblerd restart
service apache2 restart
# Get Loaders
cobbler get-loaders
# Update Cobbler Signatures
cobbler signature update
# Restart services again and configure autostart
service cobblerd restart
service apache2 restart
service xinetd restart
update-rc.d cobblerd defaults
# Sync cobbler configuration
cobbler sync

This comment has been minimized.

Copy link

mschnell42 commented May 19, 2016

I just wanted to thank you for posting this script.
For the last couple of days, I've been puzzling thru any cobbler install on any main stream Linux distro. Your script was the first batch of set up instructions that actually worked as indicated. (And instructions incorporated in a set up script to boot!)
As it happens, I used Ubuntu 14.04; not 14.10. But it (not surprisingly) worked fine.
Thanks again for the post and the help.

Cheers... Mark


This comment has been minimized.

Copy link

amulheirn commented Oct 2, 2017

Hi - I've been trying to use the repo that is specified in this script, but it is now empty and fails:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.