Initial commit uberspace ansible
This commit is contained in:
6
roles/common/handlers/main.yml
Normal file
6
roles/common/handlers/main.yml
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
- name: reload supervisorctl
|
||||
command: supervisorctl reread
|
||||
- name: update supervisorctl
|
||||
command: supervisorctl update
|
||||
|
||||
2
roles/postgres/defaults/main.yml
Normal file
2
roles/postgres/defaults/main.yml
Normal file
@ -0,0 +1,2 @@
|
||||
---
|
||||
postgres_version: 13.1
|
||||
3
roles/postgres/handlers/main.yml
Normal file
3
roles/postgres/handlers/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
- name: restart postgres
|
||||
command: supervisorctl restart postgresql
|
||||
3
roles/postgres/meta/main.yml
Normal file
3
roles/postgres/meta/main.yml
Normal file
@ -0,0 +1,3 @@
|
||||
---
|
||||
dependencies:
|
||||
- role: common
|
||||
18
roles/postgres/tasks/compile.yml
Normal file
18
roles/postgres/tasks/compile.yml
Normal file
@ -0,0 +1,18 @@
|
||||
---
|
||||
- name: create directory for download
|
||||
file:
|
||||
path: ~/postgres
|
||||
state: directory
|
||||
mode: '0755'
|
||||
- name: download PostgreSQL and extract archive
|
||||
unarchive:
|
||||
src: https://download.postgresql.org/pub/source/v{{ postgres_version }}/postgresql-{{ postgres_version }}.tar.gz
|
||||
dest: ~/postgres
|
||||
remote_src: yes
|
||||
- name: configure PostgreSQL
|
||||
command: cd ~/postgres/postgresql-{{ postgres_version }} && ./configure --prefix=$HOME/opt/postgresql/ --with-python PYTHON=/usr/bin/python3
|
||||
- name: make PostgreSQL
|
||||
command: cd ~/postgres/postgresql-{{ postgres_version }} && make world
|
||||
- name: install PostgreSQL
|
||||
command: cd ~/postgres/postgresql-{{ postgres_version }} && make install-world
|
||||
|
||||
5
roles/postgres/tasks/main.yml
Normal file
5
roles/postgres/tasks/main.yml
Normal file
@ -0,0 +1,5 @@
|
||||
---
|
||||
- include: compile.yml
|
||||
- include: profile.yml
|
||||
- include: setup.yml
|
||||
- include: service.yml
|
||||
21
roles/postgres/tasks/profile.yml
Normal file
21
roles/postgres/tasks/profile.yml
Normal file
@ -0,0 +1,21 @@
|
||||
---
|
||||
- name: copy profile file to home dir
|
||||
template:
|
||||
src: postgres_profile.j2
|
||||
dest: ~/.postgres_profile
|
||||
mode: 0644
|
||||
- name: include postgres profile in bash_profile
|
||||
lineinfile:
|
||||
path: ~/.bash_profile
|
||||
line: source ~/.postgres_profile
|
||||
insertafter: EOF
|
||||
- name: copy environment var file to home dir
|
||||
template:
|
||||
src: postgres_env.j2
|
||||
dest: ~/.postgres_vars
|
||||
mode: 0644
|
||||
- name: include postgres vars in bashrc
|
||||
lineinfile:
|
||||
path: ~/.bashrc
|
||||
line: source ~/.postgres_vars
|
||||
insertafter: EOF
|
||||
11
roles/postgres/tasks/service.yml
Normal file
11
roles/postgres/tasks/service.yml
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
- name: create service
|
||||
template:
|
||||
src: postgres_service.j2
|
||||
dest: ~/etc/services.d/postgresql.ini
|
||||
mode: 0644
|
||||
notify:
|
||||
- reload supervisorctl
|
||||
- update supervisorctl
|
||||
- name: Flush handlers
|
||||
meta: flush_handlers
|
||||
27
roles/postgres/tasks/setup.yml
Normal file
27
roles/postgres/tasks/setup.yml
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
- name: create pgpass file
|
||||
template:
|
||||
src: pgpass.j2
|
||||
dest: ~/.pgpass
|
||||
mode: 0600
|
||||
- name: create temporary password file
|
||||
template:
|
||||
src: pgpass_temp.j2
|
||||
dest: ~/.pgpass_temp
|
||||
mode: 0600
|
||||
- name: setup database cluster
|
||||
command: initdb --pwfile ~/pgpass.temp --auth=scram-sha-256 -E UTF8 -D ~/opt/postgresql/data/
|
||||
- name: delete temporary password file
|
||||
file:
|
||||
path: ~/.pgpass_temp
|
||||
state: absent
|
||||
- name: update port
|
||||
lineinfile:
|
||||
path: ~/opt/postgresql/data/postgresql.conf
|
||||
regexp: '^port ='
|
||||
line: port = {{ postgres_port }}
|
||||
- name: update unix socket directories
|
||||
lineinfile:
|
||||
path: ~/opt/postgresql/data/postgresql.conf
|
||||
regexp: '^unix_socket_directories'
|
||||
line: unix_socket_directories = '/home/{{ uberspace_user }}/tmp' # comma-separated list of directories
|
||||
2
roles/postgres/templates/pgpass.j2
Normal file
2
roles/postgres/templates/pgpass.j2
Normal file
@ -0,0 +1,2 @@
|
||||
#hostname:port:database:username:password (min 64 characters)
|
||||
*:*:*:{{ uberspace_user }}:{{ postgres_password }}
|
||||
1
roles/postgres/templates/pgpass_temp.j2
Normal file
1
roles/postgres/templates/pgpass_temp.j2
Normal file
@ -0,0 +1 @@
|
||||
{{ postgres_password }}
|
||||
2
roles/postgres/templates/postgres_env.j2
Normal file
2
roles/postgres/templates/postgres_env.j2
Normal file
@ -0,0 +1,2 @@
|
||||
export PGHOST=localhost
|
||||
export PGPORT={{ postgres_port }}
|
||||
4
roles/postgres/templates/postgres_profile.j2
Normal file
4
roles/postgres/templates/postgres_profile.j2
Normal file
@ -0,0 +1,4 @@
|
||||
export PATH=$HOME/opt/postgresql/bin/:$PATH
|
||||
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/opt/postgresql/lib
|
||||
export PGPASSFILE=$HOME/.pgpass
|
||||
|
||||
4
roles/postgres/templates/postgres_service.j2
Normal file
4
roles/postgres/templates/postgres_service.j2
Normal file
@ -0,0 +1,4 @@
|
||||
[program:postgresql]
|
||||
command=%(ENV_HOME)s/opt/postgresql/bin/postgres -D %(ENV_HOME)s/opt/postgresql/data/
|
||||
autostart=yes
|
||||
autorestart=yes
|
||||
Reference in New Issue
Block a user