初めての方は初めまして,そうじゃない方も初めまして. 日本openSUSEユーザ会でopenSUSEに関係のない話をする担当の川上です.

今日は,OSSでDigitalOceanが開発しているnetboxというIPAMをopenSUSEにインストールする記事です. 最近,ちょっと検証として使ったりしてます. 実運用ではCentOSを使うかもしれませんが,検証くらいはopenSUSEでやって行きます.

PostgreSQLの準備

netboxはIPアドレスを格納するのに,PostgreSQL独自のIPアドレスタイプを使用するので,PosgtreSQLを使用する必要があります. MySQLは使えません.

まず,PostgreSQLのインスト-ルと初期設定です.

$ sudo zypper install postgresql postgresql-server postgresql-devel
$ sudo systemctl start postgresql.service
$ sudo su - postgres
$ psql
psql (10.10)
Type "help" for help.

postgres=# CREATE DATABASE netbox;
CREATE DATABASE
postgres=# CREATE USER netbox WITH PASSWORD 'password';
CREATE ROLE
postgres=# GRANT ALL PRIVILEGES ON DATABASE netbox TO netbox;
GRANT
postgres=# \q
$ vim /var/lib/pgsql/data/pg_hba.conf #ident を md5に変更
# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
local   replication     all                                     peer
host    replication     all             127.0.0.1/32            md5
host    replication     all             ::1/128                 md5
$ sudo systemctl restart postgresql.service
$  psql -U netbox -W -h localhost netbox
Password for user netbox:
psql (10.10)
Type "help" for help.

netbox=>\q

ここで,大事なのは, /var/lib/pgsql/data/pg_hba.conf を編集しないと,PostgreSQLにパスワードでアクセス出来ないので注意して下さい.

netboxのインストール

続いて,netboxをインストールして言います. といっても,必要な依存関係をインストールして,netboxのソースコードを配置して,データベースのマイグレーションを行うだけです.

$ sudo zypper install python3-devel libffi-devel libxml2-devel python3-setuptools libxslt-devel graphviz openssl-devel redis
$ wget https://github.com/netbox-community/netbox/archive/v2.6.8.tar.gz
$ sudo tar -xzf v2.6.8.tar.gz -C /opt
$ sudo ln -s netbox-2.6.8/ netbox
$ cd netbox
$ pip3 install -r requirements.txt 
$ cd netbox/netbox
$ cp configuration.example.py configuration.py
$ vim configuration.py # データベースと,運用するホスト,シークレットを変更してください.
$ cd /opt/netbox/netbox
$ python3 manage.py migrate
$ python3 manage.py createsuperuser
$ python3 manage.py collectstatic

Netboxのホスティング

ここまできたら,後は,Netboxをホスティングするだけです. 今回はサーバにWSGIサーバにgunicorn,デーモン化にSupervisorを,リバースプロキシとしてNginxを使用します.

# pip3 install gunicorn
$ sudo zypper install python2-setuptools supervisor # Leap 15.1のsupervisorの依存関係にpython2-setuptoolsが足りない気がする

あとはサーバの設定をして行きます. まずデーモン化です.

$ sudo vim  /etc/supervisord.conf 
...
[program:netbox]
command = gunicorn -c /opt/netbox/gunicorn_config.py netbox.wsgi
directory = /opt/netbox/netbox/
user = nginx
stdout_logfile=/var/log/supervisord/netbox.log
stderr_logfile=/var/log/supervisord/netbox_error.log
$ sudo systemctl start supervisord

あとはNginxの設定です.

$ sudo vim /etc/nginx/conf.d/netbox.local.conf 

server {
    listen 80;

    server_name netbox.local;

    client_max_body_size 25m;

    location /static/ {
        alias /opt/netbox/netbox/static/;
    }

    location / {
        proxy_pass http://127.0.0.1:8001;
        proxy_set_header X-Forwarded-Host $server_name;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}
$ sudo systemctl start nginx.service

まとめ

これで,netboxのインストールが行えました. netboxはipamとしてはラックの配置など機能がおおくなかなか使いこなすのは難しそうですが,使いこなせると便利な気配はすごいしているので,ちゃんと使って行きたい所です.