Skip to content

Commit

Permalink
feat(suse): basic opensuse support; tidyup
Browse files Browse the repository at this point in the history
  • Loading branch information
noelmcloughlin committed Nov 24, 2020
1 parent f86a718 commit f29f544
Show file tree
Hide file tree
Showing 7 changed files with 131 additions and 41 deletions.
37 changes: 36 additions & 1 deletion redis/common.sls
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
{% set install_from = redis_settings.install_from -%}
{% if install_from == 'source' %}
{% if install_from in ('source', 'archive') %}
{% set version = redis_settings.version|default('2.8.8') -%}
{% set checksum = redis_settings.checksum|default('sha1=aa811f399db58c92c8ec5e48271d307e9ab8eb81') -%}
{% set root = redis_settings.root|default('/usr/local') -%}
Expand All @@ -28,6 +28,7 @@ get-redis:
- name: {{ root }}/redis-{{ version }}.tar.gz
- source: http://download.redis.io/releases/redis-{{ version }}.tar.gz
- source_hash: {{ checksum }}
- makedirs: True
- require:
- pkg: redis-dependencies
cmd.wait:
Expand Down Expand Up @@ -69,5 +70,39 @@ install-redis:
- version: {{ redis_settings.version }}
{% endif %}
{%- if grains.os_family|lower == 'suse' %}
{# this is basically a workaround for faulty packaging #}
install-redis-log:
group.present:
- name: {{ redis_settings.group }}
user.present:
- name: {{ redis_settings.user }}
- gid_from_name: True
- home: {{ redis_settings.home }}
- require:
- group: install-redis-log
file.directory:
- name: /var/log/redis
- mode: 755
- user: {{ redis_settings.user }}
- group: {{ redis_settings.group }}
- recurse:
- user
- group
- mode
- makedirs: True
- require:
- user: install-redis-log
install-redis-service:
file.replace:
- name: /usr/lib/systemd/system/redis@.service
- pattern: ^Type=notify
- repl: Type=simple
cmd.run:
- name: systemctl daemon-reload
- require:
- file: install-redis-log
{% endif %}
{% endif %}
10 changes: 10 additions & 0 deletions redis/defaults.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ redis:
aof_load_truncated: 'yes'
bin: /usr/local/bin/redis-server
bind: 127.0.0.1
cfg_name: /etc/redis/redis.conf
cfg_version: '3.2'
database_count: 16
root_dir: /var/lib/redis
dbfilename: dump.rdb
Expand Down Expand Up @@ -55,3 +57,11 @@ redis:
group: redis
pidfile: /var/run/redis/sentinel.pid
daemonize: 'yes'

retry_option:
# https://docs.saltstack.com/en/latest/ref/states/requisites.html#retrying-states
attempts: 3
until: true
interval: 60
splay: 10

19 changes: 19 additions & 0 deletions redis/files/default/systemd.ini.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
#########################################################
# File managed by Salt. Changes risk being overwritten.
#########################################################
[Unit]
Description={{ desc }}
Wants=network-online.target
After=
Documentation=https://github.com/saltstack-formulas/prometheus-formula

[Service]
User={{ user }}
Group={{ group }}
WorkingDirectory={{ workdir }}
ExecStart={{ start }}
ExecStop={{ stop }}
PIDFile=/var/run/{{ name }}.pid

[Install]
WantedBy=multi-user.target
16 changes: 16 additions & 0 deletions redis/files/macros.jinja
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
# -*- coding: utf-8 -*-
# vim: ft=jinja
#
# Collection of common macros

{%- macro format_kwargs(kwarg) -%}
{%- if kwarg and kwarg is mapping %}

{%- filter indent(4) %}
{%- for k, v in kwarg|dictsort() %}
- {{ k }}: {{ v }}
{%- endfor %}
{%- endfilter %}

{%- endif %}
{%- endmacro %}
17 changes: 15 additions & 2 deletions redis/osfamilymap.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,6 @@ Debian:
pkg_name: redis-server
python_dev_package: python-dev
svc_name: redis-server
cfg_name: /etc/redis/redis.conf
cfg_version: '3.2'
logfile: /var/log/redis/redis-server.log
pidfile: /var/run/redis/redis-server.pid
sentinel_pkg: redis-server
Expand Down Expand Up @@ -44,3 +42,18 @@ FreeBSD:
pidfile: /var/run/redis/redis.pid
overcommit_memory: false
root_dir: /var/db/redis
Suse:
cfg_name: /etc/redis/default.conf
pkg_name: redis
python_dev_package: python-devel
svc_name: redis@default
logfile: /var/log/redis/default.log
pidfile: /var/run/redis/default.pid
sentinel_pkg: redis
sentinel_service: redis-sentinel
sentinel_cfg: /etc/redis-sentinel.conf
sentinel_logfile: /var/log/redis/sentinel.log
sentinel:
pidfile: /var/run/redis/sentinel.pid
disable_transparent_huge_pages: true
systemd_type: simple
34 changes: 17 additions & 17 deletions redis/server/clean.sls
Original file line number Diff line number Diff line change
@@ -1,44 +1,44 @@

{%- from "redis/map.jinja" import redis_settings with context %}
{%- set cfg_name = redis_settings.cfg_name -%}
{%- set install_from = redis_settings.install_from -%}
{%- set svc_name = redis_settings.svc_name -%}
{%- set port = redis_settings.port -%}
{%- from "redis/map.jinja" import redis_settings as r with context %}
redis-server-service-clean:
service.dead:
{%- if install_from == 'source' %}
- name: {{ svc_name }}_{{ port }}
{%- if r.install_from in ('source', 'archive') %}
- name: {{ r.svc_name }}_{{ r.port }}
{%- else %}
- name: {{ svc_name }}
- name: {{ r.svc_name }}
{%- endif %}
- enable: false
- require_in:
- user: redis-server-clean
- file: redis-server-clean
redis-server-clean:
{%- if install_from == 'source' %}
{%- set user = redis_settings.user -%}
{%- set group = redis_settings.group -%}
{%- if r.install_from in ('source', 'archive') %}
user.absent:
- name: {{ user }}
- name: {{ r.user }}
group.absent:
- name: {{ group }}
- name: {{ r.group }}
- require:
- user: redis-server-clean
file.absent:
- names:
- /etc/init/redis-server.conf
- /var/log/redis
- {{ cfg_name }}
- {{ r.cfg_name }}
- /etc/init.d/redis
- {{ redis_settings.root|default('/usr/local') }}
- {{ r.root|default('/usr/local') }}
- /etc/redis
- /var/log/redis
- /var/lib/redis
- /usr/lib/systemd/system/redis*
- /lib/systemd/system/redis*
- /var/run/redis
- /var/run/redis_6379.pid
{%- else %}
pkg.removed:
- name: {{ redis_settings.pkg_name }}
- name: {{ r.pkg_name }}
{%- endif %}
39 changes: 18 additions & 21 deletions redis/server/install.sls
Original file line number Diff line number Diff line change
Expand Up @@ -3,50 +3,45 @@ include:

{% from "redis/map.jinja" import redis_settings as r with context %}
{%- if r.install_from == 'source' %}
{%- if r.install_from in ('source', 'archive') %}
redis_user_group:
group.present:
- name: {{ r.group }}g
- name: {{ r.group }}
user.present:
- name: {{ r.user }}g
- name: {{ r.user }}
- gid_from_name: True
- home: {{ r.home }}
- require:
- group: redis_group
- group: redis_user_group
file.managed:
- name: /etc/init/redis-server.conf
- template: jinja
- source: salt://redis/files/upstart.conf.jinja
- mode: '0750'
- user: root
- group: root
- makedirs: True
- context:
conf: /etc/redis/redis.conf
user: {{ r.user }}g
user: {{ r.user }}
bin: {{ r.bin }}
- require:
- sls: redis.common
redis-log-dir:
file.directory:
- name: /var/log/redis
- mode: 755
- user: {{ r.user }}g
- group: {{ r.group }}g
- makedirs: True
- require:
- user: redis_user_group
{%- if grains['os_family'] == 'Arch' %}
redis-log-dir:
file.directory:
- name: /var/log/redis
- mode: 755
- user: {{ r.user }}
- group: {{ r.group }}
- recurse:
- user
- group
- mode
- makedirs: True
{%- endif %}
- require:
- user: redis_user_group
{%- endif %}
Expand All @@ -59,8 +54,9 @@ redis_config:
{% else %}
- source: {{ r.source_path }}
{%- endif %}
- makedirs: True
{% if r.install_from == 'source' %}
{%- if r.install_from in ('source', 'archive') %}
redis-initd:
file.managed:
- name: /etc/init.d/redis
Expand All @@ -79,18 +75,19 @@ redis-initd:
redis_disable_transparent_huge_pages:
cmd.run:
- name: echo "never" > /sys/kernel/mm/transparent_hugepage/enabled
{%- endif %}
redis_service:
service.{{ r.svc_state }}:
{% if r.install_from == 'source' %}
{% if r.install_from in ('source', 'archive') %}
- name: {{ r.svc_name }}_{{ r.port }}
{% else %}
- name: {{ r.svc_name }}
{% endif %}
- enable: {{ r.svc_onboot }}
- watch:
- file: {{ r.cfg_name }}
- file: redis_config
- retry: {{ r.retry_option|json }}
{% if r.overcommit_memory == True %}
redis_overcommit_memory:
Expand Down

0 comments on commit f29f544

Please sign in to comment.