This playbook deploys Cobbler in Docker using Ansible. Note: Cobbler requires PXE boot and DHCP/TFTP services, which have limitations in containerized environments. This setup is suitable for testing and lab environments.
---
- name: Deploy Cobbler in Docker
hosts: cobbler_docker
become: true
vars:
cobbler_workspace: /opt/cobbler
cobbler_version: "3.3.7"
tasks:
- name: Ensure Docker is installed
package:
name: docker.io
state: present
- name: Enable and start Docker service
systemd:
name: docker
state: started
enabled: true
- name: Create Cobbler workspace directory
file:
path: "{{ cobbler_workspace }}"
state: directory
mode: '0755'
- name: Create Docker Compose file for Cobbler
copy:
dest: "{{ cobbler_workspace }}/docker-compose.yml"
content: |
version: '3.8'
services:
cobbler:
image: cobbler/cobbler:{{ cobbler_version }}
container_name: cobbler-server
privileged: true
network_mode: host
environment:
- COBBLER_SERVER=192.0.2.10
- NEXT_SERVER=192.0.2.10
volumes:
- ./data:/var/lib/cobbler
- ./tftpboot:/var/lib/tftpboot
- ./www:/var/www/cobbler
restart: unless-stopped
# Note: Cobbler requires DHCP/TFTP services
# For production, consider running on bare metal or VMs
mode: '0644'
- name: Create data directories
file:
path: "{{ cobbler_workspace }}/{{ item }}"
state: directory
mode: '0755'
loop:
- data
- tftpboot
- www
- name: Deploy Cobbler container
community.docker.docker_compose_v2:
project_src: "{{ cobbler_workspace }}"
state: present
- name: Wait for Cobbler to be ready
command: docker exec cobbler-server cobbler check
register: cobbler_check
until: cobbler_check.rc == 0
retries: 30
delay: 10
changed_when: false
- name: Display Cobbler status
debug:
msg: "Cobbler server is running. Access web UI at http://{{ inventory_hostname }}/cobbler_web"
ansible-playbook -i inventory.ini cobbler-docker.yml