目次
はじめに
こんにちは、エーピーコミュニケーションズ iTOC事業部BzD部0-WANの柳田です。
NetBoxというツールをご存じでしょうか?ネットワーク機器やデータセンターの情報を一元管理できるOSS(オープンソースソフトウェア)であり、誰でもGithubからダウンロードして構築することが出来ます。
今回はNetBoxをECS上に構築する方法を紹介します。
構成図
ECS(Fargate)にNetboxを構築し、ファイルシステムにEFS、データベースにRDS(PostgreSQL)、キャッシュサーバにElastiCache(Redis)、認証情報管理としてSecret Manager、またコンテナイメージはGithub Container Registoryからイメージを取得します。
前提
以下のリソースは作成済とします。
VPC
Public Subnet
Private Subnet
Internet Gateway
NAT Gateway
Application Load Balancer
Security Group
RDS
RDSの構築を行う前に「Aurora and RDS > パラメータグループ」からカスタムパラメータグループを作成し、「rds.force_ssl」の値を0
に変更します。
デフォルトでこのオプションは1
に設定されており、SSL接続を強制する動作となります。この状態でNetBoxを起動するとエラーが発生します。
エラーの原因としては、NetBoxコンテナがルートユーザ以外で起動するため証明書が格納されている/root
ディレクトリにアクセスできないことが考えられます。
値を0
に設定することでSSL接続が強制されずエラーを回避することができます。
RDSを以下の要件で構築します。
エンジンタイプ:PostgreSQL
エンジンバージョン:PostgreSQL 16.3-R3
デプロイオプション:シングル AZ DB インスタンスデプロイ
追加設定として「最初のデータベース名」をnetboxに設定し、先ほど作成したカスタムパラメータグループを設定します。
ElastiCache
NetBoxではキャッシュ用とジョブ用の2つのRedisコンテナが起動します。今回は、ElastiCacheを用いてキャッシュサーバを2つ起動させます。
エンジンバージョン:7.1
ノードのタイプ:cache.t3.micro
レプリケーション数:2
アクセスコントロール:認証デフォルトユーザーアクセス
注意点としてデプロイオプションを「独自のキャッシュを設計」、クラスターモードを「無効」にします。
クラスターモードが有効だとNetBoxで使用される一部のコマンドがサポートされておらずエラーが出てしまいます。
EFS
「EFS > ファイルシステム」からファイルシステムを推奨設定で作成した後、「EFS > アクセスポイント」からアクセスポイントを作成します。
ルートディレクトリのパスを/netbox
で設定し、POSIXユーザーおよびルートディレクトリに適用させるUID:GID
を任意の値で指定します。
「アクセスポイントのアクセス許可」の設定では作成したルートディレクトリの権限を設定することができます。今回は所有者だけ書き込みができるように0755
で設定します。
EFSはアクセスポイント無しだとルートユーザでしか書き込みができません。NetBoxが動作しているコンテナはunitユーザで実行されるため、権限エラーとなってしまいます。
上記で設定したアクセスポイントを経由することでPOSIXユーザで設定したUID:GID
でアクセスするようになり、設定したルートディレクトリのパスに書き込まれます。
Secret Manager
ユーザ名やパスワード情報などのシークレット情報をSecret Managerに格納します。
ECS
「ECS > タスク定義」から以下の図となるようにタスク定義を作成します。
使用するコンテナイメージのURLを入力します
netbox.envに記載されている環境変数を3つのコンテナに設定します。設定する環境変数と値は以下の通りです。
一部の環境変数にはSecret Managerに保存したARNと対応するキー名を設定します。
実際の入力では以下のように設定します。
一部のコンテナにDockerコマンドを設定します。
ボリュームの設定ではEFSで作成したファイルシステム、アクセスポイントを指定し、NetBoxコンテナのメディアルートにマウントします。
タスク定義作成後にクラスターとサービスを作成します。NetBoxを起動させ、ALB経由でアクセスします。
作成したスーパーユーザのユーザ名とパスワードでログインできれば完了です。
参考記事
まとめ
今回はECSを利用してNetBoxを構築する方法を紹介しました。複数のAWSサービスを利用し、連携させる必要があるため設定ミスで多くのエラーが発生してしまいましたが、各サービスの細かい仕様を知る良い機会になりました。
0-WANについて
私たち0-WANは、ゼロトラスト製品を中心とした、マルチベンダーでのご提案で、お客様の経営課題解決を支援しております。
ゼロトラストってどうやるの?製品を導入したけれど使いこなせていない気がする等々、どんな内容でも支援いたします。
お気軽にご相談ください。
問い合わせ先、0-WANについてはこちら。