Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ---
- # postgres_install playbook
- - hosts: rhel8
- tasks:
- - name: prepare postgres environment - create base directories
- file:
- path: "{{ postgres_base }}/{{ item }}"
- mode: 0750
- state: directory
- owner: "{{ ansible_postgres_user }}"
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- loop:
- - bin
- - install
- - nrpe
- - tmp
- - tools
- - name: download artifacts - fetch {{ postgres_distribution }} from repo
- get_url:
- url: "{{ postgres_repo }}/{{ postgres_distribution }}"
- checksum: "sha512:{{ postgres_repo }}/{{ postgres_distribution }}.sha512"
- dest: "{{ postgres_install }}/{{ postgres_distribution }}"
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: download artifacts - fetch postgres env package
- get_url:
- url: "{{ postgres_mirror }}/postgres/Linux/el7/{{ item }}" # pg-rhel7-env.tar.gz" # {{ item }}" # was: "{{ postgres_repo }}/{{ item }}"
- dest: "{{ postgres_install }}/{{ item }}"
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- loop:
- - pg-rhel7-env.tar.gz
- - name: check installed system packages for postgres
- package:
- name:
- - psmisc
- - strace
- - gdb
- - nagios-plugins-mysql
- - nagios-plugins-pgsql
- - nagios-plugins-http
- - openssl
- - pam
- - readline
- - libselinux
- - systemd-libs
- - zlib
- state: present
- become: yes
- become_user: "{{ ansible_become_user }}"
- - name: prepare postgres environment - create data & backup directories
- file:
- path: "{{ item }}"
- mode: 0750
- state: directory
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- loop:
- - "{{ postgres_data }}"
- - "{{ postgres_arch }}"
- - "{{ postgres_back }}"
- - name: prepare postgres environment - copy shell environment
- copy:
- src: "files/{{ item }}"
- dest: "{{ postgres_user_home }}/{{ item }}"
- #mode: 0755
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- loop:
- - .alias
- - .bashrc
- - .editrc
- - .forward
- - .toprc
- - name: prepare postgres environment - copy nrpe-check config
- copy:
- src: "files/{{ item }}"
- dest: "{{ postgres_nrpe }}/{{ item }}"
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- loop:
- - scb_opensource_postgres.cfg
- - name: prepare postgres environment - prepare env and start/stop-scripts
- unarchive:
- src: "{{ postgres_install }}/pg-rhel7-env.tar.gz"
- dest: "{{ postgres_base }}/"
- creates: "{{ postgres_base }}/bin/.pg.env"
- remote_src: yes
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- # ##### postgresql.service based on current state ##########
- - name: gather service facts
- service_facts:
- - name: return postgres running or not
- debug:
- msg: "{{ ansible_facts.services.postgresql | default({ 'state' : 'absent'}) }}"
- - name: stop postgresql.service from systemd if running
- service:
- name: postgresql.service
- state: stopped
- become: yes
- register: psql_result
- when: "'postgresql.service' in services" # was: failed_when: psql_result is failed and 'Could not find the requested service postgresql.service' not in psql_result['msg']
- - name: install postgres - unarchive postgres package
- unarchive:
- src: "{{ postgres_install }}/{{ postgres_distribution }}"
- dest: "{{ postgres_base }}/"
- remote_src: yes
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: install postgres - create postgres symlink
- file:
- src: "{{ postgres_base }}/{{ postgres_version }}"
- dest: "{{ postgres_base }}/postgresql"
- state: link
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: configure postgres - create database
- command: "{{ postgres_home }}/bin/initdb -D {{ postgres_data }}"
- # args:
- # creates: "{{ postgres_data }}/PG_VERSION"
- become: yes
- become_user: "{{ ansible_postgres_user }}" # 'postgres' does not work neither
- - name: configure postgres - create postgresql.conf
- copy:
- src: "files/postgresql.conf"
- dest: "{{ postgres_data }}/postgresql.conf"
- backup: yes
- mode: preserve
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: configure postgres - create pg_hba.conf
- copy:
- src: "files/pg_hba.conf"
- dest: "{{ postgres_data }}/pg_hba.conf"
- backup: yes
- mode: preserve
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: start or restart postgresql.service from systemd
- command: "/usr/bin/sudo /usr/bin/systemctl restart postgresql.service"
- #register: start_postgres
- ignore_errors: yes
- - set_fact:
- postgres_auth_pass: "{{ postgres_auth_pass }}"
- - debug:
- msg: "Safe new postgres user password to password safe: {{ postgres_auth_pass }}"
- - name: configure postgres - set password of postgres role
- command: "{{ postgres_home }}/bin/psql -c \"ALTER ROLE postgres WITH password '{{ postgres_auth_pass }}';\""
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: configure postgres - update .pgpass file
- lineinfile:
- path: "{{ postgres_user_home }}/.pgpass"
- regexp: '^localhost:5432:\*:postgres'
- line: 'localhost:5432:*:postgres:{{ postgres_auth_pass }}'
- create: yes
- mode: 0600
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- ignore_errors: yes
- - name: "logrotate cronjob - postgres compress logs"
- cron:
- name: "postgres compress logs"
- minute: "0"
- hour: "1"
- day: "*"
- month: "*"
- weekday: "*"
- job: find {{ postgres_data }}/log -type f -mtime +0 -name "postgresql-*.log" | xargs -r nice -n 19 gzip -9
- become: yes
- become_user: "{{ ansible_postgres_user }}"
- - name: "logrotate cronjob - postgres cleanup logs"
- cron:
- name: "postgres cleanup logs"
- minute: "30"
- hour: "1"
- day: "*"
- month: "*"
- weekday: "*"
- job: find {{ postgres_data }}/log -type f -mtime +90 -name "postgresql-*.log.gz" | xargs -r rm
- become: yes
- become_user: "{{ ansible_postgres_user }}"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement