背景
前回の記事にて、VirtualBox+Vagrantを用いた(単純な)サーバの自動構築が出来た。
ただ、vagrantfileには必要最低限の情報のみ記載していたので、今後、他の検証で使えるようにするためにも、もう少し実用的な内容にする必要がある。
別ツールで触ってみたいものがあったため、その環境をvagrantを使いつつ構築してみようと思う。
NetBox(別ツールとは?)
NetBoxとは、IPアドレス管理(IPAM)及び、データセンターインフラストラクチャ管理(DCIM)を行うことが出来るOSSのツールである。
詳しくは下記の通り。
https://github.com/netbox-community/netbox
IPアドレスや、データセンタのラックや搭載機器等の物理周りをドキュメントで管理するのは限界があるので、こういったツールがあると便利だなと思い、実際に触ってみたく今回構築をしてみる。
参考サイト
今回、下記サイトを参考に構築を行った。
正直、vagrantで無理にやらなくても、下記サイト(項番1)を見てもらえれば簡単にnetboxのおためしは可能です。(NetBoxのDockerイメージがあるので尚更簡単に導入できます。)
今回の範囲
(NetBoxのdockerイメージを使うので、出来物を利用する形ですが)vagrantfileに設定を記載して、「vagrant up」と打てばNetBoxの環境が構築できるところまでが範囲となります。
※NetBoxの説明は本記事ではしないです。
環境
- windows 10
- VirtualBox 6.0.20
- Vagrant 2.2.7
- docker
- docker-compose 1.23.1
- netbox
VagrantでのVM+Docker+NetBox導入
導入手順
前回の記事の通り、作成済みのVagrant用のフォルダにて、仮想マシン用にフォルダを作成して、そのフォルダにて下記コマンドを実行する。
> vagrant init
実行後、コマンドを実行したフォルダにvagrantfileが作成されるため、下記内容に上書きする。
Vagrant.configure("2") do |config|
# ローカルのvagrant box登録イメージから"centos7.4"の名前を探し、有ればそれを利用
# 無ければ、"vagrantcloud.com"からダウンロードしてvagrant boxに登録後、そのイメージファイルを利用
config.vm.box = "centos7.4"
config.vm.box_url = "https://vagrantcloud.com/centos/boxes/7/versions/1803.01/providers/virtualbox.box"
# ネットワークIF(192.168.9.10)をVMに設定
config.vm.network "private_network", ip: "192.168.9.10"
# VMの設定
config.vm.provider "virtualbox" do |vb|
# VMのGUI有無(false:無し)
vb.gui = false
# VirtualBoxのVM名
vb.name = "centos74:netbox"
# VMのスペック(メモリ:1GB CPU:1コア)
vb.memory = "1024"
vb.cpus = 1
end
# VM構築後のOS上で下記コマンドを実行(初回実行時のみ)
# 内容は参考サイトを参照ください。
# 簡単に記載すると、
# docker、docker-compose関連のインストール
# netbox-dockerイメージの取得とビルド、一部設定変更
config.vm.provision "shell", inline: <<-SHELL
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install -y docker-ce
systemctl start docker
docker run hello-world
sudo curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
yum install -y git
git clone https://github.com/netbox-community/netbox-docker.git
cd /home/vagrant/netbox-docker
/usr/local/bin/docker-compose build
sed -i -e 's/8080/80:8080/g' ./docker-compose.yml
SHELL
# VM構築後&VM起動時にOS上で下記コマンドを実行
config.vm.provision "shell", run: "always", inline: <<-SHELL
systemctl start docker
cd /home/vagrant/netbox-docker
/usr/local/bin/docker-compose up -d
SHELL
end
保存したら、下記コマンドを実行して、NetBoxが上がるのを待つ。(ちょっと時間がかかります)
> vagrant up
実施手順としては以上です。
vagrantfileの説明
実行することで、
- centos7.4のboxイメージをvagrantに登録(事前の登録不要、登録済みでも可、再利用可能)
- virtualbox上に"centos74:netbox"の名前でVM作成
- スペック:CentOS7.4 メモリ=1GB、CPU=1コア
- IPアドレス:192.168.9.10
- VM上には、dokcer + docker-compose + NetBoxが導入
が構築される。
vagrantfileの内容については、上記のコメントを参照して貰えればと思いますが、
ポイントとしては、
仮想VMのOS上でのdokcer + docker-compose + NetBoxが導入箇所となる。
下記の記載箇所に導入に必要なコマンドを記載することで、OS上で
"root"権限
にてコマンドを実行していくため、参考サイトの手順を記載している。
config.vm.provision "shell", inline: <<-SHELL
end
注意点
provisionに記載のコマンドは、VM構築時(初回のvagrant up実行時)のみ、コマンドを実行するため、例えば、OS停止 ⇒ 起動(vagrant up)を行った場合は、コマンドは実行されない。
今回、OS上にdocker自動起動、netbox-docker自動起動の設定・仕組みを入れていないので、このままだと、再度"vagrant up"にて起動をかけた際には、OSにログインをしてコマンドを打つ必要が出る。
そのため、docker起動、netbox-docker起動のコマンドは、下記の記載箇所に、コマンドを記載している。
「run: "always"」オプションは、「vagrant up」を実行する度に、コマンドを実行するものとなる。
config.vm.provision "shell", run: "always", inline: <<-SHELL
end
NetBoxを触ってみる
NetBoxには"http://(VMのIPアドレス)"でアクセスでき、
ID:admin PW:admin
でログインが可能です。
終わりに
NetBoxの利用については、機会あれば別記事で。
その前に、今回も踏まえつつ、vagrantfileの設定内容(例えば複数台とか、複数IFとか)を整理するかと思います。