ansible : add alloy role
This commit is contained in:
14
ansible/roles/alloy/defaults/main.yaml
Normal file
14
ansible/roles/alloy/defaults/main.yaml
Normal 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
|
||||
10
ansible/roles/alloy/handlers/main.yaml
Normal file
10
ansible/roles/alloy/handlers/main.yaml
Normal 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
|
||||
85
ansible/roles/alloy/tasks/main.yaml
Normal file
85
ansible/roles/alloy/tasks/main.yaml
Normal 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
|
||||
34
ansible/roles/alloy/templates/config.j2
Normal file
34
ansible/roles/alloy/templates/config.j2
Normal 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"
|
||||
}
|
||||
8
ansible/roles/alloy/templates/default.j2
Normal file
8
ansible/roles/alloy/templates/default.j2
Normal 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 }}
|
||||
19
ansible/roles/alloy/templates/systemd_service.j2
Normal file
19
ansible/roles/alloy/templates/systemd_service.j2
Normal 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
|
||||
Reference in New Issue
Block a user