Coder Social home page Coder Social logo

ansible-role-redis's Introduction

redis

Build Status Build Status Updates Python 3 Ansible Role

Install redis package.

By default, this role will also managed sysctl settings (overcommit, somaxconn) to remove warnings You also need Transparent Huge Pages management, see infopen.sysfs role to manage these settings per example I've set it for test dependencies only

Requirements

This role requires Ansible 2.2 or higher, and platform requirements are listed in the metadata file.

Testing

This role use Molecule to run tests.

Local and Travis tests run tests on Docker by default. See molecule documentation to use other backend.

Currently, tests are done on:

  • Debian Jessie
  • Ubuntu Trusty
  • Ubuntu Xenial

and use:

  • Ansible 2.2.x
  • Ansible 2.3.x
  • Ansible 2.4.x

Running tests

Using Docker driver

$ tox

Additional repository management

To have a more recent Redis version and have access to Sentinel on Debian Jessie, addtional repositories must be used via redis_manage_additional_repository variable.

You can see these repositories below, in OS distribution variables.

Role Variables

Default role variables

# General
redis_manage_system_optimization: True
redis_manage_additional_repository: True
redis_manage_redis_sentinel: False
redis_manage_redis_server: True

# Repository management
redis_apt_cache_valid_time: 3600
redis_repository_keyserver: "{{ _redis_repository_keyserver | default('') }}"
redis_repository_key_id: "{{ _redis_repository_key_id | default('') }}"
redis_repositories: "{{ _redis_repositories | default([]) }}"

# System optimization
redis_system_optimization_overcommit_memory_value: 1
redis_system_optimization_overcommit_memory_state: 'present'
redis_system_optimization_somaxconn_value: 65535
redis_system_optimization_somaxconn_state: 'present'

# System dependencies
redis_system_dependencies: "{{ _redis_system_dependencies }}"


# Redis server specific vars
# -----------------------------------------------------------------------------

# Package management
redis_server_packages: "{{ _redis_server_packages }}"

# Service management
redis_server_service_name: "{{ _redis_server_service_name }}"
redis_server_service_state: 'started'
redis_server_service_enabled: True

# Files configuration
redis_folders: "{{ _redis_folders }}"
redis_server_config_file:
  name: 'redis.conf'
  owner: 'redis'
  group: 'redis'
  mode: '0600'

# General server configuration
redis_server_daemonize: 'yes'
redis_server_pid_file: "{{ redis_folders.pid.path }}/redis-server.pid"
redis_server_port: 6379
redis_server_bind_ip:
  - 127.0.0.1
redis_server_use_unixsocket: False
redis_server_unixsocket: "{{ redis_folders.socket.path }}/redis.sock"
redis_server_unixsocketperm: 755
redis_server_timeout: 0
redis_server_tcp_keepalive: 0
redis_server_loglevel: 'notice'
redis_server_logfile: "{{ redis_folders.log.path }}/redis-server.log"
redis_server_use_syslog: 'no'
redis_server_syslog_enabled: 'no'
redis_server_syslog_ident: 'redis'
redis_server_syslog_facility: 'local0'
redis_server_database: 16

# Snapshotting server configuration
redis_server_save:
  - '900 1'
  - '300 10'
  - '60 10000'
redis_server_stop_writes_on_bgsave_error: 'yes'
redis_server_rdbcompression: 'yes'
redis_server_rdbchecksum: 'yes'
redis_server_dbfilename: 'dump.rdb'
redis_server_dir: "{{ redis_folders.data.path }}"

# Replication configuration
redis_server_slaveof: False
redis_server_slaveof_master_ip: ''
redis_server_slaveof_master_port: ''
redis_server_master_auth: ''
redis_server_slave_serve_stale_data: 'yes'
redis_server_slave_read_only: 'yes'
redis_server_repl_ping_slave_period: 10
redis_server_repl_timeout: 60
redis_server_repl_disable_tcp_nodelay: 'no'
redis_server_repl_backlog_size: '1mb'
redis_server_repl_backlog_ttl: 3600
redis_server_slave_priority: 100
redis_server_min_slaves_to_write: 3
redis_server_min_slaves_max_lag: 10

# Security configuration
redis_server_require_pass: ''
redis_server_renamed_commands: []

# Limits configuration
redis_server_maxclients: 10000
redis_server_limit_maxmemory: False
redis_server_limit_maxmemory_size: 4000000000
redis_server_maxmemory_policy: 'volatile-lru'
redis_server_maxmemory_samples: 3

# Append only mode configuration
redis_server_appendonly: 'no'
redis_server_appendfilename: 'appendonly.aof'
redis_server_appendfsync: 'everysec'
redis_server_no_appendfsync_on_rewrite: 'no'
redis_server_auto_aof_rewrite_percentage: 100
redis_server_auto_aof_rewrite_min_size: '64mb'

# Lua scripting configuration
redis_server_lua_time_limit: 5000

# Slow log configuration
redis_server_slowlog_log_slower_than: 10000
redis_server_slowlog_max_len: 128

# Event notification configuration
redis_server_notify_keyspace_events: ''

# Advanced configuration
redis_server_hash_max_ziplist_entries: 512
redis_server_hash_max_ziplist_value: 64
redis_server_list_max_ziplist_entries: 512
redis_server_list_max_ziplist_value: 64
redis_server_set_max_intset_entries: 512
redis_server_zset_max_ziplist_entries: 128
redis_server_zset_max_ziplist_value: 64
redis_server_activerehashing: 'yes'
redis_server_client_output_buffer_limit:
  - 'normal 0 0 0'
  - 'slave 256mb 64mb 60'
  - 'pubsub 32mb 8mb 60'
redis_server_hz: 10
redis_server_aof_rewrite_incremental_fsync: 'yes'

# Includes
redis_server_include: []


# Redis sentinel specific vars
# -----------------------------------------------------------------------------

# Package management
redis_sentinel_packages: "{{ _redis_sentinel_packages }}"

# Service management
redis_sentinel_service_name: "{{ _redis_sentinel_service_name }}"
redis_sentinel_service_state: 'started'
redis_sentinel_service_enabled: True

# Configuration file properties
redis_sentinel_config_file:
  name: 'sentinel.conf'
  owner: 'redis'
  group: 'redis'
  mode: '0600'

# Configuration
redis_sentinel_daemonize: True
redis_sentinel_bind: 'localhost'
redis_sentinel_port: 26379
redis_sentinel_protected_mode: True
redis_sentinel_announce_ip: null
redis_sentinel_announce_port: null
redis_sentinel_pidfile: "{{ redis_folders.pid.path }}/redis-sentinel.pid"
redis_sentinel_logfile: "{{ redis_folders.log.path }}/redis-sentinel.log"
redis_sentinel_dir: "{{ redis_folders.data.path }}"
redis_sentinel_myid: "{{ ansible_hostname | hash('sha1') }}"
redis_sentinel_monitors:
  - name: 'mymaster'
    host: '127.0.0.1'
    port: 6379
    quorum: 2
    config_epoch: 0
    down_after_milliseconds: 30000
    leader_epoch: 0
    parallel_syncs: 1
    failover_timeout: 180000
    notification_script: null
    client_reconfig_script: null

Debian OS family variables

# Redis paths
_redis_folders:
  config:
    path: '/etc/redis'
  data:
    path: '/var/lib/redis'
  log:
    path: '/var/log/redis'
  pid:
    path: '/var/run/redis'
  socket:
    path: '/var/run/redis'


# Redis server specific vars
# -----------------------------------------------------------------------------

# Packages management
_redis_server_packages:
  - name: 'redis-server'

# Service management
_redis_server_service_name: 'redis-server'


# Redis sentinel specific vars
# -----------------------------------------------------------------------------

# Packages management
_redis_sentinel_packages:
  - name: 'redis-sentinel'

# Service management
_redis_sentinel_service_name: 'redis-sentinel'

Ubuntu distributions variables

_redis_repository_keyserver: 'keyserver.ubuntu.com'
_redis_repository_key_id: 'C7917B12'
_redis_repositories:
  - repo: >
      deb http://ppa.launchpad.net/chris-lea/redis-server/{{ ansible_distribution | lower }}
      {{ ansible_distribution_release }}
      main
  - repo: >
      deb-src http://ppa.launchpad.net/chris-lea/redis-server/{{ ansible_distribution | lower }}
      {{ ansible_distribution_release }}
      main

Ubuntu distributions variables

_redis_repository_keyserver: 'keyserver.ubuntu.com'
_redis_repository_key_id: '7E3F070089DF5277'
_redis_repositories:
  - repo: 'deb http://ftp.utexas.edu/dotdeb/ stable all'
  - repo: 'deb-src http://ftp.utexas.edu/dotdeb/ stable all'

Dependencies

None

Example Playbook

- hosts: servers
  roles:
    - { role: infOpen.redis }

License

MIT

Author Information

Alexandre Chaussier (for Infopen company)

ansible-role-redis's People

Contributors

achaussier avatar pyup-bot avatar

Watchers

 avatar  avatar  avatar

Forkers

temelio

ansible-role-redis's Issues

Initial Update

Hi ๐Ÿ‘Š

This is my first visit to this fine repo, but it seems you have been working hard to keep all dependencies updated so far.

Once you have closed this issue, I'll create separate pull requests for every update as soon as I find one.

That's it for now!

Happy merging! ๐Ÿค–

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.