ansible : add alloy role

This commit is contained in:
2026-02-24 10:35:08 +00:00
parent fc45817240
commit 9bfc5a596b
6 changed files with 170 additions and 0 deletions

View File

@@ -0,0 +1,14 @@
---
alloy_version: "1.13.2"
alloy_log_level: "info"
alloy_username: "alloy"
alloy_groupname: "alloy"
alloy_uid: "1001"
alloy_gid: "1001"
alloy_config_directory: "/etc/alloy"
alloy_config_file: "{{ alloy_config_directory }}/config.alloy"
alloy_working_directory: "/var/lib/alloy"
alloy_binary_dir: "/usr/local/bin"
alloy_run_args: "--stability.level=experimental --server.http.listen-addr='0.0.0.0:12345'"
alloy_restart_on_upgrade: true

View File

@@ -0,0 +1,10 @@
---
- name: Restart alloy
ansible.builtin.systemd_service:
name: "alloy.service"
state: restarted
- name: Systemd reload
ansible.builtin.systemd_service:
daemon_reload: true

View File

@@ -0,0 +1,85 @@
---
- name: Download and install Alloy binary
ansible.builtin.unarchive:
src: "https://github.com/grafana/alloy/releases/download/v{{ alloy_version }}/alloy-linux-amd64.zip"
dest: "{{ alloy_binary_dir }}"
remote_src: true
tags: install
- name: Rename binary
ansible.builtin.copy:
src: "{{ alloy_binary_dir }}/alloy-linux-amd64"
dest: "{{ alloy_binary_dir }}/alloy"
remote_src: true
mode: 0755
tags: install
- name: Create Alloy group
ansible.builtin.group:
name: "{{ alloy_groupname }}"
gid: "{{ alloy_gid }}"
tags: install
- name: Create Alloy user
ansible.builtin.user:
name: "{{ alloy_username }}"
uid: "{{ alloy_uid }}"
group: "{{ alloy_groupname }}"
shell: "/bin/false"
tags: install
- name: Ensure config directory exists
ansible.builtin.file:
path: "{{ alloy_config_directory }}"
owner: "{{ alloy_username }}"
group: "{{ alloy_groupname }}"
state: directory
mode: "0755"
tags: install,config
- name: Ensure working directory exists
ansible.builtin.file:
path: "{{ alloy_working_directory }}"
state: directory
owner: "{{ alloy_username }}"
group: "{{ alloy_groupname }}"
mode: "0755"
tags: install
- name: Deploy Alloy config
ansible.builtin.template:
src: "config.j2"
dest: "{{ alloy_config_directory }}/config.alloy"
owner: "{{ alloy_username }}"
group: "{{ alloy_groupname }}"
mode: "0644"
notify: Restart alloy
tags: install,config
- name: Deploy Alloy default file
ansible.builtin.template:
src: "default.j2"
dest: "/etc/default/alloy"
owner: "root"
group: "root"
mode: 0644
notify: Restart alloy
tags: install,config
- name: Deploy Alloy systemd config
ansible.builtin.template:
src: "systemd_service.j2"
dest: "/etc/systemd/system/alloy.service"
owner: "root"
group: "root"
mode: 0644
tags: install
- name: Start and enable Alloy service
ansible.builtin.systemd_service:
name: "alloy.service"
state: started
enabled: true
daemon_reload: true
tags: install

View File

@@ -0,0 +1,34 @@
otelcol.receiver.filelog "file" {
include = ["/in/*.log"]
operators = [{
type = "regex_parser",
regex = `^(?P<timestamp>\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}.\d{2}:\d{2}) (?P<msg>.*)$`,
timestamp = {
parse_from = "attributes.timestamp",
layout = "%Y-%m-%dT%H:%M:%S%j",
},
message = {
parse_from = "attributes.msg",
},
},{
type = "remove",
field = "attributes.timestamp",
}]
output {
logs = [otelcol.exporter.syslog.outsyslog.input]
}
}
otelcol.exporter.file "outfile" {
path = "/out/output.log"
}
otelcol.exporter.syslog "outsyslog" {
endpoint = "slaithier-promax14"
}
otelcol.exporter.debug "default" {}
logging {
level = "{{ alloy_log_level }}"
format = "logfmt"
}

View File

@@ -0,0 +1,8 @@
# The configuration file holding the Grafana Alloy configuration.
CONFIG_FILE="{{ alloy_config_file }}"
# User-defined arguments to pass to the run command.
CUSTOM_ARGS="{{ alloy_run_args }}"
# Restart on system upgrade. Defaults to true.
RESTART_ON_UPGRADE={{ alloy_restart_on_upgrade }}

View File

@@ -0,0 +1,19 @@
[Unit]
Description=Vendor-neutral programmable observability pipelines.
Documentation=https://grafana.com/docs/alloy/
Wants=network-online.target
After=network-online.target
[Service]
Restart=always
User={{ alloy_username }}
Group={{ alloy_groupname }}
Environment=HOSTNAME=%H
EnvironmentFile=/etc/default/alloy
WorkingDirectory={{ alloy_working_directory }}
ExecStart={{ alloy_binary_dir }}/alloy run $CUSTOM_ARGS --storage.path={{ alloy_working_directory }} $CONFIG_FILE
ExecReload=/usr/bin/env kill -HUP $MAINPID
TimeoutStopSec=20s
[Install]
WantedBy=multi-user.target