Last active
February 21, 2020 09:25
-
-
Save hbokh/f1f7414c27432c345b31e4b1bd0a0855 to your computer and use it in GitHub Desktop.
Terraform Docker provider to run Cobbler 3.x
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
set -e | |
# This script assumes Fedora 31 is being used. | |
# It will create a standard Cobbler environment that can be used for acceptance testing. | |
# With this enviornment spun up, the config should be: | |
# COBBLER_URL=http://127.0.0.1:25151 | |
# COBBLER_USERNAME=cobbler | |
# COBBLER_PASSWORD=cobbler | |
sudo dnf update -y | |
sudo dnf install -y make automake gcc gcc-c++ git wget | |
cd | |
echo "export PATH=$PATH:$HOME/terraform:$HOME/go/bin" >> ~/.bashrc | |
export PATH=$PATH:$HOME/terraform:$HOME/go/bin | |
# Give me Golang 1.13 | |
sudo wget -O /usr/local/bin/gimme https://raw.githubusercontent.com/travis-ci/gimme/master/gimme | |
sudo chmod +x /usr/local/bin/gimme | |
/usr/local/bin/gimme 1.13 >> ~/.bashrc | |
eval "$(/usr/local/bin/gimme 1.13)" | |
mkdir ~/go | |
echo "export GOPATH=$HOME/go" >> ~/.bashrc | |
echo "export GO113MODULE=on" >> ~/.bashrc | |
export GOPATH=$HOME/go | |
source ~/.bashrc | |
git clone https://github.com/wearespindle/terraform-provider-cobbler | |
# Cobbler | |
sudo dnf install -y cobbler cobbler-web debmirror dnsmasq | |
sudo tee /etc/cobbler/modules.conf <<EOF | |
[authentication] | |
module = authentication.configfile | |
[authorization] | |
module = authorization.allowall | |
[dns] | |
module = managers.dnsmasq | |
[dhcp] | |
module = managers.dnsmasq | |
[tftpd] | |
module = managers.in_tftpd | |
EOF | |
sudo tee /etc/cobbler/dnsmasq.template <<EOF | |
dhcp-range = 192.168.255.200,192.168.255.250 | |
server = 8.8.8.8 | |
read-ethers | |
addn-hosts = /var/lib/cobbler/cobbler_hosts | |
dhcp-option=3,\$next_server | |
dhcp-lease-max=1000 | |
dhcp-authoritative | |
dhcp-boot=pxelinux.0 | |
dhcp-boot=net:normalarch,pxelinux.0 | |
dhcp-boot=net:ia64,\$elilo | |
\$insert_cobbler_system_definitions | |
EOF | |
sudo sed -i -e 's/^manage_dhcp: 0/manage_dhcp: 1/' /etc/cobbler/settings | |
sudo sed -i -e 's/^manage_dns: 0/manage_dns: 1/' /etc/cobbler/settings | |
sudo sed -i -e 's/^next_server:.*/next_server: 127.0.0.1/' /etc/cobbler/settings | |
sudo sed -i -e 's/^server:.*/server: 127.0.0.1/' /etc/cobbler/settings | |
# Makt HTTPd listen on port 80 | |
sudo sed -i s/443/80/g /etc/httpd/conf.d/cobbler_web.conf | |
# User: cobbler / Pass: cobbler | |
sudo tee /etc/cobbler/users.digest <<EOF | |
cobbler:Cobbler:a2d6bae81669d707b72c0bd9806e01f3 | |
EOF | |
# !! NOTE !! | |
# The systemctl commands below will fail unless we run a systemd enabled container like this: | |
# docker run -d --privileged -v /sys/fs/cgroup:/sys/fs/cgroup:ro --name cobbler fedora:31 /usr/lib/systemd/systemd --system | |
sudo systemctl daemon-reload | |
sudo systemctl restart httpd | |
sudo systemctl stop cobblerd | |
sleep 2 | |
sudo systemctl start cobblerd | |
sleep 5 | |
sudo cobbler get-loaders | |
sudo cobbler sync | |
# Import an Ubuntu Bionic (18.04) netboot distro (size: 76M) | |
cd /tmp | |
wget http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-amd64/current/images/netboot/mini.iso | |
sudo mount -o loop mini.iso /mnt | |
sudo cobbler import --name Ubuntu-18.04 --breed ubuntu --path /mnt | |
# Create a file with the cobbler credential environment variables | |
cat > ~/cobblerc <<EOF | |
export COBBLER_USERNAME="cobbler" | |
export COBBLER_PASSWORD="cobbler" | |
export COBBLER_URL="http://localhost:25151" | |
EOF |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Configure Docker provider and connect to the local Docker socket | |
provider "docker" { | |
host = "unix:///var/run/docker.sock" | |
} | |
# Use cobbler:f31 (based on Fedora 31) | |
resource "docker_image" "cobbler" { | |
name = "cobbler:f31" | |
} | |
# Custom Fedora 31 container to run Cobbler 3.x in | |
resource "docker_container" "cobbler" { | |
image = "cobbler:f31" | |
name = "cobbler-f31" | |
privileged = true | |
must_run = true | |
volumes { | |
container_path = "/sys/fs/cgroup" | |
host_path = "/sys/fs/cgroup" | |
read_only = true | |
} | |
ports { | |
internal = 80 | |
external = 80 | |
} | |
upload { | |
source = "${path.module}/deploy.sh" | |
file = "/deploy.sh" | |
executable = true | |
} | |
entrypoint = ["/usr/lib/systemd/systemd", "--system"] | |
#command = ["/bin/bash", "-x", "/deploy.sh"] | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment