diff --git a/admin/.editorconfig b/admin/.editorconfig new file mode 100644 index 0000000..99a67aa --- /dev/null +++ b/admin/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +tab_width = 2 +trim_trailing_whitespace = true diff --git a/admin/ansible.cfg b/admin/ansible.cfg new file mode 100644 index 0000000..34662e9 --- /dev/null +++ b/admin/ansible.cfg @@ -0,0 +1,2 @@ +[defaults] +inventory = ./hosts diff --git a/admin/dep_versions.yml b/admin/dep_versions.yml new file mode 100644 index 0000000..f8bf432 --- /dev/null +++ b/admin/dep_versions.yml @@ -0,0 +1,2 @@ +--- +valkey: 8.0.1 diff --git a/admin/hosts b/admin/hosts new file mode 100644 index 0000000..e49a8a7 --- /dev/null +++ b/admin/hosts @@ -0,0 +1,2 @@ +[alpha] +saffron.internal diff --git a/admin/includes/users.acl b/admin/includes/users.acl new file mode 100644 index 0000000..6069ee3 --- /dev/null +++ b/admin/includes/users.acl @@ -0,0 +1,2 @@ +user debt_pirate on >H553jOui2734 +multi +ping +@keyspace +@read +@string +@hash +@set +@pubsub ~*debt_pirate* &*debt_pirate* +user default off diff --git a/admin/playbooks/01-setup b/admin/playbooks/01-setup new file mode 100644 index 0000000..53a3dc6 --- /dev/null +++ b/admin/playbooks/01-setup @@ -0,0 +1,159 @@ +--- +- hosts: alpha + become: yes + vars_files: + - '{{ inventory_dir }}/dep_versions.yml' + + tasks: + - name: Update System and Packages + ansible.builtin.apt: + update_cache: yes + upgrade: yes + - name: Install System Dependencies + ansible.builtin.package: + name: build-essential,libssl-dev,libsystemd-dev,git,curl,zip,pkg-config,tcl + state: present + - name: Create System User for Valkey + ansible.builtin.user: + name: valkey + system: true + tags: + - valkey + - name: Download Valkey Source Code + ansible.builtin.get_url: + url: https://github.com/valkey-io/valkey/archive/refs/tags/{{ valkey }}.zip + dest: /usr/local/src/valkey-{{ valkey }}.zip + tags: + - valkey + - build + - name: Unzip Valkey Source Code + ansible.builtin.unarchive: + src: /usr/local/src/valkey-{{ valkey }}.zip + dest: /usr/local/src + remote_src: true + tags: + - valkey + - build + - name: Compile Valkey + community.general.make: + chdir: /usr/local/src/valkey-{{ valkey }} + params: + BUILD_TLS: module + USE_SYSTEMD: yes + tags: + - valkey + - build + - name: Run Valkey Tests + ansible.builtin.command: + chdir: /usr/local/src/valkey-{{ valkey }} + argv: + - make + - test + tags: + - valkey + - tests + - name: Install Valkey + community.general.make: + chdir: /usr/local/src/valkey-{{ valkey }} + target: install + tags: + - valkey + - name: Create Valkey Config Directory + ansible.builtin.file: + path: /etc/valkey + state: directory + owner: valkey + group: valkey + mode: 0770 + tags: + - valkey + - name: Create Valkey Runtime Directory + ansible.builtin.file: + path: /var/lib/valkey + state: directory + owner: valkey + group: valkey + mode: 0770 + tags: + - valkey + - name: Enable ACL File in Valkey Config + ansible.builtin.lineinfile: + path: /usr/local/src/valkey-{{ valkey }}/valkey.conf + firstmatch: true + regex: '^# aclfile' + line: aclfile /etc/valkey/users.acl + - name: Copy Included Valkey Config File to Config Directory + ansible.builtin.copy: + remote_src: true + src: /usr/local/src/valkey-{{ valkey }}/valkey.conf + dest: /etc/valkey/valkey.conf + owner: valkey + group: valkey + mode: 0640 + tags: + - valkey + - name: Copy Valkey ACL File to Config Directory + ansible.builtin.copy: + src: '{{ inventory_dir }}/includes/users.acl' + dest: /etc/valkey/users.acl + owner: valkey + group: valkey + mode: 0640 + tags: + - valkey + - name: Edit Valkey Systemd Service File to Set Proper ExecCommand Parameter + ansible.builtin.lineinfile: + path: /usr/local/src/valkey-{{ valkey }}/utils/systemd-valkey_server.service + firstmatch: true + regex: '^ExecStart' + line: ExecStart=/usr/local/bin/valkey-server /etc/valkey/valkey.conf --supervised systemd --daemonize no + backup: true + tags: + - valkey + - name: Edit Valkey Systemd Service File to Set Proper User Parameter + ansible.builtin.lineinfile: + path: /usr/local/src/valkey-{{ valkey }}/utils/systemd-valkey_server.service + firstmatch: true + regex: '^#User' + line: User=valkey + tags: + - valkey + - name: Edit Valkey Systemd Service File to Set Proper Group Parameter + ansible.builtin.lineinfile: + path: /usr/local/src/valkey-{{ valkey }}/utils/systemd-valkey_server.service + firstmatch: true + regex: '^#Group' + line: Group=valkey + tags: + - valkey + - name: Edit Valkey Systemd Service File to Set Proper WorkingDirectory Parameter + ansible.builtin.lineinfile: + path: /usr/local/src/valkey-{{ valkey }}/utils/systemd-valkey_server.service + firstmatch: true + regex: '^#WorkingDirectory' + line: WorkingDirectory=/var/lib/valkey + tags: + - valkey + - name: Copy Included Valkey Systemd Service File to Proper Location + ansible.builtin.copy: + remote_src: true + src: /usr/local/src/valkey-{{ valkey }}/utils/systemd-valkey_server.service + dest: /etc/systemd/system/valkey.service + owner: valkey + group: valkey + mode: 0 + tags: + - valkey + - name: Enable Valkey Service + ansible.builtin.systemd_service: + name: valkey.service + enabled: true + daemon_reload: true + tags: + - valkey + - name: Start Valkey Service + ansible.builtin.systemd_service: + name: valkey.service + state: started + tags: + - valkey