PostgreSQLの導入

まずはPostgreSQLの導入から

NetBoxはPostgreSQL 10以降が必要です。MySQLのような、そのほかのDBはサポートしていません。

なんて、説明があるので、yumコマンドで導入できるバージョンの確認から


$ yum info postgresql-server
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp-srv2.kddilabs.jp
 * extras: ftp-srv2.kddilabs.jp
 * updates: ftp-srv2.kddilabs.jp
利用可能なパッケージ
名前                : postgresql-server
アーキテクチャー    : x86_64
バージョン          : 9.2.24
リリース            : 7.el7_9
容量                : 3.8 M
リポジトリー        : updates/7/x86_64
要約                : The programs needed to create and run a PostgreSQL server
URL                 : http://www.postgresql.org/
ライセンス          : PostgreSQL
説明                : PostgreSQL is an advanced Object-Relational database
                    : management system (DBMS). The postgresql-server package
                    : contains the programs needed to create and run a
                    : PostgreSQL server, which will in turn allow you to create
                    : and maintain PostgreSQL databases.

ということで、yumコマンドで導入すると9.2.24ということで要求を満たせません。
そこで、CentOS SCLo Software Collectionsからインストールします。


$ sudo yum --enablerepo=centos-sclo-rh -y install rh-postgresql10-postgresql-server

インストールパッケージはパスが通っていないので、環境変数を読み込んで利用します。


$ sudo scl enable rh-postgresql10 bash

バージョンの確認をします。
無事にPostgreSQL 10が導入できました。


# postgres -V
postgres (PostgreSQL) 10.17

インストール場所の確認をします。


# which postgres
/opt/rh/rh-postgresql10/root/usr/bin/postgres

以下のように設定することで、ログイン時に自動的に有効にできます。


$ sudo vi /etc/profile.d/rh-postgresql10.sh
# 以下の内容で新規作成
source /opt/rh/rh-postgresql10/enable
export X_SCLS="`scl enable rh-postgresql10 'echo $X_SCLS'`"

再ログイン後、バージョンを再度確認してみます。


$ postgres -V
postgres (PostgreSQL) 10.17

続けて、PostgreSQL 10 の初回セットアップと起動を行います。


$ sudo /opt/rh/rh-postgresql10/root/usr/bin/postgresql-setup --initdb
 * Initializing database in '/var/opt/rh/rh-postgresql10/lib/pgsql/data'
 * Initialized, logs are in /var/lib/pgsql/initdb_rh-postgresql10-postgresql.log

CentOSではデフォルトで identによる認証ですが、NetBoxはユーザー名とパスワードを使用して認証する必要があるので、下記のように変更します。
変更ファイルは/var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.confです。


$ sudo vi /var/opt/rh/rh-postgresql10/lib/pgsql/data/pg_hba.conf

変更内容は下記の通り


修正前)
# IPv4 local connections:
host    all             all             127.0.0.1/32            ident
# IPv6 local connections:
host    all             all             ::1/128                 ident

修正後)
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

サービスの起動と、次回以降の自動起動を有効にします。


$ sudo systemctl start rh-postgresql10-postgresql
$ sudo systemctl enable rh-postgresql10-postgresql

再度、実行バージョンの確認を行います。


$ psql -V
psql (PostgreSQL) 10.17

データベースの作成

シェル内で、次のコマンドを入力してデータベースとユーザー(ロール)を作成し、パスワードを独自の値に置き換えます。


# su - postgres
$ psql
postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH PASSWORD 'J5brHrAXFLQSif0K';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q

例としたパスワードは使用しないでください。
ってあるけど、だが、断る。(みんなはちゃんとやってね)

完了したら、\qと入力してPostgreSQLシェルを終了します。 psqlコマンドを実行して、先ほど設定したユーザー名とパスワードを渡すことで、認証が機能することを確認できました。


$ psql -U netbox -W -h localhost netbox
ユーザー netbox のパスワード:
psql (10.17)
"help" でヘルプを表示します。

netbox=> \q