Install and start the memcached service on GNU/Linux and FreeBSD
Note
See the full Salt Formulas installation and usage instructions.
Installs and starts memcached service
Memcached configuration file
Installs python-memcached package for RedHat/CentOS and python-memcache package for Debian
Installs libmemcached development files to install pylibmc as python driver
Stops the memcached service and uninstalls the package.
Add this repository as a GitFS backend in your Salt master config.
Determine which minions will run memcached and
includethememcachedstate.One possible example is to run memcached on each server that is also running your web application. The following contrived example uses a Django web app deployed from an internal Git repository:
include: - memcached - memcached.python_memcached python-django: pkg: - installed https://internal-repos/mydjangoapp.git: git.latest: - target: /var/www/mydjangoapp - require: - pkg: python-django - pkg: python-memcached(Optional) Use Salt Mine to maintain a live list of currently running memcached instances in your web application config.
The following example assumes all web application servers have a hostname that starts with "web".
Configure your Pillar top file (
/srv/pillar/top.sls):base: 'web*': - application_serverConfigure Salt Mine in
/srv/pillar/application_server.sls:mine_functions: network.interfaces: [eth0]
Add the IP addresses to your web application config.
Building on the Django example above, add the following states:
/var/www/mydjangoapp/config.py: file: - managed - source: salt://mydjangoapp/config.py - template: jinja - require: - git: https://internal-repos/mydjangoapp.gitEdit the
/srv/salt/mydjangoapp/config.pytemplate to add the memcached server addresses (only relevant portions ofconfig.pyare shown):CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache', 'LOCATION': [ {% for server,ip in salt['mine.get']('web*', 'network.interfaces', ['eth0']).items() %} '{{ ip }}:11211`, {% endfor %} ] } }