139 lines
3.7 KiB
YAML
139 lines
3.7 KiB
YAML
---
|
|
# Installs and configures Fluent Bit to receive syslog (RFC 3164) on UDP/TCP
|
|
# port 514 and forward to the local OpenSearch instance.
|
|
|
|
- name: Ensure /etc/apt/keyrings exists
|
|
ansible.builtin.file:
|
|
path: /etc/apt/keyrings
|
|
state: directory
|
|
owner: root
|
|
group: root
|
|
mode: "0755"
|
|
|
|
- name: Download Fluent Bit apt signing key
|
|
ansible.builtin.get_url:
|
|
url: "{{ fluentbit_apt_key_url }}"
|
|
dest: /tmp/fluentbit.key
|
|
mode: "0644"
|
|
|
|
- name: Dearmor and install Fluent Bit apt key
|
|
ansible.builtin.shell:
|
|
cmd: gpg --dearmor < /tmp/fluentbit.key > {{ fluentbit_apt_keyring }}
|
|
creates: "{{ fluentbit_apt_keyring }}"
|
|
|
|
- name: Add Fluent Bit apt repository
|
|
ansible.builtin.deb822_repository:
|
|
name: fluentbit
|
|
types: [deb]
|
|
uris: https://packages.fluentbit.io/ubuntu/noble
|
|
suites: [noble]
|
|
components: [main]
|
|
signed_by: "{{ fluentbit_apt_keyring }}"
|
|
state: present
|
|
|
|
- name: Install fluent-bit
|
|
ansible.builtin.apt:
|
|
name: "{{ fluentbit_package }}"
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: Stop and disable packaged fluent-bit service
|
|
ansible.builtin.systemd:
|
|
name: fluent-bit
|
|
state: stopped
|
|
enabled: false
|
|
failed_when: false
|
|
|
|
- name: Create fluentbit group
|
|
ansible.builtin.group:
|
|
name: "{{ fluentbit_group }}"
|
|
system: true
|
|
state: present
|
|
|
|
- name: Create fluentbit user
|
|
ansible.builtin.user:
|
|
name: "{{ fluentbit_user }}"
|
|
group: "{{ fluentbit_group }}"
|
|
system: true
|
|
shell: /usr/sbin/nologin
|
|
home: "{{ fluentbit_log_dir }}"
|
|
create_home: false
|
|
state: present
|
|
|
|
- name: Create fluentbit directories
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ fluentbit_user }}"
|
|
group: "{{ fluentbit_group }}"
|
|
mode: "0750"
|
|
loop:
|
|
- "{{ fluentbit_config_dir }}"
|
|
- "{{ fluentbit_log_dir }}"
|
|
|
|
- name: Render parsers.conf
|
|
ansible.builtin.template:
|
|
src: parsers.conf.j2
|
|
dest: "{{ fluentbit_config_dir }}/parsers.conf"
|
|
owner: root
|
|
group: "{{ fluentbit_group }}"
|
|
mode: "0640"
|
|
notify: Restart fluent-bit
|
|
|
|
- name: Render fluent-bit.conf
|
|
ansible.builtin.template:
|
|
src: fluent-bit.conf.j2
|
|
dest: "{{ fluentbit_config_dir }}/fluent-bit.conf"
|
|
owner: root
|
|
group: "{{ fluentbit_group }}"
|
|
mode: "0640"
|
|
notify: Restart fluent-bit
|
|
|
|
- name: Install fluent-bit systemd unit
|
|
ansible.builtin.template:
|
|
src: fluent-bit.service.j2
|
|
dest: /etc/systemd/system/fluent-bit.service
|
|
owner: root
|
|
group: root
|
|
mode: "0644"
|
|
notify: Restart fluent-bit
|
|
|
|
- name: Enable and start fluent-bit
|
|
ansible.builtin.systemd:
|
|
name: fluent-bit
|
|
enabled: true
|
|
state: started
|
|
daemon_reload: true
|
|
|
|
- name: Create syslog-* index pattern in Dashboards
|
|
ansible.builtin.uri:
|
|
url: "http://127.0.0.1:{{ opensearch_dashboards_port | default('5601') }}/api/saved_objects/index-pattern/syslog-*"
|
|
method: POST
|
|
user: "{{ fluentbit_opensearch_user }}"
|
|
password: "{{ fluentbit_opensearch_password }}"
|
|
force_basic_auth: true
|
|
headers:
|
|
osd-xsrf: "true"
|
|
Content-Type: "application/json"
|
|
body_format: json
|
|
body:
|
|
attributes:
|
|
title: "syslog-*"
|
|
timeFieldName: "@timestamp"
|
|
status_code: [200, 201, 409]
|
|
|
|
- name: Set syslog-* as default index in Dashboards
|
|
ansible.builtin.uri:
|
|
url: "http://127.0.0.1:{{ opensearch_dashboards_port | default('5601') }}/api/saved_objects/config/{{ opensearch_dashboards_version | default('2.19.6') }}"
|
|
method: PUT
|
|
user: "{{ fluentbit_opensearch_user }}"
|
|
password: "{{ fluentbit_opensearch_password }}"
|
|
force_basic_auth: true
|
|
headers:
|
|
osd-xsrf: "true"
|
|
Content-Type: "application/json"
|
|
body_format: json
|
|
body:
|
|
attributes:
|
|
defaultIndex: "syslog-*"
|
|
status_code: [200, 409]
|