리눅스/ansible
ansible playbook-2 postgresql설치
정지홍
2024. 8. 11. 17:25
---
- name: install postgresql
hosts: all
become: yes # root
vars:
pg_version: 15
pg_data_dir: /var/lib/pgsql/15/data # postgresql data dir
vars_prompt:
- name: "role_name"
prompt: "role name? :"
private: no
- name: "role_password"
prompt: "role password? :"
private: yes
- name: "database_name"
prompt: "Enter the PostgreSQL database name"
private: no
- name: "schema_name"
prompt: "Enter the PostgreSQL schema name"
private: no
- name: "sql_file_path"
prompt: "Enter the path to the SQL file"
private: no
tasks:
- name: install postgrsql from a remote repo
yum:
name: https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm
state: present
- name: install version postgresql 15.7
yum:
name: postgresql15-server # package name
state: present
- name: initdb postgresql
shell: /usr/pgsql-15/bin/postgresql-15-setup initdb
args:
creates: /var/lib/pgsql/15/data/postgresql.conf
- name: enable postgresql service
systemd:
name: postgresql-15
enabled: yes
- name: start postgresql service
systemd:
name: postgresql-15
state: started
- name: create postgresql role
shell: >
sudo -u postgres psql -c "CREATE ROLE {{ role_name }} WITH LOGIN PASSWORD '{{ role_password }}' CREATEDB;"
- name: create postgresql database
shell: >
sudo -u postgres psql -c "CREATE DATABASE {{ database_name }} OWNER {{ role_name }} ENCODING 'UTF8';"
- name: create postgresql schema
shell: >
sudo -u postgres psql -d {{ database_name }} -c "CREATE SCHEMA {{ schema_name }} AUTHORIZATION {{ role_name }};"
- name: create system user for postgresql role
user:
name: "{{ role_name }}"
state: present
comment: "PostgreSQL role user"
- name: execute sql file
shell: >
sudo -u {{ role_name }} psql -d {{ database_name }} -f {{ sql_file_path }}