---
# create a new taskotron server
# NOTE: make sure there is room/space for this server on the vmhost
# NOTE: most of these vars_path come from group_vars/mirrorlist or from hostvars

- import_playbook: "/srv/web/infra/ansible/playbooks/include/virt-create.yml myhosts=taskotron-dev:taskotron-stg:taskotron-prod"

- name: make the box be real
  hosts: taskotron-dev:taskotron-stg:taskotron-prod
  user: root
  gather_facts: True

  vars_files:
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml

  pre_tasks:
  - import_tasks: "{{ tasks_path }}/yumrepos.yml"

  roles:
   - { role: base, tags: ['base'] }
   - { role: rkhunter, tags: ['rkhunter'] }
   - { role: nagios_client, tags: ['nagios_client'] }
   - { role: hosts, tags: ['hosts']}
   - { role: fas_client, tags: ['fas_client'] }
   - { role: collectd/base, tags: ['collectd_base'] }
   - { role: dnf-automatic, tags: ['dnfautomatic'] }
   - { role: sudo, tags: ['sudo'] }
   - { role: openvpn/client,
       when: deployment_type == "prod", tags: ['openvpn_client'] }
   - apache
   - { role: fedmsg/base }

  tasks:
  # this is how you include other task lists
  - import_tasks: "{{ tasks_path }}/2fa_client.yml"
  - import_tasks: "{{ tasks_path }}/motd.yml"

  handlers:
   - import_tasks: "{{ handlers_path }}/restart_services.yml"

- name: configure taskotron master
  hosts: taskotron-dev:taskotron-stg:taskotron-prod
  user: root
  gather_facts: True

  vars_files:
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml

  roles:
   - { role: nfs/client, mnt_dir: '/srv/taskotron/',  nfs_src_dir: 'fedora_taskotron_dev', nfs_mount_opts: 'rw,hard,bg,intr,noatime,nodev,nosuid,nfsvers=3,sec=sys', when: deployment_type == 'dev' }
   - { role: nfs/client, mnt_dir: '/srv/taskotron/',  nfs_src_dir: 'fedora_taskotron_stg', nfs_mount_opts: 'rw,hard,bg,intr,noatime,nodev,nosuid,nfsvers=3,sec=sys', when: deployment_type == 'stg' }
   - { role: nfs/client, mnt_dir: '/srv/taskotron/',  nfs_src_dir: 'fedora_taskotron_prod', nfs_mount_opts: 'rw,hard,bg,intr,noatime,nodev,nosuid,nfsvers=3,sec=sys', when: deployment_type == 'prod' }
   - { role: taskotron/grokmirror, tags: ['grokmirror'] }
#   - { role: taskotron/cgit, tags: ['cgit'] }
   - { role: taskotron/buildmaster, tags: ['buildmaster'] }
   - { role: taskotron/buildmaster-configure, tags: ['buildmasterconfig'] }
   - { role: taskotron/taskotron-trigger, tags: ['trigger'] }
   - { role: taskotron/taskotron-frontend, tags: ['frontend'] }
   - { role: taskotron/taskotron-master, tags: ['taskotronmaster'] }

  handlers:
   - import_tasks: "{{ handlers_path }}/restart_services.yml"

- name: configure standalone taskotron host
  hosts: taskotron-dev
  user: root
  gather_facts: True

  vars_files:
   - /srv/web/infra/ansible/vars/global.yml
   - "/srv/private/ansible/vars.yml"
   - /srv/web/infra/ansible/vars/{{ ansible_distribution }}.yml

  roles:
   - { role: taskotron/taskotron-proxy, tags: ['taskotronproxy'] }
   - { role: taskotron/ssl-taskotron, tags: ['ssltaskotron'] }
   - { role: letsencrypt, site_name: 'taskotron-dev.fedoraproject.org' }

  handlers:
   - import_tasks: "{{ handlers_path }}/restart_services.yml"
