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 %}
nfs-client-deps:
{% if nfs.pkgs_client %}
nfs-client:
pkg.installed:
- 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 = {
'Amazon': {
'pkgs_server': ['nfs-utils'],
'pkgs_client': ['nfs-utils'],
'service_name': 'nfs'
},
'CentOS': {
'pkgs_server': ['nfs-utils'],
'pkgs_client': ['nfs-utils'],
'service_name': 'nfs'
},
'RedHat': {
'pkgs_server': ['nfs-utils'],
'pkgs_client': ['nfs-utils'],
'service_name': 'nfs'
},
'SUSE': {
'pkgs_server': ['nfs-kernel-server'],
'pkgs_client': ['nfs-client'],
'service_name': 'nfsserver'
},
'Ubuntu': {
'pkgs_server': ['nfs-common', 'nfs-kernel-server'],
'pkgs_client': ['nfs-common'],
'service_name': 'nfs-kernel-server'
},
'Debian': {
'pkgs_server': ['nfs-common', 'nfs-kernel-server'],
'pkgs_client': ['nfs-common'],
'service_name': 'nfs-kernel-server'
},
'Raspbian': {
'pkgs_server': ['nfs-common', 'nfs-kernel-server'],
'pkgs_client': ['nfs-common'],
'service_name': 'nfs-kernel-server'
}
} %}
# -*- coding: utf-8 -*-
# vim: ft=jinja
{## Start with defaults from defaults.yaml ##}
{% import_yaml 'nfs/defaults.yaml' as defaultmap %}
{% import_yaml 'nfs/osfamilymap.yaml' as osfamilymap %}
{% import_yaml 'nfs/osmap.yaml' as osmap %}
# Defaults.
{% set defaults = salt['grains.filter_by'](
defaultmap,
base='Defaults',
) %}
# Update defaults with grains vars.
{% set vars_map = [
("os_family", osfamilymap),
("os", osmap)
] %}
{% for map_name, map_value in vars_map %}
{% do salt['defaults.merge'](defaults,
salt['grains.filter_by'](
map_value,
grain=map_name,
) | default({}, True)
) %}
{% endfor %}
# Update lookup vars.
{% do salt['defaults.merge'](defaults, {
'nfs': salt['pillar.get']('nfs:lookup')
}) %}
# 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:
- nfs.client
{% for m in salt['pillar.get']('nfs:mount').items() %}
{% for m in salt['pillar.get']('nfs:mount', {}).items() %}
{{ m[1].mountpoint }}:
mount.mounted:
- device: {{ m[1].location }}
- fstype: nfs
- opts: {{ m[1].opts|default('vers=3') }}
- persist: {{ m[1].persist|default('True') }}
- mkmnt: {{ m[1].mkmnt|default('True') }}
{# Not every platform needs options #}
{% if 'opts' in m[1] or nfs.mount_opts %}
- 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 %}

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 %}
{% if nfs.pkgs_server %}
nfs-server-deps:
pkg.installed:
- pkgs: {{ nfs.pkgs_server|json }}
{% endif %}
/etc/exports:
file.managed:
- source: salt://nfs/files/exports
- source: {{ nfs.export_template }}
- template: jinja
- watch_in:
- service: nfs-service
nfs-service:
service.running:
{% if nfs.service_name is string %}
- name: {{ nfs.service_name }}
{% elif nfs.service_name is iterable %}
- names: {{ nfs.service_name }}
{% endif %}
- 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:
- 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 }}:
mount.unmounted:
{% if use_device %}
- device: {{ m[1].location }}
{% endif %}
- persist: {{ m[1].persist|default('False') }}
- {{ m[1].persist|default(nfs.persist_unmount) }}
{% endfor %}

View file

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