# create a new koji hub server system
# NOTE: should be used with --limit most of the time
# NOTE: most of these vars_path come from group_vars/koji-hub or from hostvars

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

# Once the instance exists, configure it.

- name: make koji_hub server system
  hosts: koji-stg:koji
  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:
    - include_vars: dir=/srv/web/infra/ansible/vars/all/ ignore_files=README
      tags: always
    - import_tasks: "{{ tasks_path }}/osbs_certs.yml"
    - import_tasks: "{{ tasks_path }}/yumrepos.yml"

  roles:
  - base
  - rkhunter
  - nagios_client
  - hosts
  - fas_client
  - builder_repo
  - collectd/base
  - apache
  - fedmsg/base
  - role: keytab/service
    service: kojira
    host: "koji{{env_suffix}}.fedoraproject.org"
  - role: keytab/service
    service: koji-gc
    owner_user: apache
    host: "koji{{env_suffix}}.fedoraproject.org"
  - koji_hub
  - role: keytab/service
    service: HTTP
    owner_user: apache
    host: "koji{{env_suffix}}.fedoraproject.org"
    when: "fedmsg_koji_instance == 'primary'"
  - role: keytab/service
    service: HTTP
    owner_user: apache
    host: "{{fedmsg_koji_instance}}.koji.fedoraproject.org"
    when: "fedmsg_koji_instance != 'primary'"
  - role: keytab/service
    service: shadow
    owner_user: koji_shadow
    host: "koji{{env_suffix}}.fedoraproject.org"
    when: "fedmsg_koji_instance != 'primary'"
  - { role: nfs/server, when: env == "staging" }
  - { role: keepalived, when: env == "production" and inventory_hostname.startswith('koji') }
  - role: nfs/client
    mnt_dir: '/mnt/fedora_koji'
    nfs_src_dir: 'fedora_koji'
    when: env == 'production' and inventory_hostname.startswith('koji')
  - role: nfs/client
    mnt_dir: '/mnt/koji'
    nfs_src_dir: 'fedora_s390/data'
    when: env == 'production' and inventory_hostname.startswith('s390')
  - role: nfs/client
    mnt_dir: '/mnt/koji'
    nfs_src_dir: 'fedora_ppc/data'
    when: env == 'production' and inventory_hostname.startswith('ppc')
  - role: nfs/client
    mnt_dir: '/mnt/koji'
    nfs_src_dir: 'fedora_arm/data'
    when: env == 'production' and inventory_hostname.startswith('arm')
    # In staging, we mount fedora_koji as read only (see nfs_mount_opts)
  - role: nfs/client
    mnt_dir: '/mnt/fedora_koji_prod'
    nfs_src_dir: 'fedora_koji'
    when: env == 'staging' and inventory_hostname.startswith('koji')
  - sudo
  - role: rabbit/user
    username: "koji{{ env_suffix }}"
    when: env == 'staging'

  tasks:
  - import_tasks: "{{ tasks_path }}/2fa_client.yml"
  - import_tasks: "{{ tasks_path }}/motd.yml"

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

- name: configure sshfs target on koji01
  hosts: koji01.phx2.fedoraproject.org:koji01.stg.phx2.fedoraproject.org
  tags:
    - sshfs
  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

  tasks:
  - name: Put public sshfs key in place
    authorized_key: user="root"
                    key="{{ lookup('file', '{{ private }}/files/releng/sshkeys/primary-s390x-sshfs' + '-staging.pub' if env == 'staging' else '{{ private }}/files/releng/sshkeys/primary-s390x-sshfs.pub') }}"
                    state=present
                    key_options='command="internal-sftp",from="{{ '10.16.0.25' if env == 'staging' else '10.16.0.11' }}",restrict'
    tags:
    - sshfs

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