리눅스/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 }}