Merge pull request #49 from corvus-migratorius/role-metr1c
add metr1c role
This commit is contained in:
@@ -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)
|
||||||
|
|||||||
@@ -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
52
roles/metr1c/README.md
Normal 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
|
||||||
2
roles/metr1c/defaults/main.yml
Normal file
2
roles/metr1c/defaults/main.yml
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
metr1c_deploy: true
|
||||||
1
roles/metr1c/handlers/main.yml
Normal file
1
roles/metr1c/handlers/main.yml
Normal file
@@ -0,0 +1 @@
|
|||||||
|
---
|
||||||
17
roles/metr1c/meta/main.yml
Normal file
17
roles/metr1c/meta/main.yml
Normal 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: []
|
||||||
12
roles/metr1c/molecule/default/converge.yml
Normal file
12
roles/metr1c/molecule/default/converge.yml
Normal 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"
|
||||||
27
roles/metr1c/molecule/default/molecule.yml
Normal file
27
roles/metr1c/molecule/default/molecule.yml
Normal 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 .
|
||||||
19
roles/metr1c/molecule/default/verify.yml
Normal file
19
roles/metr1c/molecule/default/verify.yml
Normal 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"
|
||||||
43
roles/metr1c/tasks/main.yml
Normal file
43
roles/metr1c/tasks/main.yml
Normal 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"
|
||||||
11
roles/metr1c/tasks/run_systemd.yml
Normal file
11
roles/metr1c/tasks/run_systemd.yml
Normal 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 }}"
|
||||||
32
roles/metr1c/templates/metr1c.service.j2
Normal file
32
roles/metr1c/templates/metr1c.service.j2
Normal 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
|
||||||
7
roles/metr1c/vars/main.yml
Normal file
7
roles/metr1c/vars/main.yml
Normal 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"
|
||||||
Reference in New Issue
Block a user