diff --git a/defaults/main.yml b/defaults/main.yml index 405ffa79..4d8509ce 100644 --- a/defaults/main.yml +++ b/defaults/main.yml @@ -1,10 +1,13 @@ --- ## Installation options +redis_install_method: "source" redis_version: 2.8.24 redis_install_dir: /opt/redis redis_dir: /var/lib/redis/{{ redis_port }} redis_config_file_name: "{{ redis_port }}.conf" redis_download_url: "http://download.redis.io/releases/redis-{{ redis_version }}.tar.gz" +redis_package: redis-server +redis_pin_package: false redis_protected_mode: "yes" # Set this to true to validate redis tarball checksum against vars/main.yml diff --git a/handlers/main.yml b/handlers/main.yml index 7719b322..2b4cf7ac 100644 --- a/handlers/main.yml +++ b/handlers/main.yml @@ -10,3 +10,9 @@ name: sentinel_{{ redis_sentinel_port }} state: restarted when: redis_as_service + +- name: "disable redis" + service: + name: "{{ redis_service_name }}" + enabled: no + when: redis_as_service diff --git a/tasks/main.yml b/tasks/main.yml index 77327f71..cf125e1c 100644 --- a/tasks/main.yml +++ b/tasks/main.yml @@ -2,19 +2,31 @@ - include: check_vars.yml - include: download.yml + when: redis_install_method == "source" tags: - download - include: dependencies.yml + when: redis_install_method == "source" tags: - install -- include: install.yml +- include: setup.yml + tags: + - install + +- include: package.yml + when: redis_install_method == "package" + tags: + - install + +- include: source.yml + when: redis_install_method == "source" tags: - install - include: server.yml - when: not redis_sentinel + when: redis_server tags: - config diff --git a/tasks/package.yml b/tasks/package.yml new file mode 100644 index 00000000..30cbdc67 --- /dev/null +++ b/tasks/package.yml @@ -0,0 +1,29 @@ +--- +- name: Set pin content + set_fact: + pin_content: | + {{ pin_content | default('') }} + Package: {{ item }} + Pin: version {{ redis_version }} + Pin-Priority: 1001 + loop: "{{ redis_packages }}" + +- name: Pin Redis release + copy: + dest: /etc/apt/preferences.d/redis + owner: root + group: root + mode: '0644' + content: "{{ pin_content }}" + when: + - redis_pin_package + - ansible_distribution == "Ubuntu" or ansible_distribution == "Debian" + +- name: Install Redis package + package: + name: "{{ redis_packages }}" + state: present + notify: "disable redis" + +- name: flush handlers to disable redis after install + meta: flush_handlers diff --git a/tasks/server.yml b/tasks/server.yml index 7befe8a9..90538e08 100644 --- a/tasks/server.yml +++ b/tasks/server.yml @@ -57,7 +57,7 @@ service: name: "{{ redis_service_name }}" enabled: yes - when: redis_as_service + when: redis_as_service or redis_install_method == "package" # Check then create log dir to prevent aggressively overwriting permissions - name: check if log directory exists @@ -85,7 +85,7 @@ owner: "{{ redis_user }}" group: "{{ redis_group }}" when: redis_logfile != '""' - + - name: update permissions of log file if needed file: state: file diff --git a/tasks/setup.yml b/tasks/setup.yml new file mode 100644 index 00000000..1a42601d --- /dev/null +++ b/tasks/setup.yml @@ -0,0 +1,9 @@ +--- +- name: enable overcommit in sysctl + sysctl: + name: vm.overcommit_memory + value: "1" + state: present + reload: yes + ignoreerrors: yes + when: redis_travis_ci is not defined diff --git a/tasks/install.yml b/tasks/source.yml similarity index 90% rename from tasks/install.yml rename to tasks/source.yml index 82808b4d..1d52c0e5 100644 --- a/tasks/install.yml +++ b/tasks/source.yml @@ -1,13 +1,4 @@ --- -- name: enable overcommit in sysctl - sysctl: - name: vm.overcommit_memory - value: "1" - state: present - reload: yes - ignoreerrors: yes - when: redis_travis_ci is not defined - - name: compile redis shell: umask 0022 && make -j{{ ansible_processor_cores|default(1) + 1 }}{{ ' 32bit' if redis_make_32bit|bool else '' }}{{ ' BUILD_TLS=yes' if redis_make_tls|bool else '' }} args: