Updated memcached formula, allow changed in memcached config file

This commit is contained in:
Graham Hayes 2014-01-20 23:51:49 +00:00
parent bd6023833f
commit 88923952ad
5 changed files with 143 additions and 2 deletions

View File

@ -1,3 +1,18 @@
# Copyright 2013 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
memcached:
pkg:
- installed
@ -6,3 +21,16 @@ memcached:
- enable: True
- require:
- pkg: memcached
- watch:
- file: /etc/memcached.conf
/etc/memcached.conf:
file:
- managed
- template: jinja
- user: root
- group: root
- mode: 644
- source: salt://memcached/templates/memcached.conf
- require:
- pkg: memcached

40
memcached/macros.sls Normal file
View File

@ -0,0 +1,40 @@
# Copyright 2013 Hewlett-Packard Development Company, L.P.
#
# Licensed under the Apache License, Version 2.0 (the "License"); you may
# not use this file except in compliance with the License. You may obtain
# a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
# License for the specific language governing permissions and limitations
# under the License.
#
{% from "memcached/map.jinja" import defaults with context -%}
# Macro:
#
# get_config_item(item_name)
# item_name = parameter in the config to get
#
{%- macro get_config_item(item_name) -%}
{%- set default = defaults['config'].get(item_name, None) -%}
{%- set value = salt['pillar.get']('memcached:%s' % (item_name), default) -%}
{%- if value is string or value is number -%}
{{ value }}
{%- elif value is iterable -%}
{%- if not value -%}
None
{%- else -%}
{{ value | join(', ') }}
{%- endif -%}
{%- elif value is none -%}
None
{%- elif value -%}
True
{%- elif not value -%}
False
{%- endif -%}
{%- endmacro -%}

15
memcached/map.jinja Normal file
View File

@ -0,0 +1,15 @@
{% set defaults = {
'config':{
'deamonize': True,
'verbose_level': 0,
'memory_cap': 64,
'port': 11211,
'user':' memcached',
'listen_address': '127.0.0.1',
'max_connections': 1024,
'lock_paged_memory': False,
'error_on_mem_full': False,
'max_core_file_limit': False,
'log_file': '/var/log/memcached'
}
} %}

View File

@ -0,0 +1,49 @@
{% from 'memcached/macros.sls' import get_config_item with context -%}
# memcached default config file
# 2003 - Jay Bonci <jaybonci@debian.org>
# This configuration file is read by the start-memcached script provided as
# part of the Debian GNU/Linux distribution.
# Run memcached as a daemon. This command is implied, and is not needed for the
# daemon to run. See the README.Debian that comes with this package for more
# information.
{{ '-d' if get_config_item('deamonize') == 'True' else ''}}
# Log memcached's output to /var/log/memcached
logfile {{ get_config_item('log_file') }}
# Be verbose
{{ '-v' if get_config_item('verbose_level') == '1' else '' -}}
{{ '-vv' if get_config_item('verbose_level') == '2' else '' -}}
# Start with a cap of 64 megs of memory. It's reasonable, and the daemon default
# Note that the daemon will grow to this size, but does not start out holding this much
# memory
-m {{ get_config_item('memory_cap') }}
# Default connection port is 11211
-p {{ get_config_item('port') }}
# Run the daemon as root. The start-memcached will default to running as root if no
# -u command is present in this config file
-u {{ get_config_item('user') }}
# Specify which IP address to listen on. The default is to listen on all IP addresses
# This parameter is one of the only security measures that memcached has, so make sure
# it's listening on a firewalled interface.
-l {{ get_config_item('listen_address') }}
# Limit the number of simultaneous incoming connections. The daemon default is 1024
-c {{ get_config_item('max_connections') }}
# Lock down all paged memory. Consult with the README and homepage before you do this
# -k
{{ '-k' if get_config_item('lock_paged_memory') == 'True' else '' }}
# Return error when memory is exhausted (rather than removing items)
# -M
{{ '-M' if get_config_item('error_on_mem_full') == 'True' else '' }}
# Maximize core file limit
# -r
{{ '-r' if get_config_item('max_core_file_limit') == 'True' else '' }}

View File

@ -1,3 +1,12 @@
# Collect the IPs of the memcached instances for use in application config
mine_functions:
network.interfaces: [eth0]
memcached:
deamonize: True,
verbose_level: 0,
memory_cap: 64,
port: 11211,
user: 'memcached',
listen_address: '127.0.0.1',
max_connections:1024,
lock_paged_memory: False,
error_on_mem_full: False,
max_core_file_limit: False