「夜ノDevelopers.IO 2016 in Sapporo」でいまどきのネットワーク機器の設定管理ツールの話をしてきました。 #cmdevio2016

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんばんわ、コカコーラ大好き カジです。 ブログのリリースが遅くなってしまいましたが、2016年10月14日(金)に開催された「夜ノDevelopers.IO 2016 in Sapporo」でふとしたきっかけで調査することになったネットワーク機器の設定管理ツールの話をしてきました。

発表資料

フォローアップ

ポイント

「対象機器」(ネットワーク機器の種類)と「やりたいこと」(管理したいこと)で選定しましょう。 設定管理ツールには多機能なものがあることを初めて知りましたが、設定管理だけではなく、ファームウェア管理や、変更検知なども含まれているものもあるので、悩みますね。 本当は国産メーカのルータ設定を管理したいと思って調査し始めましたが、今回試したRANCIDの最新バージョンは開発されていないようでした。

資料中に出てくるPacker、VyOSについて

PackerはPackerでAmazon LinuxのAMI(Amazon Machine Image)を作成するを参照ください。

VyOSについては1つのグローバルIPで複数VPCとVPN接続してみた#reinventVyOSをAWSで使う時によくやることをまとめてみた を参照して構築ください。

VyOS対応RANCIDサーバ on Amazon Linux 構築用 Packerファイル

手間をかけた点

  • Amazon Linuxで構築
  • rancidユーザではなく、ec2-userで構築

Packerのファイルをこちらに記載しておきます。

Packer用Jsonファイル

% cat packer-rancid-on-ec2.json
{
  "builders": [
    {
      "type": "amazon-ebs",
      "access_key":               "{{user `aws_access_key`}}",
      "secret_key":               "{{user `aws_secret_key`}}",
      "region": "ap-northeast-1",
      "source_ami": "ami-374db956",
      "instance_type": "t2.micro",
      "ssh_username": "ec2-user",
      "ssh_timeout": "10m",
      "ami_name": "RANCID - Really Awesome New Cisco confIg Differ {{timestamp}}"
    }
  ],

  "provisioners": [
    {
    "type": "shell",
    "script": "rancid_install.sh"
    }
  ]
}

上記で利用するスクリプトファイル rancid_install.sh

#!/bin/bash
# Packeage Install
sudo yum update
sudo yum -y install wget ftp telnet gcc cvs expect

# rancid install

echo "## rancid Install ##"
wget ftp://ftp.shrubbery.net/pub/rancid/rancid-3.5.1.tar.gz
tar xzvf rancid-*.tar.gz
cd rancid-*/
./configure --prefix=/usr/local/rancid
make
sudo make install
sudo chown -R ec2-user:ec2-user /usr/local/rancid/
sudo chmod 775 /usr/local/rancid/

# Config backup
cp -ip /usr/local/rancid/etc/rancid.conf /usr/local/rancid/etc/rancid.conf.org
sed -i.bk '/# list of rancid groups/,/^#LIST_OF_GROUPS/cLIST_OF_GROUPS="Routers Switches"' /usr/local/rancid/etc/rancid.conf

# cvs Setup
/usr/local/rancid/bin/rancid-cvs

# VyOS Add
cd /home/ec2-user
sudo yum -y install git
git clone https://bitbucket.org/wzurowski/rancid-vyatta.git
cd rancid-vyatta
cp vyos.pm /usr/local/rancid/lib/rancid
cp vlogin /usr/local/rancid/bin/
cat /usr/local/rancid/etc/rancid.types.base > /usr/local/rancid/etc/rancid.types.conf
echo "#" >> /usr/local/rancid/etc/rancid.types.conf
cat ./rancid.types.conf >> /usr/local/rancid/etc/rancid.types.conf

まとめ

知らないことが多くあったので、勉強になりました。 また、AnsibleのNetwork Moduleを試してみたいと思いましたし、発表後に弊社吉江 から「Oxidized」というツールについても聞いたので調査してみたいと思いました。

.oO(ViewVCを使わずに、CVS (Concurrent Version System)で差分参照したいと思っていましたが、時間が足りずにできてません。)