0
0
mirror of https://github.com/saltstack-formulas/sysctl-formula.git synced 2026-05-13 13:35:13 +02:00

Merge pull request #12 from babilen/new-pillar-structure

Switch to cleaner pillar structure
This commit is contained in:
Niels Abspoel 2016-04-26 20:15:47 +02:00
commit bf38775822
5 changed files with 91 additions and 46 deletions

View File

@ -1,15 +1,37 @@
==============
sysctl-formula sysctl-formula
============== ==============
This formula ensures that a sysctl parameter is present on the system This formula ensures that a sysctl parameter is present on the system
from a pillar file. based on configuration in pillars.
Please check pillar.example for usage example. Values are written to ``/etc/sysctl.d/99-salt.conf`` or ``/etc/sysctl.conf`` for
systemd or sysvinit systems respectively. This can be overriden by explicitly
passing the ``config`` parameter.
The state sysctl will ensure these are present on the system .. note::
based on the sysctl module of salt.
if no config value is given the key value will be written based host system. See the full `Salt Formulas installation and usage instructions
on systemd systems this will be /etc/sysctl.d/99-salt.conf <http://docs.saltstack.com/en/latest/topics/development/conventions/formulas.html>`_.
on sysv init systems it will be /etc/sysctl.conf
Available states
================
.. contents::
:local:
``sysctl``
----------
Meta-state that includes both the ``sysctl.package`` and ``sysctl.param`` states.
``sysctl.package``
------------------
Ensures that the ``sysctl`` program is available.
``sysctl.param``
----------------
Sets sysctl values from configuration in pillars data using
`sysctl.present <https://docs.saltstack.com/en/latest/ref/states/all/salt.states.sysctl.html#salt.states.sysctl.present>`_.

View File

@ -4,17 +4,7 @@ sysctl:
config: config:
location: '/etc/sysctl.d' location: '/etc/sysctl.d'
params: params:
-
name: fs.file-max
value: 100000
config: fs.conf
-
name: vm.swappiness
value: 20
# Setting params2 excludes all params values
params2:
fs.file-max: fs.file-max:
value: 100000 value: 100000
config: fs.conf config: fs.conf
vm.swappiness: vm.swappiness: 20
value: 20

View File

@ -4,6 +4,7 @@ sysctl:
pkg: procps-ng pkg: procps-ng
config: config:
location: '/etc/sysctl.d' location: '/etc/sysctl.d'
lookup:
params: params:
- -
name: fs.file-max name: fs.file-max

View File

@ -4,6 +4,16 @@
{## Start with defaults from defaults.sls ##} {## Start with defaults from defaults.sls ##}
{% import_yaml 'sysctl/defaults.yml' as default_settings %} {% import_yaml 'sysctl/defaults.yml' as default_settings %}
{% set sysctl_lookup = salt['pillar.get']('sysctl:lookup', {}).copy() %}
{% if sysctl_lookup.params is defined %}
{% do sysctl_lookup.pop('params') %}
{% endif %}
{% if sysctl_lookup.params2 is defined %}
{% do sysctl_lookup.pop('params2') %}
{% endif %}
{## setup variable using grains['os_family'] based logic ##} {## setup variable using grains['os_family'] based logic ##}
{% set os_family_map = salt['grains.filter_by']({ {% set os_family_map = salt['grains.filter_by']({
'Arch': { 'Arch': {
@ -28,14 +38,17 @@
"location": '/etc/sysctl.d', "location": '/etc/sysctl.d',
} }
}, },
}, grain="os_family") },
grain="os_family",
merge=sysctl_lookup)
%} %}
{## Merge the flavor_map to the default settings ##} {## Merge the flavor_map to the default settings ##}
{% do default_settings.sysctl.update(os_family_map) %} {% do default_settings.sysctl.update(os_family_map) %}
{## Merge in sysctl:lookup pillar ##} {## Merge in sysctl pillar ##}
{% set sysctl_settings = salt['pillar.get']( {% set sysctl_settings = salt['pillar.get'](
'sysctl:lookup', 'sysctl',
default=default_settings.sysctl, default=default_settings.sysctl,
merge=True merge=True
) )

View File

@ -4,9 +4,28 @@
{## import settings from map.jinja ##} {## import settings from map.jinja ##}
{%- from "sysctl/map.jinja" import sysctl_settings with context -%} {%- from "sysctl/map.jinja" import sysctl_settings with context -%}
{%- if sysctl_settings.params2 is defined -%} {% if sysctl_settings.params is defined %}
{% for param_name, param in sysctl_settings.get('params').items() %}
{% if param is mapping %}
sysctl-present-{{ param_name }}:
sysctl.present:
- name: {{ param_name }}
- value: {{ param.value }}
{%- if param.config is defined %}
- config: {{ sysctl_settings.config.location }}/{{ param.config }}
{% endif -%}
{% else %}
sysctl-present-{{ param_name }}:
sysctl.present:
- name: {{ param_name }}
- value: {{ param }}
{% endif %}
{% endfor %}
{% else %}
{## Support for legacy pillar structure ##}
{%- if sysctl_settings.lookup.params2 is defined -%}
{%- for param_name, param in sysctl_settings.get('params2', {}).items() -%} {%- for param_name, param in sysctl_settings.lookup.get('params2', {}).items() -%}
{%- if param is mapping %} {%- if param is mapping %}
sysctl-present-{{ param_name }}: sysctl-present-{{ param_name }}:
sysctl.present: sysctl.present:
@ -20,7 +39,7 @@ sysctl-present-{{ param_name }}:
{% else %} {% else %}
{%- for param in sysctl_settings.get('params', {}) -%} {%- for param in sysctl_settings.lookup.get('params', {}) -%}
{%- if param is mapping %} {%- if param is mapping %}
sysctl-present-{{ param.name }}: sysctl-present-{{ param.name }}:
sysctl.present: sysctl.present:
@ -31,5 +50,5 @@ sysctl-present-{{ param.name }}:
{% endif -%} {% endif -%}
{% endif -%} {% endif -%}
{% endfor %} {% endfor %}
{%- endif -%}
{%- endif -%} {%- endif -%}