Start creating an Ansible playbook to bootstrap an environment together

This commit is contained in:
Z. Charles Dziura 2024-11-30 13:40:15 -05:00
parent ece116a411
commit 86485e6ab6
6 changed files with 177 additions and 0 deletions

10
admin/.editorconfig Normal file
View file

@ -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

2
admin/ansible.cfg Normal file
View file

@ -0,0 +1,2 @@
[defaults]
inventory = ./hosts

2
admin/dep_versions.yml Normal file
View file

@ -0,0 +1,2 @@
---
valkey: 8.0.1

2
admin/hosts Normal file
View file

@ -0,0 +1,2 @@
[alpha]
saffron.internal

2
admin/includes/users.acl Normal file
View file

@ -0,0 +1,2 @@
user debt_pirate on >H553jOui2734 +multi +ping +@keyspace +@read +@string +@hash +@set +@pubsub ~*debt_pirate* &*debt_pirate*
user default off

159
admin/playbooks/01-setup Normal file
View file

@ -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