diff --git a/tasks/instance.yml b/tasks/instance.yml index 18f9f08b11127ea1c89a5f9c8eb608c88ec846b0..034418b3b571cc8646d6d0ad17ae6d52b2dcea30 100644 --- a/tasks/instance.yml +++ b/tasks/instance.yml @@ -14,7 +14,7 @@ - name: Debug valkey_instance ansible.builtin.debug: var: valkey_instance - verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}0{% else %}1{% endif %}" + verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}1{% else %}2{% endif %}" - name: Debug valkey_instance.config ansible.builtin.debug: @@ -34,6 +34,20 @@ verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}0{% else %}1{% endif %}" when: valkey_instance.config.unixsocket is defined + - name: "Set a fact for the systemd service name for {{ valkey_instance.name }}" + ansible.builtin.set_fact: + valkey_instance_service: >- + {%- if valkey_instance.name == "server" -%} + valkey-server.service + {%- else -%} + valkey-server@{{ valkey_instance.name }}.service + {%- endif -%} + + - name: Debug valkey_instance_service + ansible.builtin.debug: + var: valkey_instance_service + verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}0{% else %}1{% endif %}" + - name: "Stat the Valkey instance config for {{ valkey_instance.name }}" ansible.builtin.stat: path: "{{ valkey_instance.config_file }}" @@ -45,10 +59,15 @@ # ansible.builtin.tempfile can't be used in check mode - name: "Set a fact for a random string for a TMP directory for {{ valkey_instance.name }}" ansible.builtin.set_fact: - valkey_random: "{{ lookup('community.general.random_string', length=12) }}" + valkey_random: "{{ lookup('community.general.random_string', length=12, special=false) }}" check_mode: false changed_when: false + - name: Debug valkey_random + ansible.builtin.debug: + var: valkey_random + verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}2{% else %}3{% endif %}" + - name: "TMP directory present for {{ valkey_instance.name }}" ansible.builtin.file: path: "/tmp/{{ valkey_random }}" @@ -116,40 +135,78 @@ - name: Valkey enabled and started block: - - name: "Valkey enabled for {{ valkey_instance.name }}" + - name: "Valkey enabled {{ valkey_instance_service }}" ansible.builtin.systemd_service: - name: "valkey-server@{{ valkey_instance.name }}.service" + name: "{{ valkey_instance_service }}" enabled: true + register: valkey_instance_enabled - - name: "Valkey started for {{ valkey_instance.name }}" - ansible.builtin.systemd_service: - name: "valkey-server@{{ valkey_instance.name }}.service" - state: started - - - name: "Check Valkey info using a UNIX socket for {{ valkey_instance.name }}" - ansible.builtin.command: >- - valkey-cli - {% if valkey_instance.config.unixsocket is defined %} - -s {{ valkey_instance.config.unixsocket }} - {% else %} - -h localhost -p {{ valkey_instance.config.port }} - {% endif %} - INFO SERVER - check_mode: false - changed_when: false - register: valkey_instance_info_server - - - name: Debug valkey_instance_info_server + - name: Debug valkey_instance_enabled ansible.builtin.debug: - var: valkey_instance_info_server + var: valkey_instance_enabled + verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}1{% else %}2{% endif %}" - - name: "Set a fact for the Valkey info for {{ valkey_instance.name }}" - ansible.builtin.set_fact: - valkey_instance_info: "{{ valkey_instance_info_server.stdout | string | community.general.jc('ini') }}" + - name: "Valkey started for {{ valkey_instance_service }}" + ansible.builtin.systemd_service: + name: "{{ valkey_instance_service }}" + state: started + register: valkey_instance_started - - name: Debug valkey_instance_info + - name: Debug valkey_instance_started ansible.builtin.debug: - var: valkey_instance_info + var: valkey_instance_started + verbosity: "{% if ansible_check_mode | bool or ansible_diff_mode | bool %}1{% else %}2{% endif %}" + + - name: Check Valkey instance status + block: + + - name: "When active check Valkey info using REDISCLI_AUTH for {{ valkey_instance.name }}" + ansible.builtin.command: >- + valkey-cli + {% if valkey_instance.config.unixsocket is defined %} + -s {{ valkey_instance.config.unixsocket }} + {% else %} + -h localhost -p {{ valkey_instance.config.port }} + {% endif %} + INFO SERVER + environment: + REDISCLI_AUTH: "{{ valkey_instance.config.requirepass }}" + check_mode: false + changed_when: false + register: valkey_instance_info_server + when: + - valkey_instance_enabled.enabled | bool + - valkey_instance.config.requirepass is defined + + - name: "Check Valkey info for {{ valkey_instance.name }}" + ansible.builtin.command: >- + valkey-cli + {% if valkey_instance.config.unixsocket is defined %} + -s {{ valkey_instance.config.unixsocket }} + {% else %} + -h localhost -p {{ valkey_instance.config.port }} + {% endif %} + INFO SERVER + check_mode: false + changed_when: false + register: valkey_instance_info_server + when: + - valkey_instance_enabled.enabled | bool + - valkey_instance.config.requirepass is not defined + + - name: Debug valkey_instance_info_server + ansible.builtin.debug: + var: valkey_instance_info_server + + - name: "Set a fact for the Valkey info for {{ valkey_instance.name }}" + ansible.builtin.set_fact: + valkey_instance_info: "{{ valkey_instance_info_server.stdout | string | community.general.jc('ini') }}" + + - name: Debug valkey_instance_info + ansible.builtin.debug: + var: valkey_instance_info + + when: valkey_instance_started.status.ActiveState == "active" when: valkey_instance_config_templated.state == "file" diff --git a/templates/valkey.conf.j2 b/templates/valkey.conf.j2 index ca71a845f849a9e4ff60c5e9b8d2353e48c4455f..b37506bcbafc4fc2c59b582e888653e91c703b4c 100644 --- a/templates/valkey.conf.j2 +++ b/templates/valkey.conf.j2 @@ -1089,7 +1089,11 @@ acllog-max-len 128 # The requirepass is not compatible with aclfile option and the ACL LOAD # command, these will cause requirepass to be ignored. # +{% if valkey_instance.config.requirepass is defined %} +requirepass {{ valkey_instance.config.requirepass }} +{% else %} # requirepass foobared +{% endif %} # The default Pub/Sub channels permission for new users is controlled by the # acl-pubsub-default configuration directive, which accepts one of these values: