---
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

- name: Deploy DHCP
  hosts: dhcp_hosts
  gather_facts: "{{ gather_facts | default(true) }}"
  pre_tasks:
    - name: Gather variables for each operating system
      include_vars: "{{ item }}"
      with_first_found:
        - "{{ playbook_dir }}/vars/{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml"
        - "{{ playbook_dir }}/vars/{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
        - "{{ playbook_dir }}/vars/{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml"
        - "{{ playbook_dir }}/vars/{{ ansible_distribution | lower }}.yml"
        - "{{ playbook_dir }}/vars/{{ ansible_os_family | lower }}.yml"
      tags:
        - always

    - name: Install all required packages for dhcpd_install
      package:
        pkg: "{{ item }}"
        state: "latest"
        update_cache: yes
        cache_valid_time: 600
      with_items: "{{ default_dhcp_distro_packages }}"

    - name: Enable services
      systemd:
        name: "{{ item }}"
        enabled: yes
      with_items: "{{ default_dhcp_distro_packages }}"

  tasks:
    - name: Create a template in /etc/dhcp/dhcpd.conf
      template:
        src: templates/dhcp/dhcpd.conf.j2
        dest: /etc/dhcp/dhcpd.conf
        mode: 0644
        owner: root
        group: root
      notify: restart dhcpd

    - name: Create a template in /etc/dhcp/dhcpd.conf
      template:
        src: templates/dhcp/isc-dhcp-server.j2
        dest: /etc/default/isc-dhcp-server
        mode: 0644
        owner: root
        group: root
      notify: restart dhcpd

  environment: "{{ deployment_environment_variables | default({}) }}"

  handlers:
    - name: restart dhcpd
      systemd:
        name: "{{ item }}"
        state: restarted
      with_items: "{{ default_dhcp_distro_packages }}"

  tags:
    - deploy-dhcpd