ネットワーク作業の効率化 telnet ツールを作るツールTelnetman

# 1. はじめに
## 1.1 背景
私は某大手通信会社のネットワーク構築部門でシステム開発を担当しています。
弊社では商用ネットワーク機器への

- バージョンアップ
- 迂回路構築
- 各種設定変更

等の作業を日々行っています。

人海戦術で手作業で行うのは当然効率が悪いので作業手順をツール化するわけですが、
段々それすらも面倒に感じてきたので作業ツールを作るツールを開発しました。
名付けて**Telnetman** です。

## 1.2 実績
期間 : 3年
対象 : 1件あたり300 ～ 2,000台程度を対象とした比較的規模の大きい作業11
効果 : 対手作業比で億円規模のコスト削減
事故 : 無し

# 2. 機能紹介
## 2.1 概要
登録したコマンドをGUI でグリグリ動かして並べて作業手順を作り上げていくワークフロー製品のようなものです。
コマンドは固定のものだけでなく、`show interface {IF} status`のようなスケルトンで登録して自由に繰り返し処理もできます。

## 2.2 デモ
ルーターのホスト名を変更するというだけの簡単な作業を例にしたデモ動画です。
以下のような流れの作業です。
<img width="280" alt="Telnetman_demo_summary.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147025/7aab6983-564e-d7ca-9224-6e56d196cf3e.png">

![Telnetman2_demo.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147025/4bdbd1d1-22b3-c7f7-b4ea-cdff2c18d8e7.gif)

## 2.3 嬉しい機能
1. telnet だけでなくssh もできます。
2. 正規表現が苦手な人のために正規表現ジェネレーター搭載。![training-99-03-01-b.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147025/46f9e06f-05b4-aa07-42c6-48e688cb4052.png)
3. 検証環境から商用環境へのデータ移行がドラッグ&amp;ドロップ一発。Export ボタンを押すとデータファイルがダウンロードできる。それをImport エリアにドラッグ&amp;ドロップ。![Telnetman_Export-Import.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147025/fbf08289-ada2-c424-055c-f9c026c788bd.png)


## 2.4 拡張ツール
例えば、次のような長大なシナリオの作業を行いたいときがあります。
<img width="226" alt="Telnetman_work_scenario.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147025/cb174397-5337-29ba-36ef-0e38aff99d36.png">
さすがに**Telnetman** だけでこれを組むのは困難です。
そこで**Telnetman** でワークフローを組む**Telnetman Workflow** という拡張ツールも作りました。
![TelnetmanWF_overview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/147025/08021b3e-9ab5-3e67-aff5-af8f90d2ce4f.png)
横に長い四角の中に**Telnetman** がいるイメージです。
作業シナリオの小項番毎に**Telnetman** を組んで、それを作業シナリオに沿って**Telnetman Workflow** に配置してつなげていきます。
Start の円の中にパラメーターシート(CSV) を入れると矢印の先の四角にパラメーターシートが渡され**Telnetman** にアクセスしてコマンドを実行し、また次の四角にパラメーターシートが渡されていきます。

# 3. 導入手順
Github で公開しています。
[Telnetman 本体](https://github.com/takahiro-eno/Telnetman2 "Telnetman 本体")
[Telnetman Workflow](https://github.com/takahiro-eno/TelnetmanWF "Telnetman Workflow")

## 3.1 VM へのインストール
必ず最小構成のCentOS7 で、OS をインストールしただけで何も変更していない状態で行って下さい。
**Telnetman** と**Telnetman Workflow** でOS は分けて下さい。
### 3.1.1 Telnetman

```
1. sudo yum -y install git
2. git clone https://github.com/takahiro-eno/Telnetman2.git
3. cd Telnetman2
4. sudo sh Telnetman2_install.sh
5. cd ..
6. rm -rf Telnetman2
7. sudo reboot
```

https\://server address/
でアクセスできます。

### 3.1.2 Telnetman Workflow
スクリプト実行時に連携先**Telnetman** のIP Address の入力を求められます。

```
1. sudo yum -y install git
2. git clone https://github.com/takahiro-eno/TelnetmanWF.git
3. cd TelnetmanWF
4. sudo sh TelnetmanWF_install.sh
5. cd ..
6. rm -rf TelnetmanWF
7. sudo reboot
```

https\://server address/
でアクセスできます。

## 3.2 Docker
**Telnetman** と**Telnetman Workflow** 両方同時に導入します。 

```
1. git clone https://github.com/takahiro-eno/Telnetman2.git
2. git clone https://github.com/takahiro-eno/TelnetmanWF.git
3. cd TelnetmanWF
4. sudo docker-compose build
5. sudo docker-compose up -d
```

https\://host address:8443/
https\://host address:9443/
でそれぞれにアクセスできます。

## 3.3 OpenShift Origin v3.9 
[動作確認済み](https://qiita.com/t-eno/items/fd9329369478b8dd818e "OpenShift Origin v3.9 の環境構築とアプリケーションのデプロイ")です。
導入方法はGitHub を御覧ください。

## 3.4 最初にすること
**Telnetman** サーバーのOS または**Telnetman** コンテナにログインします。
`sudo perl /usr/local/Telnetman2/pl/create_administrator.pl`
を実行して管理者アカウントを作成して下さい。

## 3.5 アカウント作成
**Telnetman** 画面右上の「ユーザー登録」で登録して下さい。
「管理者用」に管理者アカウントでアクセスして承認すると
「操作画面」で使えるようになります。

## 3.6 使い方
**Telnetman** トップ画面にトレーニング用のページのリンクがあります。
そこに書いてある内容を省略することなく全て書いてある通りに実行して下さい。
例と実際ではインターフェース名が違うでしょうから適宜読み替えて下さい。
ここに書かれている内容で**Telnetman** と**Telnetman Workflow** のほぼ全機能が学べます。
まずは守破離の守です。
いきなり破や離から始めて「わかんねぇ」「使えねぇ」とか言う人がいますがダメです。



# 4. 公開にあたって
業務中に作ったものをなぜ公開できるのか、ですが、当然管理職も異動するので新しい管理職によっては部署の方針がコロッと変わることがあります。
当時の新しい管理職が内製開発を嫌っていて「内製開発なんてとんでもない。異動や退職をしたら誰がメンテナンスするんだ。開発だけでなく保守も含めた業務委託契約で作ったものでなければ認めない。」という方針で**Telnetman** は廃棄させられました。

会社が廃棄したものなので作成者である私が好きに扱っています。
このまま消えるのは悲しいので公開することにしました。
弊社の大規模ネットワークの商用メンテナンス作業に耐えた実績があります。
**Telnetman** で時間とお金を節約して、それを他の新規技術導入などに当てて下さい。