--- - name: install dependencies become: true ansible.builtin.apt: update_cache: true force_apt_get: true state: present cache_valid_time: 3600 pkg: - build-essential - dpkg-dev - gcc - git - libc6-dev - libjemalloc2 - libjemalloc-dev - libssl-dev - libsystemd-dev - make - python3-cryptography - ssl-cert - name: gather facts ansible.builtin.include_tasks: gather_facts.yml - name: create service group become: true ansible.builtin.group: name: "{{ valkey_group }}" system: true state: present - name: create service user become: true ansible.builtin.user: name: "{{ valkey_user }}" group: "{{ valkey_group }}" shell: "/usr/sbin/nologin" home: "{{ valkey_install_dir }}" create_home: true system: true state: present - name: fetch Valkey {{ valkey_version }} source code archive become: true nullified.infrastructure.github_artifact: asset_type: tag version: "{{ valkey_version | default('latest') }}" github_token: "{{ valkey_github_token }}" repository: "valkey-io/valkey" creates: "{{ valkey_install_dir }}/src" cmds: - tar -zxf {asset_dirname}/{asset_filename} - 'mv $(find . -maxdepth 1 -name valkey-io-valkey\* -type d) {{ valkey_install_dir }}/src' - name: compile Valkey (some tweaks taken from Valkey's Dockerfile become: true args: chdir: '{{ valkey_install_dir }}/src' ansible.builtin.shell: '{{ item }}' loop: - 'make distclean || true' - |- extraJemallocConfigureFlags="--build=$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; case $(dpkg --print-architecture) in amd64 | i386 | x32) extraJemallocConfigureFlags="$extraJemallocConfigureFlags --with-lg-page=12" ;; *) extraJemallocConfigureFlags="$extraJemallocConfigureFlags --with-lg-page=16" ;; esac; extraJemallocConfigureFlags="$extraJemallocConfigureFlags --with-lg-hugepage=21"; sed -ri 's!cd jemalloc && ./configure !&'"$extraJemallocConfigureFlags"' !' ./deps/Makefile; - 'make -j $(nproc) BUILD_TLS=yes USE_SYSTEMD=yes' - make install - name: create directories become: true ansible.builtin.file: path: '{{ item }}' owner: '{{ valkey_user }}' group: '{{ valkey_group }}' mode: 'u=rwX,g=rX,o=' state: directory loop: - '{{ valkey_config_dir }}' - '{{ valkey_config_dir }}/conf.d' - '{{ valkey_install_dir }}' - name: create basic configuration become: true ansible.builtin.template: src: '../templates/valkey.conf.j2' dest: '{{ valkey_config_dir }}/valkey.conf' owner: '{{ valkey_user }}' group: '{{ valkey_group }}' mode: 'u=rw,g=r,o=' - name: create self-signed certificate become: true block: - name: create private key community.crypto.openssl_privatekey: path: '{{ valkey_config_dir }}/valkey.key' mode: '0600' owner: '{{ valkey_user }}' group: '{{ valkey_group }}' curve: secp521r1 - name: create self-signed certificate community.crypto.x509_certificate: path: '{{ valkey_config_dir }}/valkey.crt' privatekey_path: '{{ valkey_config_dir }}/valkey.key' provider: selfsigned mode: '0644' owner: '{{ valkey_user }}' group: '{{ valkey_group }}' when: valkey_generate_cert is truthy - name: install Valkey service file become: true ansible.builtin.template: src: ../templates/systemd/valkey.service.j2 dest: '{{ systemd_unit_directory }}/valkey.service' owner: root group: root mode: 'u=rwX,g=rX,o=' notify: - 'valkey : restart service' - meta: flush_handlers - name: test server ansible.builtin.command: valkey-cli --tls --insecure info changed_when: false