PostgreSQL をインストールする

投稿者: | 2026年1月8日

FreeBSDにPostgreSQLをインストールします。
17.7をインストール対象としていますが、18でも基本的には同じです。
ただし、チェックサムが18ではデフォルト有効となりましたので、18以前をインストールするときにも最初からチェックサムを有効にするようにします。

前提

  • FreeBSD 13.5
  • PostgreSQL 17.7

パッケージのインストール

pkg install -y postgresql17-server

ロケール設定

/etc/login.conf

+ postgres:\
+         :lang=en_US.UTF-8:\
+         :setenv=LC_COLLATE=C:\
+         :tc=default:

反映

cap_mkdb /etc/login.conf

起動設定

データのチェックサムを有効にしてデータベースを初期化します。

sysrc postgresql_login_class=postgres
sysrc postgresql_initdb_flags="--encoding=utf-8 --lc-collate=C --data-checksums"
sysrc postgresql_enable=YES
service postgresql initdb

起動

service postgresql start

動作確認

su postgres -c "psql --version"
psql (PostgreSQL) 17.7

Ansible playbook

install_postgresql.yaml

---
- name: Install and configure PostgreSQL on FreeBSD
  hosts: postgresql.example.com
  become: yes
  gather_facts: false
  vars:
    pg_ver: 17

  tasks:
    - name: Install PostgreSQL {{ pg_ver }} server package
      community.general.pkgng:
        name: "postgresql{{ pg_ver }}-server"
        state: present

    - name: Ensure postgres login class exists in /etc/login.conf
      blockinfile:
        path: /etc/login.conf
        block: |
          postgres:\
                  :lang=en_US.UTF-8:\
                  :setenv=LC_COLLATE=C:\
                  :tc=default:
        marker: "# {mark} ANSIBLE POSTGRES LOGIN CLASS"

    - name: Rebuild login.conf database
      command: cap_mkdb /etc/login.conf
      changed_when: false

    - name: Set postgresql login class
      community.general.sysrc:
        name: postgresql_login_class
        value: postgres

    - name: Set initdb flags for PostgreSQL <=17
      community.general.sysrc:
        name: postgresql_initdb_flags
        value: '--encoding=utf-8 --lc-collate=C --data-checksums'
      when: pg_ver | int < 18
      changed_when: false

    - name: Set initdb flags for PostgreSQL 18+
      community.general.sysrc:
        name: postgresql_initdb_flags
        value: '--encoding=utf-8 --lc-collate=C'
      when: pg_ver | int >= 18
      changed_when: false

    - name: Enable PostgreSQL service
      community.general.sysrc:
        name: postgresql_enable
        value: "YES"

    - name: Initialize PostgreSQL database
      command: service postgresql initdb
      args:
        creates: "/var/db/postgres/data{{ pg_ver }}/PG_VERSION"

    - name: Start PostgreSQL service
      service:
        name: postgresql
        state: started
        enabled: yes

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です