#  Copyright 2021 Dell Inc. or its subsidiaries. All Rights Reserved.
#
#  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: Initial cobbler setup
  hosts: localhost
  connection: local
  gather_facts: false
  vars:
    name_iso: CentOS7
    distro_name: CentOS7-x86_64
  tasks:
  - name: Inside cobbler container
    debug:
      msg: "Hiii! I am cobbler"

  - name: Make
    command: make rpms
    args:
      chdir: /cobbler
    changed_when: false

  - name: Install cobbler and cobbler-web
    command: dnf install -y cobbler-3.2.1-1.el8.noarch.rpm cobbler-web-3.2.1-1.el8.noarch.rpm
    args:
      chdir: /cobbler/rpm-build
    changed_when: false
  
  - name: Run script
    shell: sh ./mkgrub.sh
    args:
      chdir: /usr/share/cobbler/bin
    changed_when: false

  - name: Add load_wsgi
    blockinfile:
      state: present
      insertbefore: '# LoadModule foo_module modules/mod_foo.so'
      dest: /etc/httpd/conf/httpd.conf
      block: |
        LoadModule wsgi_module modules/mod_wsgi_python3.so
        LoadModule proxy_module modules/mod_proxy.so

  - name: Cobbler web
    blockinfile:
      state: present
      insertafter: '^<VirtualHost '
      path: /etc/httpd/conf.d/cobbler_web.conf
      block: |
         ServerName localhost
         SSLEngine on
         SSLCipherSuite PROFILE=SYSTEM
         SSLCertificateFile /etc/pki/tls/certs/localhost.crt
         SSLCertificateKeyFile /etc/pki/tls/private/localhost.key

  - name: Add settings to http
    shell: echo "LoadModule wsgi_module modules/mod_wsgi_python3.so" >/etc/httpd/conf.d/wsgi.conf
    changed_when: false

  - name: Enable cobbler
    command: systemctl enable {{ item }}
    with_items:
      - cobblerd
      - tftp
    changed_when: false

  - name: Restart httpd
    service:
      name: "{{ item }}"
      state: restarted
    loop:
      - httpd
      - cobblerd

  - name: Start services
    service:
      name: "{{ item }}"
      state: started
    loop:
      - cobblerd
      - tftp

  - name: Adding curl
    shell: export PATH="/usr/bin/curl:$PATH"

  - name: Run import command
    command: cobbler import --arch=x86_64 --path=/mnt --name="{{ name_iso }}"
    changed_when: false

  - name: Kickstart profile
    copy:
      src: "/var/lib/cobbler/templates/centos7.ks"
      dest: "/var/lib/cobbler/templates/sample.ks"
      mode: 0775
    tags: install

  - name: Syncing of cobbler
    command: cobbler sync
    changed_when: false 

  - name: Restart cobbler
    service:
      name: cobblerd
      state: restarted

  - name: Restart httpdd
    service:
      name: httpd
      state: restarted

  - name: Restart xinetd
    service:
      name: xinetd
      state: restarted

  - name: Restart dhcpd
    service:
      name: dhcpd
      state: restarted

  - name: Fetch ansible-playbook path
    command: whereis ansible-playbook
    changed_when: false
    register: ansible_playbook_path

  - name: Add tftp cron job
    cron:
      name: Start tftp service
      minute: "*"
      job: "{{ ansible_playbook_path.stdout.split(' ')[1] }} /root/tftp.yml"

  - name: Add inventory cron job
    cron:
      name: Create inventory
      minute: "*/5"
      job: "{{ ansible_playbook_path.stdout.split(' ')[1] }} /root/inventory_creation.yml"