organicveggie.postgres_docker

Rola Ansible: PostgreSQL na Dockerze

github github Issues PullRequests Ostatnie zatwierdzenie

Rola Ansible do skonfigurowania i uruchomienia PostgreSQL w kontenerze Docker.

Zawartość

Wymagania

Wymaga Dockera. Rekomendowana rola do instalacji Dockera: geerlingguy.docker.

Zmienne roli

  • postgres_docker_name: Nazwa kontenera Docker.

  • postgres_docker_admin_password: Hasło superużytkownika.

  • postgres_docker_initscripts: Opcjonalne skrypty inicjalizacyjne do skopiowania do kontenera Docker PostgreSQL. Mogą to być pliki .sql, sql.gz lub .sh. Muszą one już istnieć na docelowym systemie, aby ta rola mogła je skopiować do kontenera Docker.

    Po wywołaniu initdb w kontenerze, aby utworzyć domyślnego użytkownika postgres i bazę danych, zostaną uruchomione wszelkie pliki *.sql, a także wykonane skrypty *.sh oraz załadowane skrypty *.sh, zanim uruchomiona zostanie usługa. Skrypty są uruchamiane tylko wtedy, gdy kontener uruchamia się z pustym katalogiem danych; jakakolwiek istniejąca wcześniej baza danych zostanie pozostawiona nietknięta przy uruchamianiu kontenera. Częstym problemem jest to, że jeśli jeden z twoich skryptów nie powiedzie się, a twój orkiestrator ponownie uruchomi kontener z już zainicjalizowanym katalogiem danych, nie zostaną one kontynuowane.

    Pliki inicjalizacyjne będą wykonywane w posortowanej kolejności nazw zgodnie z aktualnym ustawieniem lokalnym, które domyślnie jest ustawione na en_US.utf8. Wszelkie pliki *.sql będą wykonywane przez POSTGRES_USER, który domyślnie jest superużytkownikiem postgres. Zaleca się, aby wszelkie polecenia psql, które są wykonywane w skrypcie *.sh, były wykonywane jako POSTGRES_USER przy użyciu flagi --username "$POSTGRES_USER". Ten użytkownik będzie mógł się połączyć bez hasła dzięki obecności uwierzytelniania trust dla połączeń przez gniazda Unix wewnątrz kontenera.

  • postgres_docker_use_volumes: Czy używać wolumenów Dockera, czy nie. Prawda spowoduje utworzenie dwóch dedykowanych wolumenów Dockera:

    • Jeden dla plików konfiguracyjnych montowanych w /etc/postgresql.
    • Drugi dla plików danych montowanych w /var/lib/postgresql/data.
  • postgres_docker_memory: Ilość pamięci do przydzielenia dla kontenera PostgreSQL.

  • postgres_docker_cpu: Liczba vCPU, które mają być przydzielone dla kontenera PostgreSQL.

  • postgres_docker_network_create: Czy utworzyć sieć Dockera dla kontenera PostgreSQL, czy nie. Prawda utworzy sieć specjalnie dla tego kontenera. Fałsz nie utworzy sieci, ale automatycznie dołączy do sieci określonej w postgres_docker_network_name.

  • postgres_docker_network_name: Nazwa sieci Dockera, do której należy dołączyć. Wymagane. Szczególnie przydatne, jeśli postgres_docker_network_create jest ustawione na fałsz.

  • postgres_docker_image: Nazwa i tag obrazu Dockera do użycia.

  • postgres_docker_available_externally: Czy włączyć w Traefik Proxy.

Zobacz defaults/main.yml w celu uzyskania pełnej listy.

Zależności

Brak.

Przykładowe Playbooki

Utwórz sieć

- hosts: all
  vars:
    postgres_docker_network_create: true
    postgres_docker_memory: "2GB"
    postgres_docker_cpu: "2"
  roles:
    - geerlingguy.docker
    - organicveggie.postgres_docker

Niestandardowa nazwa z zamocowaniami

- hosts: all
  vars:
    postgres_docker_name: "pgsql-example"
    postgres_docker_use_volumes: false
  roles:
    - geerlingguy.docker
    - organicveggie.postgres_docker

Skrypty inicjalizacyjne

Skrypt powłoki do utworzenia nowego użytkownika i bazy danych: 01_create_example.sh

#!/bin/sh
set -e

psql -v ON_ERROR_STOP=1 --username "$POSTGRES" --dbname "molecule" <<-EOSQL
    CREATE USER example;
    CREATE DATABASE exampledb;
    GRANT ALL PRIVILEGES ON DATABASE exampledb TO example;
    CREATE TABLE test (
        id int CONSTRAINT id_pk PRIMARY KEY
    );
    INSERT INTO test VALUES (42), (54);
EOSQL

Playbook:

- hosts: all
  roles:
    - geerlingguy.docker

- hosts: all

vars:
    postgres_docker_initscripts:
        - "/tmp/01_create_example.sh"

  tasks:
    - name: Skopiuj skrypt inicjalizacyjny
      ansible.builtin.copy:
        src: "files/01_create_example.sh"
        dest: "/tmp"
        mode: "755"

  roles:
    - organicveggie.postgres_docker

Licencja

Apache

Informacje o autorze

Sean Laurent

O projekcie

Role to install PostgreSQL Docker container on Linux.

Zainstaluj
ansible-galaxy install organicveggie.postgres_docker
Licencja
apache-2.0
Pobrania
98
Właściciel