Skip to content

Commit 3fb657d

Browse files
authored
minor fixes and add github workflow (#1)
* translate README.md * fix variables * fix min_ansible_version * add github workflow and fix molecule * fix role_name * fix APT cache update pre_task * add locale_gen pre_task * fix locale for RedHat 8 * add tar install task * run tar installation task with sudo * run tar installation task with sudo v2 * run tar installation task with sudo v3 * update converge.yml * debug * debug v2 * fix conditions
1 parent 55332e1 commit 3fb657d

File tree

7 files changed

+120
-47
lines changed

7 files changed

+120
-47
lines changed

.github/workflows/molecule.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
name: 'Molecule'
3+
on:
4+
pull_request:
5+
push:
6+
branches:
7+
- main
8+
- master
9+
10+
jobs:
11+
test:
12+
name: 'Test'
13+
runs-on: ubuntu-latest
14+
strategy:
15+
matrix:
16+
include:
17+
- distro: 'rockylinux8'
18+
command: '/usr/sbin/init'
19+
- distro: 'ubuntu2004'
20+
command: '/lib/systemd/systemd'
21+
- distro: 'debian11'
22+
command: '/lib/systemd/systemd'
23+
24+
steps:
25+
- name: 'Checkout the codebase'
26+
uses: actions/checkout@v2
27+
28+
- name: 'Test role'
29+
uses: gofrolist/molecule-action@v2
30+
with:
31+
molecule_command: test
32+
env:
33+
PY_COLORS: '1'
34+
ANSIBLE_FORCE_COLOR: '1'
35+
MOLECULE_DISTRO: ${{ matrix.distro }}
36+
MOLECULE_DOCKER_COMMAND: ${{ matrix.command }}

README.md

Lines changed: 35 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,54 +1,59 @@
11
Postgres Exporter
22
=================
33

4-
Ansible роль для установки, настройки и обновления [Postgres Exporter](https://github.com/prometheus-community/postgres_exporter).
4+
An Ansible role for install, configure and update [Postgres Exporter](https://github.com/prometheus-community/postgres_exporter).
55

6-
Требования
7-
----------
6+
Requirements
7+
------------
88

9-
- Поддерживаемая версия Ansible: 2.7 и выше.
10-
- `pywinrm` для подключения [Ansible через WinRM](https://docs.ansible.com/ansible/latest/user_guide/windows_winrm.html) (для Windows).
11-
- `gnu-tar` при использовании Mac в качестве управляющего хоста (`brew install gnu-tar`).
12-
- Список поддерживаемых платформ описан в файле метаданных роли.
9+
- Supported version of Ansible: 2.9 and highter.
10+
- `gnu-tar` on Mac as deployer host (`brew install gnu-tar`).
11+
- List of all supported platforms described in role meta.
1312

14-
Используемые переменные
15-
-----------------------
13+
Role Variables
14+
--------------
1615

17-
- `postgres_exporter_version` Версия Postgres Exporter для установки (default: `0.11.1`).
18-
- `postgres_exporter_package_name` Имя пакета.
19-
- `postgres_exporter_download_url` Ссылка на скачивание архива с приложением.
20-
- `postgres_exporter_user` Unix имя пользователя (default: `postgres`).
21-
- `postgres_exporter_group` Unix группа пользователя (default: `postgres`).
22-
- `postgres_exporter_install_path` Каталог, в который будет распакован бинарник (default: `/usr/local/bin`).
23-
- `postgres_exporter_data_source_name` Строка подключения к БД (default: `user=postgres host=/var/run/postgresql/ sslmode=disable`).
24-
- `postgres_exporter_extend_query_path` Путь до YAML файла содержащего дополнительные sql-запросы для записи метрик (default: `''`).
25-
- `postgres_exporter_log_level` Уровень логирования экспортера (default: `info`).
16+
- `postgres_exporter_version` The specific version of Postgres Exporter to download (default: `0.11.1`).
17+
- `postgres_exporter_archive_name` Postgres Exporter archive name (default: `postgres_exporter-{{ postgres_exporter_version }}.linux-{{ _postgres_exporter_architecture }}`).
18+
- `postgres_exporter_archive_extension` Postgres Exporter archive extension (default: `tar.gz`)
19+
- `postgres_exporter_download_url` URL to download an archive with Postgres Exporter.
20+
- `postgres_exporter_user` and `postgres_exporter_group` Unix username and group (default: `postgres`).
21+
- `postgres_exporter_install_path` Path to Postgres Exporter installation directory (default: `/usr/local/bin`).
22+
- `postgres_exporter_data_source_name` Accepts URI form and key=value form arguments. The URI may contain the username and password to connect with. (default: `user=postgres host=/var/run/postgresql/ sslmode=disable`).
23+
- `postgres_exporter_extend_query_path` Path to a YAML file containing custom queries to run. (default: `''`).
24+
- `postgres_exporter_log_level` Postgres Exporter logging level.
2625

27-
Зависимости
28-
-----------
26+
Available values:
27+
- `debug`
28+
- `info` (default)
29+
- `warn`
30+
- `error`
2931

30-
Отсутствуют.
32+
Dependencies
33+
------------
3134

32-
Пример использования
33-
--------------------
35+
None.
3436

35-
- Устанавливаем и настраиваем Postgres Exporter:
37+
Example Playbook
38+
----------------
39+
40+
- Install and configure Postgres Exporter:
3641

3742
```yaml
3843
---
3944
- name: 'Setup Postgres Exporter'
4045
hosts: all
4146

4247
roles:
43-
- role: ansible-role-postgres-exporter
48+
- role: antmelekhin.postgres_exporter
4449
```
4550
46-
Лицензия
47-
--------
51+
License
52+
-------
4853
4954
MIT
5055
51-
Информация об авторе
52-
--------------------
56+
Author Information
57+
------------------
5358
54-
Мелехин Антон.
59+
Melekhin Anton.

defaults/main.yml

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
---
22
# See available releases: https://github.com/prometheus-community/postgres_exporter/releases
33
postgres_exporter_version: '0.11.1'
4-
postgres_exporter_package_name: 'postgres_exporter-{{ postgres_exporter_version }}.linux-{{ _postgres_exporter_architecture }}'
5-
postgres_exporter_download_url: 'https://github.com/prometheus-community/postgres_exporter/releases/download/v{{ postgres_exporter_version }}/{{ postgres_exporter_package_name }}.tar.gz'
4+
postgres_exporter_archive_name: 'postgres_exporter-{{ postgres_exporter_version }}.linux-{{ _postgres_exporter_architecture }}'
5+
postgres_exporter_archive_extension: 'tar.gz'
6+
postgres_exporter_download_url: 'https://github.com/prometheus-community/postgres_exporter/releases/download/v{{ postgres_exporter_version }}'
67

8+
# Postgres Exporter user.
79
postgres_exporter_user: 'postgres'
810
postgres_exporter_group: '{{ postgres_exporter_user }}'
911

12+
# Postgres Exporter directories.
1013
postgres_exporter_install_path: '/usr/local/bin'
1114

1215
# See available environment variables: https://github.com/prometheus-community/postgres_exporter#environment-variables

meta/main.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ galaxy_info:
77

88
license: MIT
99

10-
min_ansible_version: '2.7'
10+
min_ansible_version: '2.9'
1111

1212
platforms:
1313
- name: EL

molecule/default/converge.yml

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,31 @@
11
---
2-
- name: Converge
2+
- name: 'Prepare an Ansible host for Github Actions'
3+
hosts: localhost
4+
5+
tasks:
6+
- name: 'Install tar for delegated to localhost tasks'
7+
apk:
8+
name: tar
9+
update_cache: true
10+
when: ansible_os_family == 'Alpine'
11+
12+
- name: 'Converge'
313
hosts: all
14+
vars:
15+
locale: 'en_US.UTF-8'
416

517
pre_tasks:
618
- name: 'Update APT cache'
719
ansible.builtin.apt:
820
update_cache: true
21+
when: ansible_os_family == 'Debian'
22+
23+
- name: 'Set database locale if using RedHat 8'
24+
set_fact:
25+
locale: 'C.UTF-8'
26+
when:
27+
- ansible_os_family == 'RedHat' and
28+
ansible_distribution_major_version == '8'
929

1030
roles:
1131
- role: geerlingguy.postgresql
@@ -15,10 +35,10 @@
1535
role_attr_flags: SUPERUSER
1636
postgresql_databases:
1737
- name: 'molecule'
18-
lc_collate: 'en_US.UTF-8'
19-
lc_ctype: 'en_US.UTF-8'
38+
lc_collate: '{{ locale }}'
39+
lc_ctype: '{{ locale }}'
2040
encoding: 'UTF-8'
2141
template: 'template0'
2242
owner: 'molecule'
2343

24-
- role: ansible-role-postgres-exporter
44+
- role: antmelekhin.postgres_exporter

molecule/default/molecule.yml

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,18 @@ lint: |
88
set -e
99
yamllint .
1010
platforms:
11-
- name: ubuntu-2004
12-
image: jrei/systemd-ubuntu:20.04
11+
- name: instance
12+
image: 'geerlingguy/docker-${MOLECULE_DISTRO:-ubuntu2004}-ansible:latest'
13+
command: "${MOLECULE_DOCKER_COMMAND:-'/lib/systemd/systemd'}"
1314
published_ports:
1415
- 0.0.0.0:9187:9187/udp
1516
- 0.0.0.0:9187:9187/tcp
1617
volumes:
17-
- /sys/fs/cgroup:/sys/fs/cgroup:ro
18+
- /sys/fs/cgroup:/sys/fs/cgroup:rw
19+
- /var/lib/containerd
20+
cgroupns_mode: host
1821
privileged: true
19-
command: '/lib/systemd/systemd'
22+
pre_build_image: true
2023
provisioner:
2124
name: ansible
2225
verifier:

tasks/install.yml

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,32 @@
66
changed_when: false
77
register: _postgres_exporter_version_check
88

9-
- block:
9+
- name: 'Download and unarchive Postgres Exporter'
10+
block:
11+
- name: 'Set archive fullname and temporary directory for Postgres Exporter'
12+
ansible.builtin.set_fact:
13+
_postgres_exporter_archive: '{{ postgres_exporter_archive_name }}.{{ postgres_exporter_archive_extension }}'
14+
_postgres_exporter_tmp_dir: '{{ postgres_exporter_archive_name }}'
15+
1016
- name: 'Download Postgres Exporter binary to local folder'
1117
ansible.builtin.get_url:
12-
url: '{{ postgres_exporter_download_url }}'
13-
dest: '/tmp/{{ postgres_exporter_package_name }}.tar.gz'
18+
url: '{{ postgres_exporter_download_url }}/{{ _postgres_exporter_archive }}'
19+
dest: '/tmp/{{ _postgres_exporter_archive }}'
1420
mode: 0644
1521
delegate_to: localhost
1622
check_mode: false
1723

1824
- name: 'Unarchive Postgres Exporter binary'
1925
ansible.builtin.unarchive:
20-
src: '/tmp/{{ postgres_exporter_package_name }}.tar.gz'
26+
src: '/tmp/{{ _postgres_exporter_archive }}'
2127
dest: '/tmp'
22-
creates: '/tmp/{{ postgres_exporter_package_name }}/postgres_exporter'
28+
creates: '/tmp/{{ _postgres_exporter_tmp_dir }}/postgres_exporter'
2329
delegate_to: localhost
2430
check_mode: false
2531

2632
- name: 'Copy Postgres Exporter binary into place'
2733
ansible.builtin.copy:
28-
src: '/tmp/{{ postgres_exporter_package_name }}/postgres_exporter'
34+
src: '/tmp/{{ _postgres_exporter_tmp_dir }}/postgres_exporter'
2935
dest: '{{ postgres_exporter_install_path }}/postgres_exporter'
3036
owner: '{{ postgres_exporter_user }}'
3137
group: '{{ postgres_exporter_group }}'

0 commit comments

Comments
 (0)