memcached ========= Install and start the memcached service Instructions ------------ 1. Add this repository as a `GitFS backend`__ in your Salt master config. 2. Determine which minions will run memcached and ``include`` the ``memcached`` state. 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 3. (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". 1. Configure your Pillar top file (``/srv/pillar/top.sls``):: base: 'web*': - application_server 2. Configure Salt Mine in ``/srv/pillar/application_server.sls``:: mine_functions: network.interfaces: [eth0] 3. 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.git Edit the ``/srv/salt/mydjangoapp/config.py`` template to add the memcached server addresses (only relevant portions of ``config.py`` are 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 %} ] } } .. _`GitFS backend`: http://docs.saltstack.com/topics/tutorials/gitfs.html