--- - name: Install dependencies packages ansible.builtin.package: name: - apt-transport-https - default-jre - gpg tags: logstash - name: Add repository key ansible.builtin.get_url: url: https://artifacts.elastic.co/GPG-KEY-elasticsearch dest: /etc/apt/keyrings/elastic.asc checksum: sha256:db52809c5f6b27f9c2bed45cb43e398c659275f3d35305653c6750a0db90f5eb tags: logstash - name: Add repository ansible.builtin.apt_repository: repo: > deb [signed-by=/etc/apt/keyrings/elastic.asc] https://artifacts.elastic.co/packages/{{ logstash_major_version }}.x/apt stable main filename: elastic tags: logstash - name: Install package ansible.builtin.package: name: - logstash tags: logstash - name: Copy general config file ansible.builtin.copy: content: "{{ logstash_full_config | to_yaml }}" dest: /etc/logstash/logstash.yml owner: root group: root mode: 0644 notify: Restart logstash tags: logstash - name: Create patterns directory ansible.builtin.file: path: /etc/logstash/patterns owner: root group: root mode: 0755 state: directory tags: logstash - name: Copy patterns files ansible.builtin.copy: content: "{{ item.value }}" dest: "/etc/logstash/patterns/{{ item.key }}.conf" owner: root group: root mode: 0644 loop: "{{ logstash_patterns | dict2items }}" loop_control: label: "{{ item.key }}" tags: logstash - name: Copy input, output and filter files ansible.builtin.template: src: "{{ item }}.conf.j2" dest: "/etc/logstash/conf.d/{{ item }}.conf" owner: root group: root mode: 0644 validate: /usr/share/logstash/bin/logstash -t -f %s loop: - input - output - filter notify: Restart logstash tags: logstash - name: Install plugins community.general.logstash_plugin: name: "{{ item.name }}" state: "{{ item.state | default('present') }}" loop: "{{ logstash_plugins }}" tags: logstash - name: Enable and start service ansible.builtin.service: name: logstash state: started enabled: true tags: logstash