update all pull request into one refactor

This commit is contained in:
Niels Abspoel 2018-03-23 10:17:32 +01:00
parent b32d3901df
commit 9cb2e467c5
9 changed files with 131 additions and 61 deletions

View file

@ -1,5 +1,7 @@
{% from "nfs/map.jinja" import nfs with context %} {% from "nfs/map.jinja" import nfs with context %}
nfs-client-deps: {% if nfs.pkgs_client %}
nfs-client:
pkg.installed: pkg.installed:
- pkgs: {{ nfs.pkgs_client|json }} - pkgs: {{ nfs.pkgs_client|json }}
{% endif %}

13
nfs/defaults.yaml Normal file
View file

@ -0,0 +1,13 @@
nfs:
mount_opts: "vers=3"
mkmnt: True
persist_mount: True
persist_unmount: False
export_template: 'salt://nfs/files/exports'
# for most Linux distributions:
pkgs_server:
- nfs-common
- nfs-kernel-server
pkgs_client:
- nfs-common
service_name: nfs-kernel-server

View file

@ -1,43 +1,42 @@
{% set map = { # -*- coding: utf-8 -*-
'Amazon': { # vim: ft=jinja
'pkgs_server': ['nfs-utils'],
'pkgs_client': ['nfs-utils'], {## Start with defaults from defaults.yaml ##}
'service_name': 'nfs' {% import_yaml 'nfs/defaults.yaml' as defaultmap %}
}, {% import_yaml 'nfs/osfamilymap.yaml' as osfamilymap %}
'CentOS': { {% import_yaml 'nfs/osmap.yaml' as osmap %}
'pkgs_server': ['nfs-utils'],
'pkgs_client': ['nfs-utils'], # Defaults.
'service_name': 'nfs' {% set defaults = salt['grains.filter_by'](
}, defaultmap,
'RedHat': { base='Defaults',
'pkgs_server': ['nfs-utils'], ) %}
'pkgs_client': ['nfs-utils'],
'service_name': 'nfs' # Update defaults with grains vars.
}, {% set vars_map = [
'SUSE': { ("os_family", osfamilymap),
'pkgs_server': ['nfs-kernel-server'], ("os", osmap)
'pkgs_client': ['nfs-client'], ] %}
'service_name': 'nfsserver'
}, {% for map_name, map_value in vars_map %}
'Ubuntu': { {% do salt['defaults.merge'](defaults,
'pkgs_server': ['nfs-common', 'nfs-kernel-server'], salt['grains.filter_by'](
'pkgs_client': ['nfs-common'], map_value,
'service_name': 'nfs-kernel-server' grain=map_name,
}, ) | default({}, True)
'Debian': { ) %}
'pkgs_server': ['nfs-common', 'nfs-kernel-server'], {% endfor %}
'pkgs_client': ['nfs-common'],
'service_name': 'nfs-kernel-server' # Update lookup vars.
}, {% do salt['defaults.merge'](defaults, {
'Raspbian': { 'nfs': salt['pillar.get']('nfs:lookup')
'pkgs_server': ['nfs-common', 'nfs-kernel-server'], }) %}
'pkgs_client': ['nfs-common'],
'service_name': 'nfs-kernel-server'
} # Final var merged with pillar.
} %} {% set nfs = salt['pillar.get'](
'nfs',
default=defaults,
merge=True,
) %}
{% if grains.get('saltversion', '').startswith('0.17') %}
{% set nfs = salt['grains.filter_by'](map, merge=salt['pillar.get']('nfs:lookup'), base='default') %}
{% else %}
{% set nfs = map.get(grains.os) %}
{% endif %}

View file

@ -3,12 +3,15 @@
include: include:
- nfs.client - nfs.client
{% for m in salt['pillar.get']('nfs:mount').items() %} {% for m in salt['pillar.get']('nfs:mount', {}).items() %}
{{ m[1].mountpoint }}: {{ m[1].mountpoint }}:
mount.mounted: mount.mounted:
- device: {{ m[1].location }} - device: {{ m[1].location }}
- fstype: nfs - fstype: nfs
- opts: {{ m[1].opts|default('vers=3') }} {# Not every platform needs options #}
- persist: {{ m[1].persist|default('True') }} {% if 'opts' in m[1] or nfs.mount_opts %}
- mkmnt: {{ m[1].mkmnt|default('True') }} - opts: {{ m[1].opts|default(nfs.mount_opts) }}
{% endif %}
- persist: {{ m[1].persist|default(nfs.persist_mount) }}
- mkmnt: {{ m[1].mkmnt|default(nfs.mkmnt) }}
{% endfor %} {% endfor %}

32
nfs/osfamilymap.yaml Normal file
View file

@ -0,0 +1,32 @@
---
Debian:
pkgs_server: ['nfs-common', 'nfs-kernel-server']
pkgs_client: ['nfs-utils']
service_name: 'nfs'
Arch:
pkgs_server: ['nfs-utils']
pkgs_client: ['nfs-utils']
service_name: 'nfs-server'
OpenBSD:
pkgs_server: None
pkgs_client: None
service_name: ['nfsd', 'mountd']
mount_opts: '-T,-R=1'
FreeBSD:
pkgs_server: None
pkgs_client: None
service_name: ['nfsd', 'mountd']
mount_opts: 'tcp,retrycnt=1'
RedHat:
pkgs_server: ['nfs-utils']
pkgs_client: ['nfs-utils']
service_name: 'nfs-server'
SUSE:
pkgs_server: ['nfs-kernel-server']
pkgs_client: ['nfs-client']
service_name: 'nfsserver'

5
nfs/osmap.yaml Normal file
View file

@ -0,0 +1,5 @@
---
Fedora:
pkgs_server: ['nfs-utils']
pkgs_client: ['nfs-utils']
service_name: 'nfs'

View file

@ -1,17 +1,33 @@
{% from "nfs/map.jinja" import nfs with context %} {% from "nfs/map.jinja" import nfs with context %}
{% if nfs.pkgs_server %}
nfs-server-deps: nfs-server-deps:
pkg.installed: pkg.installed:
- pkgs: {{ nfs.pkgs_server|json }} - pkgs: {{ nfs.pkgs_server|json }}
{% endif %}
/etc/exports: /etc/exports:
file.managed: file.managed:
- source: salt://nfs/files/exports - source: {{ nfs.export_template }}
- template: jinja - template: jinja
- watch_in: - watch_in:
- service: nfs-service - service: nfs-service
nfs-service: nfs-service:
service.running: service.running:
{% if nfs.service_name is string %}
- name: {{ nfs.service_name }} - name: {{ nfs.service_name }}
{% elif nfs.service_name is iterable %}
- names: {{ nfs.service_name }}
{% endif %}
- enable: True - enable: True
{% if grains.get('os') == 'FreeBSD' %}
{% set mountd_flags = salt['pillar.get'](
'nfs:server:mountd_flags', None) -%}
{% if mountd_flags %}
mountd_flags:
sysrc.managed:
- value: {{ mountd_flags }}
{% endif %}
{% endif %}

View file

@ -3,21 +3,10 @@
include: include:
- nfs.client - nfs.client
# Parameter device for mount.unmounted: New in version 2015.5.0.
# Errors: if not used with newer minions
# Warnings: if used with older minions
# Using the following values followed by the conditional avoids both issues
{% set version_year = grains.saltversioninfo[0] %}
{% set version_month = grains.saltversioninfo[1] %}
{% set min_year = 2015 %}
{% set min_month = 5 %}
{% set use_device = (version_year > min_year or (version_year == min_year and version_month >= min_month)) %}
{% for m in salt['pillar.get']('nfs:unmount').iteritems() %} {% for m in salt['pillar.get']('nfs:unmount', {}).items() %}
{{ m[1].mountpoint }}: {{ m[1].mountpoint }}:
mount.unmounted: mount.unmounted:
{% if use_device %}
- device: {{ m[1].location }} - device: {{ m[1].location }}
{% endif %} - {{ m[1].persist|default(nfs.persist_unmount) }}
- persist: {{ m[1].persist|default('False') }}
{% endfor %} {% endfor %}

View file

@ -1,7 +1,18 @@
nfs: nfs:
# Global settings:
mkmnt: False
mount_opts: noauto,ro
persist_unmount: True
persist_mount: False
# Server settings
server: server:
exports: exports:
/srv/homes: "hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)" /srv/homes: "hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)"
# FreeBSD specific:
mountd_flags: -l -S
# mount settings
mount: mount:
somename: somename:
mountpoint: "/some/path" mountpoint: "/some/path"