--- # Copyright 2018, Rackspace US, Inc. # # 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: Gather variables for each operating system include_vars: "{{ item }}" with_first_found: - "{{ ansible_distribution | lower }}-{{ ansible_distribution_version | lower }}.yml" - "{{ ansible_distribution | lower }}-{{ ansible_distribution_major_version | lower }}.yml" - "{{ ansible_os_family | lower }}-{{ ansible_distribution_major_version | lower }}.yml" - "{{ ansible_distribution | lower }}.yml" - "{{ ansible_os_family | lower }}-{{ ansible_distribution_version.split('.')[0] }}.yml" - "{{ ansible_os_family | lower }}.yml" tags: - always - name: Ensure beat is installed package: name: "{{ journalbeat_distro_packages }}" state: "{{ elk_package_state | default('present') }}" update_cache: "{{ (ansible_pkg_mgr == 'apt') | ternary('yes', omit) }}" register: _package_task until: _package_task is success retries: 3 delay: 2 notify: - Enable and restart journalbeat tags: - package_install - name: create the system group group: name: "journalbeat" state: "present" system: "yes" - name: Create the journalbeat user user: name: "journalbeat" group: "journalbeat" comment: "journalbeat user" shell: "/bin/false" createhome: "yes" home: "/usr/share/journalbeat" - name: Create journalbeat data path file: path: "{{ item }}" state: directory owner: "journalbeat" group: "journalbeat" mode: "0755" with_items: - "/usr/share/journalbeat" - "/var/lib/journalbeat" - "/etc/journalbeat" - name: Install journalbeat shell: /opt/go1.10.1/go/bin/go get -v github.com/mheese/journalbeat args: creates: /usr/local/bin/journalbeat environment: PATH: "{{ ansible_env.PATH }}:/opt/go1.10.1/go/bin" GOPATH: /usr/local notify: - Enable and restart journalbeat - name: Create journalbeat systemd service config dir file: path: "/etc/systemd/system/journalbeat.service.d" state: "directory" group: "root" owner: "root" mode: "0755" - name: Apply systemd options template: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "0644" with_items: - src: "systemd.general-overrides.conf.j2" dest: "/etc/systemd/system/journalbeat.service.d/journalbeat-overrides.conf" notify: - Enable and restart journalbeat - name: Drop journalbeat conf files template: src: "{{ item.src }}" dest: "{{ item.dest }}" mode: "0644" with_items: - src: "journalbeat.yml.j2" dest: "/etc/journalbeat/journalbeat.yml" notify: - Enable and restart journalbeat - name: Run the systemd service role include_role: name: systemd_service private: true vars: systemd_service_enabled: "{{ ((elk_package_state | default('present')) != 'absent') | ternary(true, false) }}" systemd_service_restart_changed: false systemd_services: - service_name: "journalbeat" execstarts: - /usr/local/bin/journalbeat -c /etc/journalbeat/journalbeat.yml -path.home /usr/share/journalbeat -path.config /etc/journalbeat -path.data /var/lib/journalbeat -path.logs /var/log/beats config_overrides: Service: EnvironmentFile: "-/etc/default/go1.10.1" Unit: Documentation: https://github.com/mheese/journalbeat/blob/master/README.md Wants: network-online.target After: network-online.target - include_tasks: journalbeat_setup.yml tags: - setup - name: Force beat handlers meta: flush_handlers - name: set journalbeat service state (upstart) service: name: "journalbeat" state: "{{ journalbeat_service_state }}" enabled: "{{ journalbeat_service_state in ['running', 'started', 'restarted'] }}" when: - ansible_service_mgr == 'upstart' - journalbeat_service_state in ['started', 'stopped'] - name: set journalbeat service state (systemd) systemd: name: "journalbeat" state: "{{ journalbeat_service_state }}" enabled: "{{ journalbeat_service_state in ['running', 'started', 'restarted'] }}" when: - ansible_service_mgr == 'systemd' - journalbeat_service_state in ['started', 'stopped']