Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
ansible / community / zabbix / roles / zabbix_server / tasks / postgresql.yml
Size: Mime:
---
# task file for postgresql

- name: "Set the correct delegated_dbhost (to support postgres db deployment on a remote dbhost)"
  set_fact:
    delegated_dbhost: "{{ zabbix_server_dbhost if (zabbix_server_dbhost != 'localhost') else inventory_hostname }}"
  when:
    - zabbix_server_dbhost_run_install

- name: "Set the correct delegated_dbhost (to support postgres db deployment on a remote dbhost)"
  set_fact:
    delegated_dbhost: "{{ inventory_hostname }}"
  when:
    - not zabbix_server_dbhost_run_install

- name: "PostgreSQL | Delegated"
  block:
    - name: "PostgreSQL | Delegated | Create database"
      community.postgresql.postgresql_db:
        name: "{{ zabbix_server_dbname }}"
        port: "{{ zabbix_server_dbport }}"
        state: present
    - name: "PostgreSQL | Delegated | Create database user"
      community.postgresql.postgresql_user:
        db: "{{ zabbix_server_dbname }}"
        name: "{{ zabbix_server_dbuser }}"
        password: "md5{{ (zabbix_server_dbpassword + zabbix_server_dbuser)|hash('md5') }}"
        port: "{{ zabbix_server_dbport }}"
        priv: ALL
        state: present
        encrypted: true
    - name: "PostgreSQL | Delegated | Create timescaledb extension"
      community.postgresql.postgresql_ext:
        db: "{{ zabbix_server_dbname }}"
        name: timescaledb
      when: zabbix_database_timescaledb
  become: true
  become_user: postgres
  delegate_to: "{{ delegated_dbhost }}"
  when:
    - zabbix_database_creation
    - zabbix_server_pgsql_login_host is not defined
  tags:
    - zabbix-server
    - database

- name: "PostgreSQL | Remote"
  block:
    - name: "PostgreSQL | Remote | Create database"
      community.postgresql.postgresql_db:
        login_host: "{{ zabbix_server_pgsql_login_host | default(omit) }}"
        login_user: "{{ zabbix_server_pgsql_login_user | default(omit) }}"
        login_password: "{{ zabbix_server_pgsql_login_password | default(omit) }}"
        login_unix_socket: "{{ zabbix_server_pgsql_login_unix_socket | default(omit) }}"
        name: "{{ zabbix_server_dbname }}"
        port: "{{ zabbix_server_dbport }}"
        state: present
    - name: "PostgreSQL | Remote | Create database user"
      community.postgresql.postgresql_user:
        login_host: "{{ zabbix_server_pgsql_login_host | default(omit) }}"
        login_user: "{{ zabbix_server_pgsql_login_user | default(omit) }}"
        login_password: "{{ zabbix_server_pgsql_login_password | default(omit) }}"
        db: "{{ zabbix_server_dbname }}"
        name: "{{ zabbix_server_dbuser }}"
        password: "md5{{ (zabbix_server_dbpassword + zabbix_server_dbuser)|hash('md5') }}"
        port: "{{ zabbix_server_dbport }}"
        priv: ALL
        state: present
        encrypted: true
    - name: "PostgreSQL | Remote | Create timescaledb extension"
      community.postgresql.postgresql_ext:
        login_host: "{{ zabbix_server_pgsql_login_host | default(omit) }}"
        login_user: "{{ zabbix_server_pgsql_login_user | default(omit) }}"
        login_password: "{{ zabbix_server_pgsql_login_password | default(omit) }}"
        login_unix_socket: "{{ zabbix_server_pgsql_login_unix_socket | default(omit) }}"
        db: "{{ zabbix_server_dbname }}"
        name: timescaledb
      when: zabbix_database_timescaledb
  when:
    - zabbix_database_creation
    - zabbix_server_pgsql_login_host is defined
  tags:
    - zabbix-server
    - database

- name: "PostgreSQL | Create schema"
  shell: |
    set -euxo pipefail
    FILE={{ 'create.sql' if zabbix_version is version('6.0', '<') else 'server.sql' }}
    cd {{ datafiles_path }}
    if [ -f ${FILE}.gz ]
      then zcat ${FILE}.gz > /tmp/create.sql
    else
      cp ${FILE} /tmp/create.sql
    fi
    cat /tmp/create.sql | psql -h '{{ zabbix_server_dbhost }}' \
    -U '{{ zabbix_server_dbuser }}' \
    -d '{{ zabbix_server_dbname }}' \
    -p '{{ zabbix_server_dbport }}'
    touch /etc/zabbix/schema.done
    rm -f /tmp/create.sql
  args:
    creates: /etc/zabbix/schema.done
    executable: /bin/bash
    warn: false
  environment:
    PGPASSWORD: "{{ zabbix_server_dbpassword }}"
  when:
    - zabbix_version is version('3.0', '>=')
    - zabbix_database_sqlload
  tags:
    - zabbix-server
    - database

- name: "PostgreSQL | Create TimescaleDB hypertables"
  shell: |
    set -euxo pipefail
    cd {{ datafiles_path }} &&
    if [ -f timescaledb.sql.gz ]; then zcat timescaledb.sql.gz > /etc/timescaledb.sql ; else cp -p timescaledb.sql /etc/timescaledb.sql ; fi
    cat /etc/timescaledb.sql | psql -h '{{ zabbix_server_dbhost }}' \
    -U '{{ zabbix_server_dbuser }}' \
    -d '{{ zabbix_server_dbname }}' \
    -p '{{ zabbix_server_dbport }}'
    touch /etc/zabbix/timescaledb.done
    rm -f /tmp/timescaledb.sql
  args:
    creates: /etc/zabbix/timescaledb.done
    executable: /bin/bash
    warn: false
  environment:
    PGPASSWORD: "{{ zabbix_server_dbpassword }}"
  when:
    - zabbix_version is version('3.0', '>=')
    - zabbix_database_timescaledb
  tags:
    - zabbix-server
    - database

- name: "Get complete path"
  shell: ls -d {{ datafiles_path }}
  register: datafiles_path_full
  changed_when: false
  when:
    - (zabbix_version is version('3.0', '<') and zabbix_database_sqlload) or (zabbix_repo == "epel" and zabbix_database_sqlload)
  tags:
    - skip_ansible_lint

- name: "Check if we have a create dir"
  stat:
    path: "{{ datafiles_path_full.stdout }}/create"
  register: create_dir_or_not
  when:
    - (zabbix_version is version('3.0', '<') and zabbix_database_sqlload) or (zabbix_repo == "epel" and zabbix_database_sqlload)

- name: "Set fact"
  set_fact:
    datafiles_path: "{{ datafiles_path }}/create"
  when:
    - (zabbix_version is version('3.0', '<') and zabbix_database_sqlload) or (zabbix_repo == "epel" and zabbix_database_sqlload)
    - create_dir_or_not.stat.isdir is defined and create_dir_or_not.stat.isdir
    - create_dir_or_not.stat.exists

- name: "PostgreSQL | Importing schema file"
  shell: |
    set -euxo pipefail
    cd {{ datafiles_path }}
    if [ -f schema.sql.gz ]; then zcat schema.sql.gz > /tmp/schema.sql ; else cp -p schema.sql /tmp/schema.sql ;fi
    cat /tmp/schema.sql | psql -h '{{ zabbix_server_dbhost }}' \
    -U '{{ zabbix_server_dbuser }}' \
    -d '{{ zabbix_server_dbname }}' \
    -p '{{ zabbix_server_dbport }}'
    touch /etc/zabbix/schema.done
    rm -f /etc/schema.sql
  args:
    creates: /etc/zabbix/schema.done
    executable: /bin/bash
    warn: false
  environment:
    PGPASSWORD: "{{ zabbix_server_dbpassword }}"
  when:
    - (zabbix_version is version('3.0', '<') and zabbix_database_sqlload) or (zabbix_repo == "epel" and zabbix_database_sqlload)
  tags:
    - zabbix-server
    - database

- name: "PostgreSQL | Importing images file"
  shell: >
    cd {{ datafiles_path }} &&
    psql -h '{{ zabbix_server_dbhost }}'
    -U '{{ zabbix_server_dbuser }}'
    -d '{{ zabbix_server_dbname }}'
    -p '{{ zabbix_server_dbport }}'
    -f images.sql && touch /etc/zabbix/images.done
  args:
    creates: /etc/zabbix/images.done
    warn: false
  environment:
    PGPASSWORD: "{{ zabbix_server_dbpassword }}"
  when: (zabbix_version is version('3.0', '<') and zabbix_database_sqlload) or (zabbix_repo == "epel" and zabbix_database_sqlload)
  tags:
    - zabbix-server
    - database

- name: "PostgreSQL | Importing data file"
  shell: >
    cd {{ datafiles_path }} &&
    psql -h '{{ zabbix_server_dbhost }}'
    -U '{{ zabbix_server_dbuser }}'
    -d '{{ zabbix_server_dbname }}'
    -p '{{ zabbix_server_dbport }}'
    -f data.sql && touch /etc/zabbix/data.done
  args:
    creates: /etc/zabbix/data.done
    warn: false
  environment:
    PGPASSWORD: "{{ zabbix_server_dbpassword }}"
  when: (zabbix_version is version('3.0', '<') and zabbix_database_sqlload) or (zabbix_repo == "epel" and zabbix_database_sqlload)
  tags:
    - zabbix-server
    - database