Init
This commit is contained in:
commit
3dcd1b88fc
10
README.md
Normal file
10
README.md
Normal file
@ -0,0 +1,10 @@
|
||||
![publish](https://github.com/dzervas/ansible-vector/workflows/publish/badge.svg)
|
||||
|
||||
# Vector ansible role
|
||||
|
||||
This is an ansible role to set up [vector](https://vector.dev).
|
||||
It translates the YAML configuration to TOML, so any configuration is possible.
|
||||
|
||||
For available variables check out [defaults](roles/vector/defaults/main.yml)
|
||||
|
||||
Currently only amd64, arch64, arch7 through deb and rpm packages are supported
|
23
defaults/main.yml
Normal file
23
defaults/main.yml
Normal file
@ -0,0 +1,23 @@
|
||||
vector_template: vector.toml.j2
|
||||
vector_config_file: /etc/vector/vector.toml
|
||||
vector_nightly: no
|
||||
vector_version: "{{ vector_nightly | ternary('nightly','latest') }}"
|
||||
add_vector_docker_group: no # Add vector user to "docker" group
|
||||
add_vector_journal_group: no # Add vector user to "systemd-journal" group
|
||||
|
||||
sources:
|
||||
journald:
|
||||
type: journald
|
||||
current_boot_only: true
|
||||
|
||||
transforms:
|
||||
grok:
|
||||
type: grok_parser
|
||||
inputs:
|
||||
- journald
|
||||
pattern: '(?<capture>\\d+)%{GREEDYDATA}'
|
||||
sinks:
|
||||
vector:
|
||||
type: vector
|
||||
inputs: ["journald"]
|
||||
address: "vector.example.com:9000"
|
5
handlers/main.yml
Normal file
5
handlers/main.yml
Normal file
@ -0,0 +1,5 @@
|
||||
- name: restart vector
|
||||
service:
|
||||
state: restarted
|
||||
daemon_reload: yes
|
||||
name: vector
|
20
meta/main.yml
Normal file
20
meta/main.yml
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
|
||||
galaxy_info:
|
||||
role_name: vector
|
||||
namespace: dzervas
|
||||
author: Dimitris Zervas <dzervas@dzervas.gr>
|
||||
description: vector.dev ansible role
|
||||
license: MIT
|
||||
platforms:
|
||||
- name: Debian
|
||||
versions:
|
||||
- all
|
||||
- name: Ubuntu
|
||||
versions:
|
||||
- all
|
||||
galaxy_tags:
|
||||
- vector
|
||||
- logging
|
||||
- monitoring
|
||||
min_ansible_version: 2.9
|
7
molecule/default/converge.yml
Normal file
7
molecule/default/converge.yml
Normal file
@ -0,0 +1,7 @@
|
||||
---
|
||||
- name: Converge
|
||||
hosts: all
|
||||
tasks:
|
||||
- name: "Include vector"
|
||||
include_role:
|
||||
name: "vector"
|
61
molecule/default/molecule.yml
Normal file
61
molecule/default/molecule.yml
Normal file
@ -0,0 +1,61 @@
|
||||
---
|
||||
dependency:
|
||||
name: galaxy
|
||||
driver:
|
||||
name: docker
|
||||
lint: |
|
||||
set -e
|
||||
yamllint .
|
||||
ansible-lint
|
||||
flake8
|
||||
platforms:
|
||||
- name: debian10
|
||||
image: jrei/systemd-debian:10
|
||||
privileged: true
|
||||
command: /lib/systemd/systemd
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
- name: debian9
|
||||
image: jrei/systemd-debian:9
|
||||
privileged: true
|
||||
command: /lib/systemd/systemd
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
- name: ubuntu1804
|
||||
image: jrei/systemd-ubuntu:18.04
|
||||
privileged: true
|
||||
command: /lib/systemd/systemd
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
- name: ubuntu2004
|
||||
image: jrei/systemd-ubuntu:20.04
|
||||
privileged: true
|
||||
command: /lib/systemd/systemd
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
- name: centos8
|
||||
image: jrei/systemd-centos:8
|
||||
privileged: true
|
||||
command: /usr/sbin/init
|
||||
tmpfs:
|
||||
- /run
|
||||
- /tmp
|
||||
volumes:
|
||||
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||
|
||||
provisioner:
|
||||
name: ansible
|
||||
verifier:
|
||||
name: ansible
|
20
molecule/default/verify.yml
Normal file
20
molecule/default/verify.yml
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
- name: Verify
|
||||
hosts: all
|
||||
gather_facts: false
|
||||
tasks:
|
||||
- name: Execute vector
|
||||
command: vector --version
|
||||
changed_when: false
|
||||
register: vector_version_rc
|
||||
- name: Check grok pattern is not mangled
|
||||
lineinfile:
|
||||
path: /etc/vector/vector.toml
|
||||
line: ' pattern = "(?<capture>\\d+)%{GREEDYDATA}"'
|
||||
diff: true
|
||||
register: grok_pattern_rc
|
||||
- name: Assert vector is installed
|
||||
assert:
|
||||
that:
|
||||
- vector_version_rc is success
|
||||
- grok_pattern_rc is not changed
|
65
tasks/main.yml
Normal file
65
tasks/main.yml
Normal file
@ -0,0 +1,65 @@
|
||||
# Workaround for latest version being named against a version number
|
||||
- name: Get latest version
|
||||
uri:
|
||||
url: https://s3.amazonaws.com/packages.timber.io/?prefix=vector/latest&max-keys=1
|
||||
return_content: true
|
||||
register: bucket_content
|
||||
when: vector_version == "latest"
|
||||
|
||||
- name: Set latest version
|
||||
set_fact:
|
||||
vector_version: "{{ bucket_content.content | regex_replace('.*\\n.*<Key>[^-]+-(?P<version>[\\d\\.]+)-.*','\\g<version>') }}"
|
||||
when: vector_version == "latest"
|
||||
|
||||
- name: Install Vector (Debian)
|
||||
apt:
|
||||
deb: "https://packages.timber.io/vector/{{ version }}/vector-{{ version }}-{{ arch }}.deb"
|
||||
install_recommends: yes
|
||||
notify:
|
||||
- restart vector
|
||||
vars:
|
||||
version: "{{ (vector_version == 'nightly')| bool | ternary('nightly/latest', vector_version) }}"
|
||||
arch: "{{ vector_debian_arch[ansible_machine] }}"
|
||||
when: ansible_os_family == 'Debian'
|
||||
|
||||
- name: Install Vector (RedHat)
|
||||
yum:
|
||||
name: "https://packages.timber.io/vector/{{ version }}/vector-{{ package_version }}.{{ arch }}.rpm"
|
||||
state: present
|
||||
disable_gpg_check: yes # package is not signed
|
||||
notify:
|
||||
- restart vector
|
||||
vars:
|
||||
version: "{{ (vector_version == 'nightly')| bool | ternary('nightly/latest', vector_version) }}"
|
||||
package_version: "{{ vector_version is match('latest') | ternary(vector_version, vector_version ~ '-1') }}"
|
||||
arch: "{{ vector_redhat_arch[ansible_machine] }}"
|
||||
when: ansible_os_family == 'RedHat'
|
||||
|
||||
- name: Copy config
|
||||
template:
|
||||
src: "{{ vector_template }}"
|
||||
dest: "{{ vector_config_file }}"
|
||||
mode: 0644
|
||||
notify: restart vector
|
||||
|
||||
- name: Add vector user to docker group
|
||||
user:
|
||||
name: vector
|
||||
groups: docker
|
||||
append: yes
|
||||
when: add_vector_docker_group | default(no)
|
||||
notify: restart vector
|
||||
|
||||
- name: Add vector user to systemd-journal group
|
||||
user:
|
||||
name: vector
|
||||
groups: systemd-journal
|
||||
append: yes
|
||||
when: add_vector_journal_group | default(no)
|
||||
notify: restart vector
|
||||
|
||||
- name: Start Vector
|
||||
service:
|
||||
state: started
|
||||
enabled: yes
|
||||
name: vector
|
24
templates/vector.toml.j2
Normal file
24
templates/vector.toml.j2
Normal file
@ -0,0 +1,24 @@
|
||||
# Set global options
|
||||
data_dir = "/var/lib/vector"
|
||||
|
||||
{% set loop_helper = {
|
||||
"sources": (sources | default({})),
|
||||
"transforms": (transforms | default({})),
|
||||
"sinks": (sinks | default({}))
|
||||
} %}
|
||||
|
||||
{% for name, cat in loop_helper.items() | sort(attribute='0') %}
|
||||
{% for key, value in cat.items() | sort(attribute='0') %}
|
||||
[{{ name }}.{{ key }}]
|
||||
{% if value %}
|
||||
{%- for skey, svalue in value.items() | sort(attribute='0') %}
|
||||
{%- if svalue is string %}
|
||||
{{ skey }} = "{{ svalue }}"
|
||||
{% else %}
|
||||
{{ skey }} = {{ svalue | tojson }}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{%- endif %}
|
||||
|
||||
{% endfor %}
|
||||
{% endfor %}
|
8
vars/main.yml
Normal file
8
vars/main.yml
Normal file
@ -0,0 +1,8 @@
|
||||
vector_debian_arch:
|
||||
armv7l: armhf
|
||||
aarch64: arm64
|
||||
x86_64: amd64
|
||||
vector_redhat_arch:
|
||||
armv7l: armv7hl
|
||||
aarch64: aarch64
|
||||
x86_64: x86_64
|
Loading…
Reference in New Issue
Block a user