This guide installs Cobbler, enables core services, and applies baseline configuration for PXE provisioning.
settings.yamlcobbler check to validate initial setup- name: Install Cobbler on Debian family
hosts: cobbler_debian
become: true
vars:
cobbler_server_ip: "192.0.2.10"
cobbler_next_server_ip: "192.0.2.10"
cobbler_manage_dhcp: "true"
cobbler_debian_packages:
- cobbler
- tftpd-hpa
- isc-dhcp-server
- rsync
tasks:
- name: Install Cobbler packages
ansible.builtin.apt:
update_cache: true
name: "{{ cobbler_debian_packages }}"
state: present
- name: Configure Cobbler server IP
ansible.builtin.lineinfile:
path: /etc/cobbler/settings.yaml
regexp: '^server:'
line: "server: {{ cobbler_server_ip }}"
backup: true
- name: Configure Cobbler next_server IP
ansible.builtin.lineinfile:
path: /etc/cobbler/settings.yaml
regexp: '^next_server:'
line: "next_server: {{ cobbler_next_server_ip }}"
- name: Configure Cobbler DHCP management
ansible.builtin.lineinfile:
path: /etc/cobbler/settings.yaml
regexp: '^manage_dhcp:'
line: "manage_dhcp: {{ cobbler_manage_dhcp }}"
- name: Enable and start Cobbler service
ansible.builtin.systemd:
name: cobblerd
enabled: true
state: started
- name: Validate Cobbler setup
ansible.builtin.command: cobbler check
changed_when: false
- name: Install Cobbler on RHEL family
hosts: cobbler_rhel
become: true
vars:
cobbler_server_ip: "192.0.2.10"
cobbler_next_server_ip: "192.0.2.10"
cobbler_manage_dhcp: "true"
cobbler_rhel_packages:
- cobbler
- cobbler-web
- tftp-server
- dhcp-server
- httpd
- rsync
tasks:
- name: Install Cobbler packages
ansible.builtin.dnf:
name: "{{ cobbler_rhel_packages }}"
state: present
- name: Configure Cobbler server IP
ansible.builtin.lineinfile:
path: /etc/cobbler/settings.yaml
regexp: '^server:'
line: "server: {{ cobbler_server_ip }}"
backup: true
- name: Configure Cobbler next_server IP
ansible.builtin.lineinfile:
path: /etc/cobbler/settings.yaml
regexp: '^next_server:'
line: "next_server: {{ cobbler_next_server_ip }}"
- name: Configure Cobbler DHCP management
ansible.builtin.lineinfile:
path: /etc/cobbler/settings.yaml
regexp: '^manage_dhcp:'
line: "manage_dhcp: {{ cobbler_manage_dhcp }}"
- name: Enable and start Cobbler and Apache
ansible.builtin.systemd:
name: "{{ item }}"
enabled: true
state: started
loop:
- cobblerd
- httpd
- name: Validate Cobbler setup
ansible.builtin.command: cobbler check
changed_when: false
ansible-playbook -i inventory.ini cobbler-install.yml
cobbler_debian.cobbler_debian_packages in inventory/group vars when needed.