---
- block:
    - name: Check if Service mongod Exists
      stat: path=/etc/init/mongod
      register: service_mongod_status
      tags: mongodb

    - name: Ensure mongod is stopped and disabled
      service: name=mongod state=stopped enabled=no
      when:
        - service_mongod_status.stat.exists
        - mongodb_start_server is defined
        - mongodb_start_server == 'no'
        - mongodb_install_conf

  when: mongodb_install_server
  tags: mongodb 

- block:
    - name: Install the mongodb apt key
      #apt_key: id=7F0CEB10 state=present
      raw: apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
      when: mongodb_install_from_external_repo

    - name: Remove the old mongo apt repositories
      apt_repository: repo="{{ item }}" state=absent
      with_items:
        - "deb http://repo.mongodb.org/apt/ubuntu {{ ansible_distribution_release }}/mongodb-org/3.0 multiverse"
        - "deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen"
      when: mongodb_upgrade_from_older_version

    - name: Install the mongodb repository
      apt_repository: repo="deb http://repo.mongodb.org/apt/ubuntu {{ ansible_distribution_release }}/mongodb-org/3.2 multiverse" update_cache=yes state=present

  when: mongodb_install_from_external_repo 
  tags: [ 'mongodb', 'mongodb_client', 'mongodb_repo' ]

- block:
    - name: Install the mongodb 3.2 configuration
      template: src=mongod-3.2.conf.j2 dest=/etc/mongod.conf owner=root group=root mode=0444
      when: mongodb_install_conf
      notify: Restart mongodb

    - name: We are upgrading, install the latest version of the mongodb packages
      apt: pkg={{ item }} state=latest
      with_items: '{{ mongodb_server_pkgs }}'
      when:
        - mongodb_install_from_external_repo
        - mongodb_install_packages
        - mongodb_upgrade_from_older_version

    - name: Install the mongodb packages
      apt: pkg={{ item }} state={{ mongodb_pkg_state }}
      with_items: '{{ mongodb_server_pkgs }}'
      when:
        - mongodb_install_from_external_repo
        - mongodb_install_packages

    - name: Create the mongodb log directory
      file: dest={{ mongodb_logdir }} state=directory owner={{ mongodb_user }} group={{ mongodb_group }} mode=0755
      when: mongodb_install_conf

    - name: Create the mongodb db directory
      file: dest={{ mongodb_dbpath }} state=directory owner={{ mongodb_user }} group={{ mongodb_group }} mode=0755
      when: mongodb_install_conf

    - name: Install the mongodb defaults file
      template: src=mongod-default.j2 dest=/etc/default/mongod owner=root group=root mode=0444
      when: mongodb_install_conf
      notify: Restart mongodb

    - name: Install the cron job that manages log files rotation
      template: src=mongo_log_rotate.sh.j2 dest=/etc/cron.daily/mongo_log_rotate owner=root group=root mode=0555
      when: not mongodb_systemlog_external_logrotate

    - name: Ensure mongodb is started and enabled
      service: name=mongod state=started enabled=yes
      when: ( mongodb_start_server is defined ) and ( mongodb_start_server == 'yes' ) and ( mongodb_install_conf )

  when: mongodb_install_server
  tags: mongodb

- block:
    - name: Install the mongodb client packages
      apt: pkg={{ item }} state={{ mongodb_pkg_state }}
      with_items: '{{ mongodb_client_pkgs }}'

  when: not mongodb_install_server
  tags: [ 'mongodb', 'mongodb_client' ]