120 lines
3.7 KiB
YAML
120 lines
3.7 KiB
YAML
---
|
|
- 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
|