feat: Add roles for redis and postgresql on Uberspace

This commit is contained in:
2025-10-19 11:30:54 +02:00
parent 377d7078e8
commit 7edf9c649f
13 changed files with 167 additions and 0 deletions
+11
View File
@@ -0,0 +1,11 @@
---
- name: Set used postgresql version
ansible.builtin.command:
cmd: uberspace tools version use postgresql {{ postgresql_version }}
changed_when: false
- name: Extend bash profile
ansible.builtin.import_tasks: profile.yaml
- name: Set up postgresql
ansible.builtin.import_tasks: setup.yaml
- name: Set up service
ansible.builtin.import_tasks: service.yaml
@@ -0,0 +1,33 @@
---
- name: Copy profile file to home dir
ansible.builtin.template:
src: postgres_profile.j2
dest: ~/.postgres_profile
mode: 0644
register: postgres_profile
- name: Include postgres profile in bash_profile
ansible.builtin.lineinfile:
path: ~/.bash_profile
line: source ~/.postgres_profile
insertafter: EOF
when: postgres_profile.changed
- name: Source bash_profile
ansible.builtin.command:
cmd: source ~/.bash_profile
when: postgres_profile.changed
- name: Copy environment var file to home dir
ansible.builtin.template:
src: postgres_env.j2
dest: ~/.postgres_vars
mode: 0644
register: postgres_env
- name: include postgres vars in bashrc
ansible.builtin.lineinfile:
path: ~/.bashrc
line: source ~/.postgres_vars
insertafter: EOF
when: postgres_env.changed
- name: Source bashrc
ansible.builtin.command:
cmd: source ~/.bashrc
when: postgres_env.changed
@@ -0,0 +1,12 @@
---
- name: Copy postgresql service
ansible.builtin.template:
src: etc/services.d/postgresql.ini.j2
dest: /home/{{ ssh_user }}/etc/services.d/postgresql.ini
owner: "{{ ssh_user }}"
group: "{{ ssh_user }}"
mode: "644"
- name: Start postgresql
community.general.supervisorctl:
state: started
name: postgresql
+58
View File
@@ -0,0 +1,58 @@
---
- name: Create shared secret
ansible.builtin.command:
cmd: openssl rand -hex 32
register: postgresql_secret
changed_when: false
- name: Create pgpass file
ansible.builtin.template:
src: .pgpass.j2
dest: ~/.pgpass
owner: "{{ ssh_user }}"
group: "{{ ssh_user }}"
mode: "600"
- name: Create pgpass.temp file
ansible.builtin.template:
src: .pgpass.temp.j2
dest: ~/.pgpass.temp
owner: "{{ ssh_user }}"
group: "{{ ssh_user }}"
mode: "600"
- name: Create database
ansible.builtin.command:
cmd: initdb --pwfile ~/pgpass.temp --auth=scram-sha-256 -E UTF8 -D ~/opt/postgresql/data/
creates: ~/opt/postgresql/data
- name: Delete temporary password file
ansible.builtin.file:
path: ~/.pgpass.temp
state: absent
- name: Update unix socket directories
ansible.builtin.lineinfile:
path: ~/opt/postgresql/data/postgresql.conf
regexp: '^#unix_socket_directories'
line: unix_socket_directories = '/home/{{ ssh_user }}/tmp' # comma-separated list of directories
- name: Configure max files per process
ansible.builtin.lineinfile:
path: ~/opt/postgresql/data/postgresql.conf
regexp: '^#?max_files_per_process'
line: max_files_per_process = {{ max_files_per_process }}
- name: Configure max worker processes
ansible.builtin.lineinfile:
path: ~/opt/postgresql/data/postgresql.conf
regexp: '^#?max_worker_processes'
line: max_worker_processes = {{ max_worker_processes }}
- name: Configure max parallel workers
ansible.builtin.lineinfile:
path: ~/opt/postgresql/data/postgresql.conf
regexp: '^#?max_parallel_workers'
line: max_parallel_workers = {{ max_parallel_workers }}
- name: Configure max connections
ansible.builtin.lineinfile:
path: ~/opt/postgresql/data/postgresql.conf
regexp: '^#?max_connections'
line: max_connections = {{ max_connections }}
- name: Configure log directory
ansible.builtin.lineinfile:
path: ~/opt/postgresql/data/postgresql.conf
regexp: '^#?log_directory'
line: log_directory = /home/{{ ssh_user }}/logs