Skip to content

Commit d839a0c

Browse files
authored
Merge pull request #23 from VictoriaMetrics/feature/vmsingle-envflags-support
Feature/vmsingle envflags support
2 parents db4808e + 5203f5c commit d839a0c

File tree

8 files changed

+135
-95
lines changed

8 files changed

+135
-95
lines changed

galaxy.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,4 +21,4 @@ build_ignore:
2121
- '*.tar.gz'
2222
homepage: "https://github.com/VictoriaMetrics/ansible-playbooks"
2323
documentation: "https://github.com/VictoriaMetrics/ansible-playbooks"
24-
issues: "https://github.com/VictoriaMetrics/ansible-playbooks/issues"
24+
issues: "https://github.com/VictoriaMetrics/ansible-playbooks/issues"

playbooks/single.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
- name: setup VM single
3+
become: true
4+
hosts: all
5+
roles:
6+
- single

roles/single/README.md

Lines changed: 19 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,23 @@ Installs VictoriaMetrics single binary running with systemd
66

77
See full list at [defaults.yml](./defaults/main.yml)
88

9-
| Parameter | Description | Default |
10-
|-------------------------------------------|--------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
11-
| victoriametrics_repo_url | Repository to get binaries | `https://github.com/VictoriaMetrics/VictoriaMetrics` |
12-
| victoriametrics_version | Version to install | `v1.77.1` |
13-
| victoriametrics_download_url | Resulting download url. | `"{{ victoriametrics_repo_url }}/releases/download/{{ victoriametrics_version }}/vmutils-{{ go_arch }}-{{ victoriametrics_version }}.tar.gz"` |
14-
| victoriametrics_utils_download_url | Resulting download url. | `"{{ victoriametrics_repo_url }}/releases/download/{{ victoriametrics_version }}/vmutils-{{ go_arch }}-{{ victoriametrics_version }}.tar.gz"` |
15-
| victoriametrics_system_user | User to run service. | `victoriametrics` |
16-
| victoriametrics_system_group | Group to run service. | `{{ victoriametrics_system_user }}` |
17-
| victoriametrics_data_dir | Directory to store data configs. | `/var/lib/victoria-metrics/` |
18-
| victoriametrics_backup_enabled | Enable usage of `vmbackup` to backup to S3 . | `false` |
19-
| victoriametrics_backup_destination | S3 backups destination. | `s3://` |
20-
| victoriametrics_backup_cron_hour | Backups schedule. | `*/2` |
21-
| victoriametrics_backup_access_key | S3 access key. | `` |
22-
| victoriametrics_backup_secret_key | S3 secret key. | `` |
23-
| victoriametrics_backup_custom_s3_endpoint | Custom S3 endpoint(useful for S3-compatible services). | `` |
24-
| victoriametrics_service_args | Passes options defined above to single. | see [defaults.yml](./defaults/main.yml) |
9+
| Parameter | Description | Default |
10+
|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|
11+
| victoriametrics_repo_url | Repository to get binaries | `https://github.com/VictoriaMetrics/VictoriaMetrics` |
12+
| victoriametrics_version | Version to install | `v1.77.1` |
13+
| victoriametrics_download_url | Resulting download url. | `"{{ victoriametrics_repo_url }}/releases/download/{{ victoriametrics_version }}/vmutils-{{ go_arch }}-{{ victoriametrics_version }}.tar.gz"` |
14+
| victoriametrics_utils_download_url | Resulting download url. | `"{{ victoriametrics_repo_url }}/releases/download/{{ victoriametrics_version }}/vmutils-{{ go_arch }}-{{ victoriametrics_version }}.tar.gz"` |
15+
| victoriametrics_system_user | User to run service. | `victoriametrics` |
16+
| victoriametrics_system_group | Group to run service. | `{{ victoriametrics_system_user }}` |
17+
| victoriametrics_data_dir | Directory to store data configs. | `/var/lib/victoria-metrics/` |
18+
| victoriametrics_backup_enabled | Enable usage of `vmbackup` to backup to S3 . | `false` |
19+
| victoriametrics_backup_destination | S3 backups destination. | `s3://` |
20+
| victoriametrics_backup_cron_hour | Backups schedule. | `*/2` |
21+
| victoriametrics_backup_access_key | S3 access key. | `` |
22+
| victoriametrics_backup_secret_key | S3 secret key. | `` |
23+
| victoriametrics_backup_custom_s3_endpoint | Custom S3 endpoint(useful for S3-compatible services). | `` |
24+
| victoriametrics_service_args | Passes options defined above to single. | see [defaults.yml](./defaults/main.yml) |
25+
| victoriametrics_service_envflag_enabled | Enable usage of environment variables for configuration. Read more: [docs](https://docs.victoriametrics.com/#environment-variables) | `false` |
26+
| victoriametrics_service_envflag_data | Flags data to pass to service | see [defaults.yml](./defaults/main.yml) |
27+
| victoriametrics_service_envflag_file | Location of env file to include for service. | see [defaults.yml](./defaults/main.yml) |
2528

roles/single/defaults/main.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,16 @@ victoriametrics_data_dir: "/var/lib/victoria-metrics/"
1010
victoriametrics_self_scrape_interval: "30s"
1111
victoriametrics_retention_period_months: "12"
1212
victoriametrics_search_max_unique_timeseries: "900000"
13+
14+
# ore on envflags usage
15+
# https://docs.victoriametrics.com/Single-server-VictoriaMetrics.html#environment-variables
16+
victoriametrics_service_envflag_enabled: "false"
17+
# Array of strings to pass
18+
victoriametrics_service_envflag_data: []
19+
# - "graphiteListenAddr=127.0.0.1:12345"
20+
victoriametrics_service_envflag_file: "/etc/default/victoriametrics"
21+
22+
1323
victoriametrics_service_args:
1424
storageDataPath: "{{ victoriametrics_data_dir }}"
1525
selfScrapeInterval: "{{ victoriametrics_self_scrape_interval }}"

roles/single/molecule/default/converge.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
vars:
66
victoriametrics_data_dir: "/tmp/victoria-metrics/"
77
victoriametrics_backup_enabled: false
8+
victoriametrics_service_envflag_enabled: true
9+
victoriametrics_service_envflag_data:
10+
- "graphiteListenAddr=127.0.0.1:12345"
811
victoriametrics_service_args:
9-
graphiteListenAddr: "127.0.0.1:12345"
1012
storageDataPath: "{{ victoriametrics_data_dir }}"
1113
tasks:
1214
- name: Install cron

roles/single/tasks/configure.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,15 @@
11
---
2+
- name: Setup envfile
3+
file:
4+
state: file
5+
path: "{{ victoriametrics_service_envflag_file }}"
6+
owner: root
7+
group: root
8+
mode: 0644
9+
access_time: preserve
10+
notify: Restart VictoriaMetrics service
11+
when: victoriametrics_service_envflag_enabled | bool
12+
213
- name: Copy VictoriaMetrics systemd unit file
314
template:
415
src: victoriametrics.service.j2

roles/single/tasks/install.yml

Lines changed: 76 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -40,85 +40,85 @@
4040

4141
- name: Download and setup binaries
4242
block:
43-
- name: Prepare local download paths
44-
delegate_to: localhost
45-
become: no
46-
file:
47-
path: "{{ item }}"
48-
state: directory
49-
loop:
50-
- /tmp/vic-single/
51-
- /tmp/vic-utils/
52-
when:
53-
- not ansible_check_mode
54-
- not victoriametrics_is_installed.stat.exists or
55-
victoriametrics_version not in victoriametrics_current_version.stdout
43+
- name: Prepare local download paths
44+
delegate_to: localhost
45+
become: no
46+
file:
47+
path: "{{ item }}"
48+
state: directory
49+
loop:
50+
- /tmp/vic-single/
51+
- /tmp/vic-utils/
52+
when:
53+
- not ansible_check_mode
54+
- not victoriametrics_is_installed.stat.exists or
55+
victoriametrics_version not in victoriametrics_current_version.stdout
5656

57-
- name: Download and unarchive VictoriaMetrics release binary
58-
environment:
59-
http_proxy: ''
60-
https_proxy: ''
61-
unarchive:
62-
src: "{{ victoriametrics_download_url }}"
63-
dest: /tmp/vic-single/
64-
remote_src: yes
65-
notify: Restart VictoriaMetrics service
66-
register: archive_downloaded
67-
become: no
68-
delegate_to: localhost
69-
when:
70-
- not ansible_check_mode
71-
- not victoriametrics_is_installed.stat.exists or
72-
victoriametrics_version not in victoriametrics_current_version.stdout
57+
- name: Download and unarchive VictoriaMetrics release binary
58+
environment:
59+
http_proxy: ''
60+
https_proxy: ''
61+
unarchive:
62+
src: "{{ victoriametrics_download_url }}"
63+
dest: /tmp/vic-single/
64+
remote_src: yes
65+
notify: Restart VictoriaMetrics service
66+
register: archive_downloaded
67+
become: no
68+
delegate_to: localhost
69+
when:
70+
- not ansible_check_mode
71+
- not victoriametrics_is_installed.stat.exists or
72+
victoriametrics_version not in victoriametrics_current_version.stdout
7373

74-
- name: Upload VictoriaMetrics release binary
75-
copy:
76-
src: /tmp/vic-single/victoria-metrics-prod
77-
dest: /usr/local/bin
78-
mode: 0751
79-
owner: "{{ victoriametrics_system_user }}"
80-
group: "{{ victoriametrics_system_group }}"
81-
when:
82-
- archive_downloaded is changed
74+
- name: Upload VictoriaMetrics release binary
75+
copy:
76+
src: /tmp/vic-single/victoria-metrics-prod
77+
dest: /usr/local/bin
78+
mode: 0751
79+
owner: "{{ victoriametrics_system_user }}"
80+
group: "{{ victoriametrics_system_group }}"
81+
when:
82+
- archive_downloaded is changed
8383

84-
- name: Download VictoriaMetrics utils
85-
become: no
86-
environment:
87-
http_proxy: ''
88-
https_proxy: ''
89-
unarchive:
90-
src: "{{ victoriametrics_utils_download_url }}"
91-
dest: /tmp/vic-utils/
92-
remote_src: yes
93-
delegate_to: localhost
94-
when:
95-
- archive_downloaded is changed
84+
- name: Download VictoriaMetrics utils
85+
become: no
86+
environment:
87+
http_proxy: ''
88+
https_proxy: ''
89+
unarchive:
90+
src: "{{ victoriametrics_utils_download_url }}"
91+
dest: /tmp/vic-utils/
92+
remote_src: yes
93+
delegate_to: localhost
94+
when:
95+
- archive_downloaded is changed
9696

97-
- name: Upload VictoriaMetrics release binaries
98-
copy:
99-
src: "/tmp/vic-utils/{{ item }}"
100-
dest: /usr/local/bin
101-
mode: 0751
102-
owner: "{{ victoriametrics_system_user }}"
103-
group: "{{ victoriametrics_system_group }}"
104-
when:
105-
- archive_downloaded is changed
106-
loop:
107-
- vmagent-prod
108-
- vmalert-prod
109-
- vmauth-prod
110-
- vmbackup-prod
111-
- vmrestore-prod
97+
- name: Upload VictoriaMetrics release binaries
98+
copy:
99+
src: "/tmp/vic-utils/{{ item }}"
100+
dest: /usr/local/bin
101+
mode: 0751
102+
owner: "{{ victoriametrics_system_user }}"
103+
group: "{{ victoriametrics_system_group }}"
104+
when:
105+
- archive_downloaded is changed
106+
loop:
107+
- vmagent-prod
108+
- vmalert-prod
109+
- vmauth-prod
110+
- vmbackup-prod
111+
- vmrestore-prod
112112

113113
always:
114-
- name: Clear download paths
115-
delegate_to: localhost
116-
become: no
117-
file:
118-
path: "{{ item }}"
119-
state: absent
120-
loop:
121-
- /tmp/vic-single/
122-
- /tmp/vic-utils/
123-
when:
124-
- not ansible_check_mode
114+
- name: Clear download paths
115+
delegate_to: localhost
116+
become: no
117+
file:
118+
path: "{{ item }}"
119+
state: absent
120+
loop:
121+
- /tmp/vic-single/
122+
- /tmp/vic-utils/
123+
when:
124+
- not ansible_check_mode

roles/single/templates/victoriametrics.service.j2

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ Type=simple
99
LimitNOFILE={{ victoriametrics_max_open_files }}
1010
User={{ victoriametrics_system_user }}
1111
Group={{ victoriametrics_system_group }}
12-
ExecStart=/usr/local/bin/victoria-metrics-prod {% for flag, flag_value in victoriametrics_service_args.items() %}-{{ flag }}={{ flag_value }} {% endfor %}
12+
ExecStart=/usr/local/bin/victoria-metrics-prod {% if (victoriametrics_service_envflag_enabled | bool) %} -envflag.enable {% endif %} {% for flag, flag_value in victoriametrics_service_args.items() %}-{{ flag }}={{ flag_value }} {% endfor %}
1313

1414
SyslogIdentifier=victoriametrics
1515
Restart=always
@@ -26,5 +26,13 @@ ProtectKernelModules=true
2626
ProtectKernelTunables=yes
2727
{% endif %}
2828

29+
{% if victoriametrics_service_envflag_enabled | bool %}
30+
{% for v in victoriametrics_service_envflag_data %}
31+
Environment="{{ v }}"
32+
{% endfor %}
33+
34+
EnvironmentFile={{ victoriametrics_service_envflag_file }}
35+
{% endif %}
36+
2937
[Install]
3038
WantedBy=multi-user.target

0 commit comments

Comments
 (0)