Merge pull request #49 from corvus-migratorius/role-metr1c

add metr1c role
This commit is contained in:
Fogucoco
2025-12-18 16:09:10 +03:00
committed by GitHub
13 changed files with 225 additions and 1 deletions

View File

@@ -14,6 +14,7 @@
- [ipmi_exporter](roles/ipmi_exporter/README.md) - [ipmi_exporter](roles/ipmi_exporter/README.md)
- [karma](roles/karma/README.md) - [karma](roles/karma/README.md)
- [loki](roles/loki/README.md) - [loki](roles/loki/README.md)
- [metr1c](roles/metr1c/README.md)
- [mkfs](roles/mkfs/README.md) - [mkfs](roles/mkfs/README.md)
- [mount_device](roles/mount_device/README.md) - [mount_device](roles/mount_device/README.md)
- [nginx](roles/nginx/README.md) - [nginx](roles/nginx/README.md)

View File

@@ -1,7 +1,7 @@
--- ---
namespace: genlab namespace: genlab
name: common name: common
version: 0.26.0 version: 0.27.0
readme: README.md readme: README.md
authors: authors:
- Alexander Gorelyshev (corvus-migratorius@proton.me) - Alexander Gorelyshev (corvus-migratorius@proton.me)

52
roles/metr1c/README.md Normal file
View File

@@ -0,0 +1,52 @@
metr1c
=========
Install metr1c as `systemd` service
Requirements
------------
None
Role Variables
--------------
metr1c_deploy: set true or false depending on whether we start the service or not, set false when running molecule test
metr1c_version: metr1c version to be deployed
metr1c_cluster_uuid: cluster id
metr1c_cluster_admin: name of cluster admin
metr1c_cluster_pw: password to authenticate as cluster admin
metr1c_platform_version: version of 1c platform
metr1c_port: metr1c will listen on this port
Dependencies
------------
None
Example Playbook
----------------
```yaml
roles:
- role: genlab.metr1c
metr1c_deploy: false
metr1c_version: "0.0.1"
metr1c_cluster_uuid: "111-111-111-111"
metr1c_cluster_admin: "test"
metr1c_cluster_pw: "testpw"
metr1c_platform_version: "8.3.24.1467"
metr1c_port: "1599"
```
License
-------
BSD
Author Information
------------------
Alexander Gorelyshev (corvus-migratorius@proton.me)
Genlab LLC

View File

@@ -0,0 +1,2 @@
---
metr1c_deploy: true

View File

@@ -0,0 +1 @@
---

View File

@@ -0,0 +1,17 @@
---
galaxy_info:
role_name: metr1c
namespace: genlab
author: "Alexander Gorelyshev"
company: "Genlab, LLC"
description: "Metric collector (Prometheus) for 1C Plaform using 1C RAS/RAC"
license: "MIT"
min_ansible_version: "2.1"
platforms:
- name: "Ubuntu"
versions: ["jammy", "noble"]
galaxy_tags: []
dependencies: []

View File

@@ -0,0 +1,12 @@
---
- name: Converge
hosts: all
roles:
- role: genlab.common.metr1c
metr1c_deploy: false
metr1c_version: "0.2.0"
metr1c_cluster_uuid: "123-123-1234"
metr1c_cluster_admin: "admin"
metr1c_cluster_pw: "testpw"
metr1c_platform_version: "8.3.24.1464"
metr1c_port: "1599"

View File

@@ -0,0 +1,27 @@
---
dependency:
name: galaxy
driver:
name: docker
platforms:
- name: ubuntu
image: geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2204}-ansible:latest
pre_build_image: true
command: ${MOLECULE_DOCKER_COMMAND:-""}
volumes:
- /sys/fs/cgroup:/sys/fs/cgroup:rw
cgroupns_mode: host
privileged: true
provisioner:
name: ansible
verifier:
name: ansible
lint: |
set -e
yamllint .
ansible-lint .

View File

@@ -0,0 +1,19 @@
---
- name: Verify
hosts: all
gather_facts: false
any_errors_fatal: true
vars:
metr1c_version: "0.2.0"
tasks:
- name: "Ensure that metr1c is installed and able to run"
ansible.builtin.command:
cmd: /opt/metr1c/metr1c -version
register: metr1c_cmd1
changed_when: false
- name: "Check metr1c version"
ansible.builtin.assert:
that: "'{{ metr1c_version }}' in metr1c_cmd1.stdout"
success_msg: "metr1c version {{ metr1c_version }} is installed and working"
fail_msg: "metr1c version {{ metr1c_version }} is not installed or not working correctly"

View File

@@ -0,0 +1,43 @@
---
- name: Create directory for metr1c
ansible.builtin.file:
path: "/opt/metr1c"
state: directory
owner: root
group: root
mode: "0755"
- name: "Install requested metr1c version"
block:
- name: "Check metr1c version"
ansible.builtin.command: /opt/metr1c/metr1c -version
register: metr1c_ver_check
changed_when: false
- name: "Assert version correctness"
ansible.builtin.assert:
that: "metr1c_version in metr1c_ver_check.stdout"
success_msg: "Expected metr1c version available ({{ metr1c_version }})"
fail_msg: "Expected version '{{ metr1c_version }}'; available is '{{ metr1c_ver_check.stdout }}'"
rescue:
- name: "Install metr1c if it is not present"
ansible.builtin.get_url:
url: "https://github.com/Doumor/metr1c/releases/download/{{ metr1c_version }}/metr1c_amd64_linux"
dest: /opt/metr1c/metr1c
owner: root
group: root
mode: "0755"
- name: "Create systemd metr1c service file"
ansible.builtin.template:
src: "templates/metr1c.service.j2"
dest: "/etc/systemd/system/metr1c.service"
owner: root
group: root
mode: "0750"
register: metr1c_service
- name: "Start systemd service"
when: "metr1c_deploy is true"
ansible.builtin.include_tasks: "run_systemd.yml"

View File

@@ -0,0 +1,11 @@
- name: "Set fact for daemon_reload"
ansible.builtin.set_fact:
metr1c_daemon_reload_required: "{{ metr1c_service.changed | bool }}"
- name: "Make sure that the metr1c service is started"
become: true
ansible.builtin.systemd:
name: "metr1c.service"
state: started
enabled: true
daemon_reload: "{{ metr1c_daemon_reload_required }}"

View File

@@ -0,0 +1,32 @@
[Unit]
Description=Metric collector (Prometheus) for 1C Plaform using 1C RAS/RAC
Requires=network.target
[Service]
# Cluster UUID, for example 07593cfe-64c2-4656-be5f-61c3226286d5
Environment=platform1c_admin_cluster={{ metr1c_cluster_uuid }}
# Name of cluster admin, e.g. Администратор
Environment=platform1c_admin_user={{ metr1c_cluster_admin }}
# Admin cluster password, e.g. 1234
Environment=platform1c_admin_pw={{ metr1c_cluster_pw }}
# Version of 1C platform, e.g. 8.3.24.1467
Environment=platform1c_version={{ metr1c_platform_version }}
# Metr1c port, by default 1599
Environment=metr1c_port={{ metr1c_port }}
# User=usr1cv8
# Group=grp1cv8
Type=simple
ExecStart=/opt/metr1c/metr1c
Restart=always
RestartSec=1
[Install]
WantedBy=multi-user.target

View File

@@ -0,0 +1,7 @@
---
metr1c_version: "0.2.0"
metr1c_cluster_uuid: "xxxxxxxx"
metr1c_cluster_admin: "Администратор"
metr1c_cluster_pw: "1234"
metr1c_platform_version: "8.3.24.1467"
metr1c_port: "1599"