From bd4cc73cbb8129a2e4a256bb0728024f57fba7ff Mon Sep 17 00:00:00 2001 From: Sergey Malyuk Date: Thu, 18 Dec 2025 15:45:39 +0300 Subject: [PATCH 1/3] add metr1c role --- roles/metr1c/README.md | 52 ++++++++++++++++++++++ roles/metr1c/defaults/main.yml | 2 + roles/metr1c/handlers/main.yml | 1 + roles/metr1c/meta/main.yml | 17 +++++++ roles/metr1c/molecule/default/converge.yml | 12 +++++ roles/metr1c/molecule/default/molecule.yml | 27 +++++++++++ roles/metr1c/molecule/default/verify.yml | 19 ++++++++ roles/metr1c/tasks/main.yml | 43 ++++++++++++++++++ roles/metr1c/tasks/run_systemd.yml | 11 +++++ roles/metr1c/templates/metr1c.service.j2 | 32 +++++++++++++ roles/metr1c/vars/main.yml | 7 +++ 11 files changed, 223 insertions(+) create mode 100644 roles/metr1c/README.md create mode 100644 roles/metr1c/defaults/main.yml create mode 100644 roles/metr1c/handlers/main.yml create mode 100644 roles/metr1c/meta/main.yml create mode 100644 roles/metr1c/molecule/default/converge.yml create mode 100644 roles/metr1c/molecule/default/molecule.yml create mode 100644 roles/metr1c/molecule/default/verify.yml create mode 100644 roles/metr1c/tasks/main.yml create mode 100644 roles/metr1c/tasks/run_systemd.yml create mode 100644 roles/metr1c/templates/metr1c.service.j2 create mode 100644 roles/metr1c/vars/main.yml diff --git a/roles/metr1c/README.md b/roles/metr1c/README.md new file mode 100644 index 0000000..c50d0be --- /dev/null +++ b/roles/metr1c/README.md @@ -0,0 +1,52 @@ +metr1c +========= + +Install metr1c as `systemd` service + +Requirements +------------ + +None + +Role Variables +-------------- + + 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 + cluster_uuid: cluster id + cluster_admin: name of cluster admin + cluster_pw: password to authenticate as cluster admin + platform_version: version of 1c platform + metr1c_port: metr1c will listen on this port + +Dependencies +------------ + +None + +Example Playbook +---------------- + +```yaml +roles: + - role: genlab.metr1c + deploy: false + metr1c_version: "0.0.1" + cluster_uuid: "111-111-111-111" + cluster_admin: "test" + cluster_pw: "testpw" + platform_version: "8.3.24.1467" + metr1c_port: "1599" +``` + +License +------- + +BSD + +Author Information +------------------ + +Alexander Gorelyshev (corvus-migratorius@proton.me) + +Genlab LLC \ No newline at end of file diff --git a/roles/metr1c/defaults/main.yml b/roles/metr1c/defaults/main.yml new file mode 100644 index 0000000..5a61db0 --- /dev/null +++ b/roles/metr1c/defaults/main.yml @@ -0,0 +1,2 @@ +--- +deploy: true diff --git a/roles/metr1c/handlers/main.yml b/roles/metr1c/handlers/main.yml new file mode 100644 index 0000000..ed97d53 --- /dev/null +++ b/roles/metr1c/handlers/main.yml @@ -0,0 +1 @@ +--- diff --git a/roles/metr1c/meta/main.yml b/roles/metr1c/meta/main.yml new file mode 100644 index 0000000..27a5d4f --- /dev/null +++ b/roles/metr1c/meta/main.yml @@ -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: [ "focal", "jammy" ] + + galaxy_tags: [ ] + +dependencies: [] diff --git a/roles/metr1c/molecule/default/converge.yml b/roles/metr1c/molecule/default/converge.yml new file mode 100644 index 0000000..88841d6 --- /dev/null +++ b/roles/metr1c/molecule/default/converge.yml @@ -0,0 +1,12 @@ +--- +- name: Converge + hosts: all + roles: + - role: genlab.metr1c + deploy: false + metr1c_version: "0.2.0" + cluster_uuid: "123-123-1234" + cluster_admin: "admin" + cluster_pw: "testpw" + platform_version: "8.3.24.1464" + metr1c_port: "1599" diff --git a/roles/metr1c/molecule/default/molecule.yml b/roles/metr1c/molecule/default/molecule.yml new file mode 100644 index 0000000..fd2f06d --- /dev/null +++ b/roles/metr1c/molecule/default/molecule.yml @@ -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 . diff --git a/roles/metr1c/molecule/default/verify.yml b/roles/metr1c/molecule/default/verify.yml new file mode 100644 index 0000000..2a73d3c --- /dev/null +++ b/roles/metr1c/molecule/default/verify.yml @@ -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: cmd1 + changed_when: false + + - name: "Check metr1c version" + ansible.builtin.assert: + that: "'{{ metr1c_version }}' in 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" diff --git a/roles/metr1c/tasks/main.yml b/roles/metr1c/tasks/main.yml new file mode 100644 index 0000000..1fd5de8 --- /dev/null +++ b/roles/metr1c/tasks/main.yml @@ -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: "deploy is true" + ansible.builtin.include_tasks: "run_systemd.yml" diff --git a/roles/metr1c/tasks/run_systemd.yml b/roles/metr1c/tasks/run_systemd.yml new file mode 100644 index 0000000..f6f5bfd --- /dev/null +++ b/roles/metr1c/tasks/run_systemd.yml @@ -0,0 +1,11 @@ +- name: "Set fact for daemon_reload" + ansible.builtin.set_fact: + 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: "{{ daemon_reload_required }}" diff --git a/roles/metr1c/templates/metr1c.service.j2 b/roles/metr1c/templates/metr1c.service.j2 new file mode 100644 index 0000000..1d1aa27 --- /dev/null +++ b/roles/metr1c/templates/metr1c.service.j2 @@ -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={{ cluster_uuid }} + +# Name of cluster admin, e.g. Администратор +Environment=platform1c_admin_user={{ cluster_admin }} + +# Admin cluster password, e.g. 1234 +Environment=platform1c_admin_pw={{ cluster_pw }} + +# Version of 1C platform, e.g. 8.3.24.1467 +Environment=platform1c_version={{ 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 diff --git a/roles/metr1c/vars/main.yml b/roles/metr1c/vars/main.yml new file mode 100644 index 0000000..7a5ef2d --- /dev/null +++ b/roles/metr1c/vars/main.yml @@ -0,0 +1,7 @@ +--- +metr1c_version: "0.2.0" +cluster_uuid: "xxxxxxxx" +cluster_admin: "Администратор" +cluster_pw: "1234" +platform_version: "8.3.24.1467" +metr1c_port: "1599" From 23e388876f4d76e448871d4e51dd10692d52e887 Mon Sep 17 00:00:00 2001 From: Sergey Malyuk Date: Thu, 18 Dec 2025 16:06:21 +0300 Subject: [PATCH 2/3] fix ansible-lint errors --- roles/metr1c/README.md | 20 ++++++++++---------- roles/metr1c/defaults/main.yml | 2 +- roles/metr1c/meta/main.yml | 4 ++-- roles/metr1c/molecule/default/converge.yml | 12 ++++++------ roles/metr1c/molecule/default/verify.yml | 4 ++-- roles/metr1c/tasks/main.yml | 2 +- roles/metr1c/tasks/run_systemd.yml | 4 ++-- roles/metr1c/templates/metr1c.service.j2 | 8 ++++---- roles/metr1c/vars/main.yml | 8 ++++---- 9 files changed, 32 insertions(+), 32 deletions(-) diff --git a/roles/metr1c/README.md b/roles/metr1c/README.md index c50d0be..8f5e34f 100644 --- a/roles/metr1c/README.md +++ b/roles/metr1c/README.md @@ -11,12 +11,12 @@ None Role Variables -------------- - deploy: set true or false depending on whether we start the service or not, set false when running molecule test + 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 - cluster_uuid: cluster id - cluster_admin: name of cluster admin - cluster_pw: password to authenticate as cluster admin - platform_version: version of 1c platform + 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 @@ -30,12 +30,12 @@ Example Playbook ```yaml roles: - role: genlab.metr1c - deploy: false + metr1c_deploy: false metr1c_version: "0.0.1" - cluster_uuid: "111-111-111-111" - cluster_admin: "test" - cluster_pw: "testpw" - platform_version: "8.3.24.1467" + 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" ``` diff --git a/roles/metr1c/defaults/main.yml b/roles/metr1c/defaults/main.yml index 5a61db0..15d7c5e 100644 --- a/roles/metr1c/defaults/main.yml +++ b/roles/metr1c/defaults/main.yml @@ -1,2 +1,2 @@ --- -deploy: true +metr1c_deploy: true diff --git a/roles/metr1c/meta/main.yml b/roles/metr1c/meta/main.yml index 27a5d4f..4a4d719 100644 --- a/roles/metr1c/meta/main.yml +++ b/roles/metr1c/meta/main.yml @@ -10,8 +10,8 @@ galaxy_info: platforms: - name: "Ubuntu" - versions: [ "focal", "jammy" ] + versions: ["jammy", "noble"] - galaxy_tags: [ ] + galaxy_tags: [] dependencies: [] diff --git a/roles/metr1c/molecule/default/converge.yml b/roles/metr1c/molecule/default/converge.yml index 88841d6..bcf6707 100644 --- a/roles/metr1c/molecule/default/converge.yml +++ b/roles/metr1c/molecule/default/converge.yml @@ -2,11 +2,11 @@ - name: Converge hosts: all roles: - - role: genlab.metr1c - deploy: false + - role: genlab.common.metr1c + metr1c_deploy: false metr1c_version: "0.2.0" - cluster_uuid: "123-123-1234" - cluster_admin: "admin" - cluster_pw: "testpw" - platform_version: "8.3.24.1464" + metr1c_cluster_uuid: "123-123-1234" + metr1c_cluster_admin: "admin" + metr1c_cluster_pw: "testpw" + metr1c_platform_version: "8.3.24.1464" metr1c_port: "1599" diff --git a/roles/metr1c/molecule/default/verify.yml b/roles/metr1c/molecule/default/verify.yml index 2a73d3c..8f0ace9 100644 --- a/roles/metr1c/molecule/default/verify.yml +++ b/roles/metr1c/molecule/default/verify.yml @@ -9,11 +9,11 @@ - name: "Ensure that metr1c is installed and able to run" ansible.builtin.command: cmd: /opt/metr1c/metr1c -version - register: cmd1 + register: metr1c_cmd1 changed_when: false - name: "Check metr1c version" ansible.builtin.assert: - that: "'{{ metr1c_version }}' in cmd1.stdout" + 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" diff --git a/roles/metr1c/tasks/main.yml b/roles/metr1c/tasks/main.yml index 1fd5de8..60db409 100644 --- a/roles/metr1c/tasks/main.yml +++ b/roles/metr1c/tasks/main.yml @@ -39,5 +39,5 @@ register: metr1c_service - name: "Start systemd service" - when: "deploy is true" + when: "metr1c_deploy is true" ansible.builtin.include_tasks: "run_systemd.yml" diff --git a/roles/metr1c/tasks/run_systemd.yml b/roles/metr1c/tasks/run_systemd.yml index f6f5bfd..22fe6ae 100644 --- a/roles/metr1c/tasks/run_systemd.yml +++ b/roles/metr1c/tasks/run_systemd.yml @@ -1,6 +1,6 @@ - name: "Set fact for daemon_reload" ansible.builtin.set_fact: - daemon_reload_required: "{{ metr1c_service.changed | bool }}" + metr1c_daemon_reload_required: "{{ metr1c_service.changed | bool }}" - name: "Make sure that the metr1c service is started" become: true @@ -8,4 +8,4 @@ name: "metr1c.service" state: started enabled: true - daemon_reload: "{{ daemon_reload_required }}" + daemon_reload: "{{ metr1c_daemon_reload_required }}" diff --git a/roles/metr1c/templates/metr1c.service.j2 b/roles/metr1c/templates/metr1c.service.j2 index 1d1aa27..b3a70e6 100644 --- a/roles/metr1c/templates/metr1c.service.j2 +++ b/roles/metr1c/templates/metr1c.service.j2 @@ -4,16 +4,16 @@ Requires=network.target [Service] # Cluster UUID, for example 07593cfe-64c2-4656-be5f-61c3226286d5 -Environment=platform1c_admin_cluster={{ cluster_uuid }} +Environment=platform1c_admin_cluster={{ metr1c_cluster_uuid }} # Name of cluster admin, e.g. Администратор -Environment=platform1c_admin_user={{ cluster_admin }} +Environment=platform1c_admin_user={{ metr1c_cluster_admin }} # Admin cluster password, e.g. 1234 -Environment=platform1c_admin_pw={{ cluster_pw }} +Environment=platform1c_admin_pw={{ metr1c_cluster_pw }} # Version of 1C platform, e.g. 8.3.24.1467 -Environment=platform1c_version={{ platform_version }} +Environment=platform1c_version={{ metr1c_platform_version }} # Metr1c port, by default 1599 Environment=metr1c_port={{ metr1c_port }} diff --git a/roles/metr1c/vars/main.yml b/roles/metr1c/vars/main.yml index 7a5ef2d..c7391e2 100644 --- a/roles/metr1c/vars/main.yml +++ b/roles/metr1c/vars/main.yml @@ -1,7 +1,7 @@ --- metr1c_version: "0.2.0" -cluster_uuid: "xxxxxxxx" -cluster_admin: "Администратор" -cluster_pw: "1234" -platform_version: "8.3.24.1467" +metr1c_cluster_uuid: "xxxxxxxx" +metr1c_cluster_admin: "Администратор" +metr1c_cluster_pw: "1234" +metr1c_platform_version: "8.3.24.1467" metr1c_port: "1599" From 412e48ae7c8a7e2dba73f1a5d55a3a99c413d690 Mon Sep 17 00:00:00 2001 From: Sergey Malyuk Date: Thu, 18 Dec 2025 16:06:34 +0300 Subject: [PATCH 3/3] update meta --- README.md | 1 + galaxy.yml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c4136b..0b8cb84 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,7 @@ - [ipmi_exporter](roles/ipmi_exporter/README.md) - [karma](roles/karma/README.md) - [loki](roles/loki/README.md) +- [metr1c](roles/metr1c/README.md) - [mkfs](roles/mkfs/README.md) - [mount_device](roles/mount_device/README.md) - [nginx](roles/nginx/README.md) diff --git a/galaxy.yml b/galaxy.yml index c1ab931..da7bc61 100644 --- a/galaxy.yml +++ b/galaxy.yml @@ -1,7 +1,7 @@ --- namespace: genlab name: common -version: 0.26.0 +version: 0.27.0 readme: README.md authors: - Alexander Gorelyshev (corvus-migratorius@proton.me)