複数Linuxサーバーの構築設定を自動化する方法(TeraTermマクロで20台設定した実例)

Automation

概要

Linuxサーバーを複数台運用していると、同じ設定を複数のサーバーに適用する作業が頻繁に発生します。 例えば次のような作業です。

  • ユーザー設定
  • SSH鍵の配布
  • 設定ファイルの変更
  • パッケージインストール
  • ログ収集

サーバーが数台であれば手作業でも問題ありませんが、台数が増えると現実的ではなくなります。 この記事では、設定作業を簡単に自動化する方法として、TeraTermマクロ(TTL)を使って複数Linuxサーバーの構築設定を自動化した方法を紹介します。

この記事では次の内容を整理します。

  • 設定作業の自動化の必要性
  • Linuxサーバーの設定作業自動化の手段としてのTeratermの有効性
  • Teratermによる自動化の概要

手作業での構築作業の問題

手作業で設定を行う場合、一般的な手順は次のようになります。

1. SSHでログイン
2. 設定コマンドを実行
3. 結果を確認
4. 次のサーバーへ

設定対象が複数台ある場合は、これをサーバー台数分繰り返すことになります。 つまり、例えば20台の場合は、同じ作業を20回繰り返すことになります。

この方法には次の問題があります。

  • 作業時間が長い
  • 人的ミスが発生しやすい
  • 作業証跡を残しにくい

このような理由から、構築作業は自動化する方が安全で確実です。


構築作業の自動化

Linuxサーバーの構築作業を自動化する方法はいくつかあります。 代表的なものとしては次のような方法があります。

  • Ansible
  • Shellスクリプト
  • Expect
  • TeraTermマクロ

今回は TeraTermマクロ(TTL) を利用しました。


TeraTermマクロを使った理由

今回TeraTermマクロを採用した理由は次の通りです。

  • Windows端末から実行できる
  • SSH接続に対応している
  • ログ取得が簡単
  • 追加ツールのインストールが不要

運用端末がWindowsの場合、TeraTermマクロは非常に手軽に使える自動化手段です。 会社のWindows端末の場合は、新規ツールを好き勝手にインストールできないことも多いので、既存の基本的なツールだけで自動化ができたほうが望ましいことが多いです。


自動化の仕組み

今回の構成は次のようになっています。

Windows端末  
   ↓  
TeraTermマクロ  
   ↓  
SSH接続  
   ↓  
Linuxサーバー

マクロの構造は次の2つに分けています。

接続マクロ  
+  
処理マクロ

役割は次の通りです。

  • 接続マクロ:SSH接続とログ取得、処理マクロの起動
  • 処理マクロ:実際の設定処理

この構造にすることで、接続処理を共通化できます。


接続用マクロ

接続処理は次のマクロで行います。

ファイル名exec_ttmacro.ttl

コードの一部を紹介します。

TTLNAME=param2  
HOSTADDR=param3  
USERNAME=param4  
PASSWORD=param5  
LOGNAME=param6

このマクロでは、引数として次の情報を受け取ります。
TTLマクロの場合、第1引数はマクロ自身のパスが格納されるため、実際に引数として使用できるのはparam2以降です。
※param1からparam9はTTLマクロでは引数を示す定数です。

引数内容
param1実行されたマクロ自身のパス
param2処理後に実行するTTLファイルのパス
param3接続先IP
param4接続ユーザー
param5接続ユーザーのパスワード
param6出力するログファイルのパス

SSH接続処理

SSH接続は次のコードで行います。

msg=HOSTADDR  
strconcat msg ':22 /ssh /auth=password /user='  
strconcat msg USERNAME  
strconcat msg ' /passwd='  
strconcat msg PASSWORD  
  
connect msg

このコードでは、SSH接続用の文字列を組み立てて connect コマンドで接続しています。


ログ取得

ログ取得は次のコマンドで行います。

logopen LOGNAME 0 1 1 0

ログを取得することで次のメリットがあります。

  • 作業証跡を残せる
  • エラーの確認ができる
  • トラブルシュートが容易になる

構築や設定変更の作業ではログ取得は非常に重要です。


実際の設定処理

接続後は、別のTTLマクロで設定処理を実行します。
例えば次のような処理です。

  • SSH鍵設定
  • ディレクトリ作成
  • パーミッション変更

この処理マクロを include することで実行します。


実行方法

マクロは次のように実行します。

exec_ttmacro.ttl setting.ttl 192.168.1.10 root password log1.txt

このコマンドをサーバーリスト分実行することで、複数サーバーに対して同じ設定を適用できます。


自動化の効果

手作業の場合、1台5分くらいだとしても、20台あれば100分かかります。 また、手作業でミスをしている可能性もあるので、もう一度、設定を確認したほうが良いかもしれません。 自動化した場合、1台あたりは30秒もかからず、設定後の確認も実行する処理に入れておけば、出力されたログを20台分確認するだけです。

処理にもよりますが、1台分の設定が10秒、ログファイルの確認が30秒とすると、20台実施しても15分もかかりません。 結果として作業時間は短縮され、精度も上がります。 証跡も残っているので、後から確認もできますし、再実行もすぐにできます。


まとめ

サーバー台数が増えてくると、同じ作業を繰り返す運用が増えてきます。 このような作業は人間が手作業で行うよりも、スクリプトで自動化する方が安全で効率的です。 TeraTermマクロを使えば、Windows環境でも簡単にSSH操作を自動化できます。


このシリーズ

https://infratechnote.com/teraterm-macro/

次の記事

https://infratechnote.com/teraterm-ttl-ssh-basics/