add metr1c role
This commit is contained in:
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
|
||||
--------------
|
||||
|
||||
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
|
||||
2
roles/metr1c/defaults/main.yml
Normal file
2
roles/metr1c/defaults/main.yml
Normal file
@@ -0,0 +1,2 @@
|
||||
---
|
||||
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: [ "focal", "jammy" ]
|
||||
|
||||
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.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"
|
||||
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: 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"
|
||||
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: "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:
|
||||
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 }}"
|
||||
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={{ 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
|
||||
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"
|
||||
cluster_uuid: "xxxxxxxx"
|
||||
cluster_admin: "Администратор"
|
||||
cluster_pw: "1234"
|
||||
platform_version: "8.3.24.1467"
|
||||
metr1c_port: "1599"
|
||||
Reference in New Issue
Block a user