diff --git a/files/nslcd.conf.jinja b/files/nslcd.conf.jinja new file mode 100644 index 0000000..56fdfb7 --- /dev/null +++ b/files/nslcd.conf.jinja @@ -0,0 +1,10 @@ +{% set nslcd_conf = salt['pillar']['get']('nslcd') -%} + +# +## This file is being managed by Salt. +## Any manual modifications will be overwritten the next time Salt runs. +# + +{% for key,value in nslcd_conf.items() -%} + {{ key }} = {{ value }} +{% endfor %} diff --git a/nslcd/defaults.yaml b/nslcd/defaults.yaml new file mode 100644 index 0000000..eb7d264 --- /dev/null +++ b/nslcd/defaults.yaml @@ -0,0 +1,10 @@ +nslcd: + package_name: nslcd + + conf_path: /etc/nslcd.conf + conf_user: root + conf_group: root + conf_mode: 640 + + service_name: nslcd + service_enable: True diff --git a/nslcd/init.sls b/nslcd/init.sls new file mode 100644 index 0000000..be24fdc --- /dev/null +++ b/nslcd/init.sls @@ -0,0 +1,23 @@ +{% from "nslcd/map.jinja" import nslcd_settings as nslcd with context %} + +nslcd_package: + pkg.installed: + - name: {{ nslcd.package_name }} + +nslcd_conf: + file.managed: + - name: {{ nslcd.conf_path }} + - user: {{ nslcd.conf_user }} + - group: {{ nslcd.conf_group }} + - mode: {{ nslcd.conf_mode }} + - template: jinja + - source: salt://nslcd/files/nslcd.conf.jinja + - require: + - pkg: nslcd_package + +nslcd_service: + service.running: + - name: {{ nslcd.service_name }} + - watch: + - pkg: nslcd_package + - file: nslcd_conf diff --git a/nslcd/map.jinja b/nslcd/map.jinja new file mode 100644 index 0000000..866e051 --- /dev/null +++ b/nslcd/map.jinja @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# vim: ft=jinja + +{## Start with defaults from defaults.sls ##} +{% import_yaml 'nslcd/defaults.yaml' as default_settings %} + +{## +Setup variable using grains['os_family'] based logic, only add key:values here +that differ from whats in defaults.yaml +##} +{% set flavor_map = salt['grains.filter_by']( + { + 'RedHat': { + 'package_name': 'nss-pam-ldapd' + } + }, + grain='os_family', + merge=salt['pillar.get']('nslcd:lookup') +) %} + +{## Merge the flavor_map over the default settings ##} +{% do default_settings.nslcd.update(flavor_map) %} + +{## Merge in changes from the nslcd:lookup pillar ##} +{% set nslcd_settings = salt['pillar.get']( + 'nslcd', + default=default_settings.nslcd, + merge=True +) %}