Netboxで機器を管理して、その情報をつかって自動でコンフィグ保存を定期的に実行する環境を作ったメモ
今回は、Netbox と Ansible と Gitlabのインストールまで記載してます
動作イメージ
各ソフトウェアと全体的な動作のは以下のイメージで、Netboxでネットワーク機器を管理して、GitLabからAnsibleをつかってコンフィグ取得して最終的にGitLab内にコンフィグ保存させようとしました
今回の確認環境
Ubuntu 24.04.1 LTS で構築しました
(ネットワークシュミレータ上に作りました)
以下のようにサーバ以外にコンフィグ取得対象のネットワーク機器として vJunosEvolved と VyOS をつなげてます
Ubuntuのサーバは以下を参考にしてください、今回はUbuntu 24.04.1のISOファイルをダウンロードを事前にしてサーバ構築を行いました
GitLab のインストール
以下の内容を参考にさせていただき実施
設定内容だけ抜粋します
今回はポート番号9000でWeb GUIにアクセスできるように設定しています。
apt-get update
apt install -y curl openssh-server ca-certificates tzdata perl
curl https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | bash
EXTERNAL_URL="http://localhost:9000" apt-get install gitlab-ce
gitlab-ctl reconfigure
これでインストールは終了になります。初期パスワードは以下のファイルで確認できます
more /etc/gitlab/initial_root_password
ブラウザからhttp://<サーバーのIP>:9000
へアクセスすると、ログイン画面が表示されるので、ユーザ名:root
、パスワードは上記で確認した初期パスワードからログインできます。
GitLab Runnerのインストール
GitLab で CI/CDパイプラインを実行するためにGitLab Runnerのインストールします。
今回はこの機能をつかってGitLab上でAnsibleのPlaybookを実行させます。
以下の内容を参考にさせていただきインストール実施
設定内容だけ抜粋
curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | bash
apt-get update
apt-get install gitlab-runner
Netbox のインストール
通常のインストールだと、Netbox以外にPostgreSQL・Redis・nginxなどもインストールが必要で手間のため、今回はDockerを利用しました
Dockerをインストール
以下の内容を参考にさせていただき実施
設定内容だけ抜粋
# Add Docker's official GPG key:
apt-get update
apt-get install ca-certificates curl
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
NetBox の Docker イメージをインストール
以下の内容を参考にさせていただき実施
まずは以下を実施
git clone -b release https://github.com/netbox-community/netbox-docker.git
cd netbox-docker
以下の内容で起動するようにdocker-compose.override.yml
を作成する
- 今回はポート番号8000でWeb GUIにアクセスできるように設定しています
- サーバ再起動時に自動で起動するようにする
services:
netbox:
ports:
- "8000:8080"
restart: always
netbox-worker:
restart: always
netbox-housekeeping:
restart: always
postgres:
restart: always
redis:
restart: always
redis-cache:
restart: always
Docker Compose でDocker イメージをインストールと合わせてバックグラウンドで起動します
docker compose up -d
次にNetbox用のユーザ作成します
今回は仮でユーザ名とパスワードともにnetbox
にしてます
docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
# docker compose exec netbox /opt/netbox/netbox/manage.py createsuperuser
🧬 loaded config '/etc/netbox/config/configuration.py'
🧬 loaded config '/etc/netbox/config/extra.py'
🧬 loaded config '/etc/netbox/config/logging.py'
🧬 loaded config '/etc/netbox/config/plugins.py'
Username: netbox
Email address:
Password:netbox
Password (again):netbox
This password is too short. It must contain at least 12 characters.
Password must have at least one numeral.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.
#
ブラウザからhttp://<サーバーのIP>:8000
へアクセスすると、ログイン画面が表示されるので、ユーザ名/パスワードnetbox
でログインできます。
Ansible のインストール
pipを使ってインストールします
apt-get install pip
pip install ansible --break-system-packages
SSH用にparamiko
とansible-pylibssh
をインストールしておきます
pip install paramiko --break-system-packages
pip install ansible-pylibssh --break-system-packages
次回
ここまででインストール終了です
次回は、Netbox・Ansible・GitLabの設定書きます