Advertisement
dulhaver

psql_install

Oct 27th, 2021 (edited)
218
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
YAML 6.31 KB | None | 0 0
  1. ---
  2. # postgres_install playbook
  3. - hosts: rhel8
  4.  
  5.   tasks:
  6.   - name: prepare postgres environment - create base directories
  7.     file:
  8.       path: "{{ postgres_base }}/{{ item }}"
  9.       mode: 0750
  10.       state: directory
  11.       owner: "{{ ansible_postgres_user }}"
  12.     become: yes
  13.     become_user: "{{ ansible_postgres_user }}"
  14.     loop:
  15.      - bin
  16.       - install
  17.       - nrpe
  18.       - tmp
  19.       - tools
  20.  
  21.   - name: download artifacts - fetch {{ postgres_distribution }} from repo
  22.     get_url:
  23.       url: "{{ postgres_repo }}/{{ postgres_distribution }}"
  24.       checksum: "sha512:{{ postgres_repo }}/{{ postgres_distribution }}.sha512"
  25.       dest: "{{ postgres_install }}/{{ postgres_distribution }}"
  26.     become: yes
  27.     become_user: "{{ ansible_postgres_user }}"
  28.  
  29.   - name: download artifacts - fetch postgres env package
  30.     get_url:
  31.       url: "{{ postgres_mirror }}/postgres/Linux/el7/{{ item }}" # pg-rhel7-env.tar.gz" # {{ item }}"  # was: "{{ postgres_repo }}/{{ item }}"
  32.       dest: "{{ postgres_install }}/{{ item }}"
  33.     become: yes
  34.     become_user: "{{ ansible_postgres_user }}"
  35.     loop:
  36.      - pg-rhel7-env.tar.gz
  37.  
  38.   - name: check installed system packages for postgres
  39.     package:
  40.       name:
  41.      - psmisc
  42.       - strace
  43.       - gdb
  44.       - nagios-plugins-mysql
  45.       - nagios-plugins-pgsql
  46.       - nagios-plugins-http
  47.       - openssl
  48.       - pam
  49.       - readline
  50.       - libselinux
  51.       - systemd-libs
  52.       - zlib
  53.       state: present
  54.     become: yes
  55.     become_user: "{{ ansible_become_user }}"
  56.  
  57.  
  58.   - name: prepare postgres environment - create data & backup directories
  59.     file:
  60.       path: "{{ item }}"
  61.       mode: 0750
  62.       state: directory
  63.     become: yes
  64.     become_user: "{{ ansible_postgres_user }}"
  65.     loop:
  66.      - "{{ postgres_data }}"
  67.       - "{{ postgres_arch }}"
  68.       - "{{ postgres_back }}"
  69.  
  70.   - name: prepare postgres environment - copy shell environment
  71.     copy:
  72.       src: "files/{{ item }}"
  73.       dest: "{{ postgres_user_home }}/{{ item }}"
  74.       #mode: 0755
  75.     become: yes
  76.     become_user: "{{ ansible_postgres_user }}"
  77.     loop:
  78.      - .alias
  79.       - .bashrc
  80.       - .editrc
  81.       - .forward
  82.       - .toprc
  83.  
  84.  
  85.   - name: prepare postgres environment - copy nrpe-check config
  86.     copy:
  87.       src: "files/{{ item }}"
  88.       dest: "{{ postgres_nrpe }}/{{ item }}"
  89.     become: yes
  90.     become_user: "{{ ansible_postgres_user }}"
  91.     loop:
  92.      - scb_opensource_postgres.cfg
  93.  
  94.   - name: prepare postgres environment - prepare env and start/stop-scripts
  95.     unarchive:
  96.       src: "{{ postgres_install }}/pg-rhel7-env.tar.gz"
  97.       dest: "{{ postgres_base }}/"
  98.       creates: "{{ postgres_base }}/bin/.pg.env"
  99.       remote_src: yes
  100.     become: yes
  101.     become_user: "{{ ansible_postgres_user }}"
  102.  
  103. # ##### postgresql.service based on current state ##########
  104.  
  105.   - name: gather service facts
  106.     service_facts:
  107.   - name: return postgres running or not
  108.     debug:
  109.       msg: "{{ ansible_facts.services.postgresql | default({ 'state' : 'absent'}) }}"
  110.  
  111.   - name: stop postgresql.service from systemd if running
  112.     service:
  113.       name: postgresql.service
  114.       state: stopped
  115.     become: yes
  116.     register: psql_result
  117.     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']
  118.  
  119.  
  120.   - name: install postgres - unarchive postgres package
  121.     unarchive:
  122.       src: "{{ postgres_install }}/{{ postgres_distribution }}"
  123.       dest: "{{ postgres_base }}/"
  124.       remote_src: yes
  125.     become: yes
  126.     become_user: "{{ ansible_postgres_user }}"
  127.  
  128.   - name: install postgres - create postgres symlink
  129.     file:
  130.       src: "{{ postgres_base }}/{{ postgres_version }}"
  131.       dest: "{{ postgres_base }}/postgresql"
  132.       state: link
  133.     become: yes
  134.     become_user: "{{ ansible_postgres_user }}"
  135.  
  136.   - name: configure postgres - create database
  137.     command: "{{ postgres_home }}/bin/initdb -D {{ postgres_data }}"
  138.     # args:
  139.       # creates: "{{ postgres_data }}/PG_VERSION"
  140.     become: yes
  141.     become_user: "{{ ansible_postgres_user }}"  # 'postgres' does not work neither
  142.  
  143.   - name: configure postgres - create postgresql.conf
  144.     copy:
  145.       src: "files/postgresql.conf"
  146.       dest: "{{ postgres_data }}/postgresql.conf"
  147.       backup: yes
  148.       mode: preserve
  149.     become: yes
  150.     become_user: "{{ ansible_postgres_user }}"
  151.  
  152.   - name: configure postgres - create pg_hba.conf
  153.     copy:
  154.       src: "files/pg_hba.conf"
  155.       dest: "{{ postgres_data }}/pg_hba.conf"
  156.       backup: yes
  157.       mode: preserve
  158.     become: yes
  159.     become_user: "{{ ansible_postgres_user }}"
  160.  
  161.   - name: start or restart postgresql.service from systemd
  162.     command: "/usr/bin/sudo /usr/bin/systemctl restart postgresql.service"
  163.     #register: start_postgres
  164.     ignore_errors: yes
  165.  
  166.   - set_fact:
  167.       postgres_auth_pass: "{{ postgres_auth_pass }}"
  168.   - debug:
  169.       msg: "Safe new postgres user password to password safe: {{ postgres_auth_pass }}"
  170.    
  171.   - name: configure postgres - set password of postgres role
  172.     command: "{{ postgres_home }}/bin/psql -c \"ALTER ROLE postgres WITH password '{{ postgres_auth_pass }}';\""
  173.     become: yes
  174.     become_user: "{{ ansible_postgres_user }}"
  175.  
  176.   - name: configure postgres - update .pgpass file
  177.     lineinfile:
  178.       path: "{{ postgres_user_home }}/.pgpass"
  179.       regexp: '^localhost:5432:\*:postgres'
  180.       line: 'localhost:5432:*:postgres:{{ postgres_auth_pass }}'
  181.       create: yes
  182.       mode: 0600
  183.     become: yes
  184.     become_user: "{{ ansible_postgres_user }}"
  185.     ignore_errors: yes
  186.  
  187.   - name: "logrotate cronjob - postgres compress logs"
  188.     cron:
  189.       name: "postgres compress logs"
  190.       minute: "0"
  191.       hour: "1"
  192.       day: "*"
  193.       month: "*"
  194.       weekday: "*"
  195.       job: find {{ postgres_data }}/log -type f -mtime +0 -name "postgresql-*.log" | xargs -r nice -n 19 gzip -9
  196.     become: yes
  197.     become_user: "{{ ansible_postgres_user }}"
  198.  
  199.   - name: "logrotate cronjob - postgres cleanup logs"
  200.     cron:
  201.       name: "postgres cleanup logs"
  202.       minute: "30"
  203.       hour: "1"
  204.       day: "*"
  205.       month: "*"
  206.       weekday: "*"
  207.       job: find {{ postgres_data }}/log -type f -mtime +90 -name "postgresql-*.log.gz" | xargs -r rm
  208.     become: yes
  209.     become_user: "{{ ansible_postgres_user }}"
  210.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement