-
Notifications
You must be signed in to change notification settings - Fork 96
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
19e6258
commit 6a232c4
Showing
13 changed files
with
324 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
- name: Install alloy | ||
hosts: all | ||
become: true | ||
|
||
tasks: | ||
- name: Install alloy | ||
ansible.builtin.include_role: | ||
name: grafana.grafana.alloy | ||
vars: | ||
config: | | ||
prometheus.scrape "default" { | ||
targets = [{"__address__" = "localhost:12345"}] | ||
forward_to = [prometheus.remote_write.prom.receiver] | ||
} | ||
prometheus.remote_write "prom" { | ||
endpoint { | ||
url = "https://prometheus-prod-13-prod-us-east-0.grafana.net/api/prom/push" | ||
basic_auth { | ||
username = "1493467" | ||
password = "glc_eyJvIjoiNjUyOTkyIiwibiI6InN0YWNrLTg5MDA0My1obS13cml0ZS1hc2FzIiwiayI6IjIwME9NeThmWlFpMGlmQzBGMTlJNDdqSiIsIm0iOnsiciI6InByb2QtdXMtZWFzdC0wIn19" | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,71 @@ | ||
# Ansible Role for Alloy | ||
|
||
This Ansible role to install and configure [Alloy](https://grafana.com/docs/alloy/latest/), which can be used to collect traces, metrics, and logs. | ||
|
||
## Requirements | ||
|
||
Please ensure that `curl` is intalled on Ansible controller. | ||
|
||
## Role Variables | ||
|
||
Available variables with their default values are listed below (`defaults/main.yml`): | ||
|
||
## Role Variables | ||
|
||
| Variable Name | Description | Default Value | | ||
|-----------------------|----------------------------------------------------------------------|---------------------------------------------------------------------| | ||
| `version` | The version of Grafana Alloy to be installed. | "1.0.0" | | ||
| `arch_mapping` | A mapping of common architecture names to Grafana Alloy binaries. | `{'x86_64': 'amd64', 'aarch64': 'arm64', 'armv7l': 'armhf', 'i386': 'i386', 'ppc64le': 'ppc64le'}` | | ||
| `arch` | The architecture of the current machine. | Based on `ansible_architecture` lookup, defaults to 'amd64'. | | ||
| `binary_url` | URL to Grafana Alloy binary for the specific version and architecture. | Constructed URL based on `version` and `arch` variables. | | ||
| `service_name` | The name to be used for the Grafana Alloy service. | "alloy" | | ||
| `installation_dir` | Directory where Grafana Alloy is to be installed. | "/etc/alloy" | | ||
| `environment_file` | Name of the environment file for the Grafana Alloy service. | "service.env" | | ||
| `config_dir` | Directory for Grafana Alloy configuration. | "/etc/alloy" | | ||
| `config_file` | Configuration file name for Grafana Alloy. | "config.river" | | ||
| `service_user` | User under which the Grafana Alloy service will run. | "alloy" | | ||
| `service_group` | Group under which the Grafana Alloy service will run. | "alloy" | | ||
| `working_dir` | Working directory for the Grafana Alloy service. | "/etc/alloy" | | ||
| `env_file_vars` | Additional environment variables to be set in the service environment file. | {} (Empty dictionary) | | ||
| `alloy_flags_extra` | Extra flags to pass to the Alloy service. | {} (Empty dictionary) | | ||
| `start_after_service` | Specify an optional dependency service Alloy should start after. | '' (Empty string) | | ||
| `config` | Configuration template for Grafana Alloy. | Configuration script with Prometheus scrape and remote_write setup | | ||
|
||
|
||
## Example Playbook | ||
|
||
Including an example of how to use your role: | ||
```yaml | ||
- name: Install alloy | ||
hosts: all | ||
become: true | ||
|
||
tasks: | ||
- name: Install alloy | ||
ansible.builtin.include_role: | ||
name: grafana.grafana.alloy | ||
vars: | ||
config: | | ||
prometheus.scrape "default" { | ||
targets = [{"__address__" = "localhost:12345"}] | ||
forward_to = [prometheus.remote_write.prom.receiver] | ||
} | ||
prometheus.remote_write "prom" { | ||
endpoint { | ||
url = "https://prometheus-prod-13-prod-us-east-0.grafana.net/api/prom/push" | ||
basic_auth { | ||
username = "149xxx" | ||
password = "glc_xxx" | ||
} | ||
} | ||
} | ||
``` | ||
## License | ||
See [LICENSE](https://github.com/grafana/grafana-ansible-collection/blob/main/LICENSE) | ||
## Author Information | ||
- [Ishan Jain](https://github.com/ishanjainn) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,45 @@ | ||
version: "1.0.0" | ||
|
||
arch_mapping: | ||
x86_64: amd64 | ||
aarch64: arm64 | ||
armv7l: armhf | ||
i386: i386 | ||
ppc64le: ppc64le | ||
|
||
arch: "{{ arch_mapping[ansible_architecture] | default('amd64') }}" | ||
|
||
binary_url: "https://github.com/grafana/alloy/releases/download/v{{ version }}/alloy-linux-{{ arch }}.zip" | ||
|
||
service_name: "alloy" | ||
|
||
installation_dir: "/etc/alloy" | ||
|
||
environment_file: "service.env" | ||
|
||
config_dir: "/etc/alloy" | ||
|
||
config_file: "config.alloy" | ||
|
||
service_user: "alloy" | ||
|
||
service_group: "alloy" | ||
|
||
working_dir: "/etc/alloy" | ||
|
||
env_file_vars: {} | ||
|
||
alloy_flags_extra: {} | ||
|
||
start_after_service: '' | ||
|
||
config: | | ||
prometheus.scrape "default" { | ||
targets = [{"__address__" = "localhost:12345"}] | ||
forward_to = [prometheus.remote_write.prom.receiver] | ||
} | ||
prometheus.remote_write "prom" { | ||
endpoint { | ||
url = "http://mimir:9009/api/v1/push" | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
- name: Restart alloy | ||
ansible.builtin.systemd: | ||
name: "{{ service_name }}" | ||
state: restarted | ||
become: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
galaxy_info: | ||
author: Ishan Jain | ||
description: Role to Install and Configure Grafana Alloy | ||
license: "GPL-3.0-or-later" | ||
min_ansible_version: "2.11" | ||
platforms: | ||
- name: Fedora | ||
versions: | ||
- "all" | ||
- name: Debian | ||
versions: | ||
- "all" | ||
- name: Ubuntu | ||
versions: | ||
- "all" | ||
- name: EL | ||
versions: | ||
- "all" | ||
galaxy_tags: | ||
- grafana | ||
- observability | ||
- monitoring | ||
- opentelemetry | ||
- telemetry |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,28 @@ | ||
- name: Create alloy config directory | ||
ansible.builtin.file: | ||
path: "{{ config_dir }}" | ||
state: directory | ||
owner: "{{ service_user }}" | ||
group: "{{ service_group }}" | ||
mode: '0755' | ||
become: true | ||
|
||
- name: Deploy alloy configuration file | ||
ansible.builtin.template: | ||
src: config.alloy.j2 | ||
dest: "{{ config_dir }}/{{ config_file }}" | ||
owner: "{{ service_user }}" | ||
group: "{{ service_group }}" | ||
mode: '0644' | ||
notify: Restart alloy | ||
become: true | ||
|
||
- name: Deploy alloy environment file | ||
ansible.builtin.template: | ||
src: environment.j2 | ||
dest: "{{ config_dir }}/{{ environment_file }}" | ||
owner: "{{ service_user }}" | ||
group: "{{ service_group }}" | ||
mode: '0644' | ||
notify: Restart alloy | ||
become: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,51 @@ | ||
- name: Install unzip | ||
ansible.builtin.package: | ||
name: unzip | ||
state: present | ||
become: true | ||
|
||
- name: Create alloy group | ||
ansible.builtin.group: | ||
name: "{{ service_group }}" | ||
system: true | ||
become: true | ||
|
||
- name: Create alloy user | ||
ansible.builtin.user: | ||
name: "{{ service_user }}" | ||
group: "{{ service_group }}" | ||
system: true | ||
create_home: false # Appropriate for a system user, usually doesn't need a home directory | ||
become: true | ||
|
||
- name: Download alloy binary | ||
ansible.builtin.get_url: | ||
url: "{{ binary_url }}" | ||
dest: "/tmp/alloy-{{ version }}.zip" | ||
mode: '0755' | ||
become: true | ||
register: download_result | ||
|
||
- name: Remove existing alloy installation directory | ||
ansible.builtin.file: | ||
path: "{{ installation_dir }}" | ||
state: absent | ||
become: true | ||
when: download_result.changed | ||
|
||
- name: Create alloy installation directory | ||
ansible.builtin.file: | ||
path: "{{ installation_dir }}" | ||
state: directory | ||
mode: '0755' | ||
owner: "{{ service_user }}" | ||
group: "{{ service_group }}" | ||
become: true | ||
|
||
- name: Extract alloy binary | ||
ansible.builtin.unarchive: | ||
src: "/tmp/alloy-{{ version }}.zip" | ||
dest: "{{ installation_dir }}" | ||
remote_src: yes | ||
become: true | ||
register: extract_result |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
- name: Install alloy | ||
include_tasks: install.yml | ||
tags: [install] | ||
|
||
- name: Configure alloy | ||
include_tasks: configure.yml | ||
tags: [configure] | ||
|
||
- name: Manage alloy service | ||
include_tasks: service.yml | ||
tags: [service] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
- name: Copy alloy systemd unit file | ||
ansible.builtin.template: | ||
src: alloy.service.j2 | ||
dest: /etc/systemd/system/{{ service_name }}.service | ||
mode: '0644' | ||
become: true | ||
notify: Restart alloy | ||
|
||
- name: Reload systemd daemon to pick up changes | ||
ansible.builtin.systemd: | ||
daemon_reload: yes | ||
become: true | ||
|
||
- name: Ensure alloy service is enabled and running | ||
ansible.builtin.service: | ||
name: "{{ service_name }}" | ||
enabled: yes | ||
state: started | ||
become: true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
[Unit] | ||
Description=Vendor-neutral programmable observability pipelines. | ||
Documentation=https://grafana.com/docs/alloy/ | ||
Wants=network-online.target | ||
After=network-online.target{{ ' ' + start_after_service if start_after_service is defined else '' }} | ||
|
||
[Service] | ||
Restart=always | ||
User={{ service_user }} | ||
Group={{ service_group }} | ||
Environment=HOSTNAME=%H | ||
EnvironmentFile={{ installation_dir }}/{{ environment_file }} | ||
WorkingDirectory={{ working_dir }} | ||
ExecStart={{ installation_dir }}/alloy-linux-{{ arch }} run \ | ||
{% for flag, flag_value in alloy_flags_extra.items() %} | ||
{% if not flag_value %} | ||
--{{ flag }} \ | ||
{% elif flag_value is string %} | ||
--{{ flag }}={{ flag_value }} \ | ||
{% elif flag_value is sequence %} | ||
{% for flag_value_item in flag_value %} | ||
--{{ flag }}={{ flag_value_item }} \ | ||
{% endfor %} | ||
{% endif %} | ||
{% endfor %} | ||
$CUSTOM_ARGS --storage.path={{ working_dir }} $CONFIG_FILE | ||
ExecReload=/usr/bin/env kill -HUP $MAINPID | ||
TimeoutStopSec=20s | ||
SendSIGKILL=no | ||
|
||
[Install] | ||
WantedBy=multi-user.target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
{{ config }} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{{ ansible_managed | comment }} | ||
# Grafana Alloy Environment File | ||
CONFIG_FILE="{{ config_dir }}/{{ config_file }}" | ||
|
||
GOMAXPROCS={{ ansible_processor_vcpus|default(ansible_processor_count) }} | ||
RESTART_ON_UPGRADE=true | ||
|
||
{% for key, value in env_file_vars.items() %} | ||
{{key}}={{value}} | ||
{% endfor %} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters