# requires: # - oraclejdk # - elasticsearch --- - name: Ensure app apt dependencies are installed apt: pkg={{ item }} state=installed with_items: - redis-server - name: Ensure {{ logstash_app_dir }} exists file: path={{ logstash_app_dir }} state=directory owner=root group=root mode=0755 - name: Ensure subdirectories exist file: path={{ logstash_app_dir }}/{{ item }} owner=root group=root mode=0755 state=directory with_items: - bin - etc - share - name: ensure logstash config is in place template: src=logstash.conf.j2 dest={{ logstash_app_dir }}/etc/logstash.conf owner=root group=root mode=0644 notify: restart logstash - name: ensure logstash upstart job is in place template: src=logstash.upstart.conf.j2 dest=/etc/init/logstash.conf owner=root group=root mode=0755 - name: ensure logstash has a logging dir at {{ logstash_log_dir }} file: path={{ logstash_log_dir }} owner=root group=root mode=0755 state=directory - name: ensure we have the specified logstash release get_url: url={{ logstash_url }} dest={{ logstash_app_dir }}/share/{{ logstash_file }} - name: ensure symlink with no version exists at {{ logstash_app_dir }}/share/logstash.jar file: src={{ logstash_app_dir }}/share/${logstash_file} dest={{ logstash_app_dir }}/share/logstash.jar state=link - name: start logstash action: service name=logstash state=started enabled=yes - name: Ensure we are running wait_for: port={{ logstash_syslog_port }} host=localhost timeout=60 - name: Copy logstash es index template copy: src=template_logstash.json dest=/etc/elasticsearch/template_logstash.json - name: Enable logstash es index template shell: chdir=/etc/elasticsearch executable=/bin/bash curl -XPUT 'http://localhost:9200/_template/template_logstash' -d @template_logstash.json - name: Install python requirements pip: name={{ item }} state=present with_items: logstash_python_requirements - name: Checkout logstash rotation scripts git: repo={{ logstash_scripts_repo }} dest={{ logstash_app_dir }}/share/logstash-elasticsearch-scripts when: LOGSTASH_ROTATE|bool - name: Setup cron to run rotation cron: > user=root name="Elasticsearch logstash index rotation" hour={{ logstash_rotate_cron.hour }} minute={{ logstash_rotate_cron.minute }} job="/usr/bin/python {{ logstash_app_dir }}/share/logstash-elasticsearch-scripts/logstash_index_cleaner.py -d {{ LOGSTASH_DAYS_TO_KEEP }} > {{ logstash_log_dir }}/rotation_cron" when: LOGSTASH_ROTATE|bool - name: Setup cron to run rotation cron: > user=root name="Elasticsearch logstash index optimization" hour={{ logstash_optimize_cron.hour }} minute={{ logstash_optimize_cron.minute }} job="/usr/bin/python {{ logstash_app_dir }}/share/logstash-elasticsearch-scripts/logstash_index_optimize.py -d {{ LOGSTASH_DAYS_TO_KEEP }} > {{ logstash_log_dir }}/optimize_cron" when: LOGSTASH_ROTATE|bool