📚 シリーズ:インフラ運用 × 生成AI 実践レシピ集
① 障害対応の初動をAIで加速する
② 構成管理ドキュメントをAIで自動生成する(本記事)
③ 監視アラートをAIでトリアージする
④ IaCテンプレートをAIと共同作成する
🔗 前シリーズ:生成AIを武器にするインフラエンジニアへの道(全3記事)
はじめに
インフラエンジニアの業務時間のうち、ドキュメント作成・更新は無視できない割合を占めています。サーバーを構築したら構成表を作り、作業が終われば手順書を残し、担当者が変わるたびに引き継ぎ資料を整備する。これらは運用品質を維持するために不可欠ですが、コマンド出力を転記して表に整形する作業は単調で、時間がかかります。
この記事では、AIを「ゼロから文書を書かせるツール」としてではなく、「コマンド出力という事実情報を整形・構造化するツール」として活用します。AIへの入力はすべてコマンドの実行結果です。AIが担うのは、その出力を表形式に変換し、項目ごとに分類する作業です。判断や責任は人間が担います。
この記事で作成する3種類のドキュメントは以下の通りです。
| ドキュメント種別 | 入力ソース | AIの役割 |
|---|---|---|
| サーバー構成表 | コマンド出力(hostname, ip addr, free -h 等) | 表形式に整形・分類 |
| 作業手順書 | historyコマンドの実行履歴 | 手順書形式に構造化 |
| 引き継ぎドキュメント | 構成表 + 手順書 + 運用ルール | 統合・フォーマット適用 |
手動作成とAI活用の所要時間の目安を比較すると、次のようになります。
| ドキュメント | 手動作成 | AI活用 |
|---|---|---|
| サーバー構成表 | 1〜2時間 | 15〜30分 |
| 作業手順書 | 1〜2時間 | 20〜30分 |
※サーバー1台あたりの目安です。構成の複雑度により変動します。
手動の場合、コマンド出力を目視で確認しながらExcelやMarkdownに転記し、体裁を整える工程が大半を占めます。AI活用では、コマンド出力をそのまま渡して整形させ、人間は「生成結果の検証」に集中します。
この記事を読むと、以下の3つができるようになります。
- サーバー構成情報を一括収集するスクリプトを作成し、AIに渡せる形で出力できる
- コマンド出力やhistory履歴からAIで構成表・手順書を生成するプロンプトを設計できる
- AI生成ドキュメントの検証ポイントを理解し、正確性を担保できる
前提条件
この記事は、以下の前提知識を持つ方を対象としています。
- 記事①のプロンプト設計の基礎知識(6構成要素の理解)
- Linuxのコマンドライン操作ができる(hostname、ip addr、systemctl等の基本操作)
- SSHでサーバーに接続できる
検証環境
| 項目 | 内容 |
|---|---|
| OS | AlmaLinux 10 minimal |
| 接続方法 | SSH(192.168.1.90) |
| AIモデル | Claude Sonnet 4.6(Anthropic公式Web UI) |
| 出力形式 | Markdown表形式 |
| 必要な権限 | root または sudo(ss -tlnp、firewall-cmd等で必要) |
記事中のプロンプト例はすべてClaude Sonnet 4.6で動作確認しています。ChatGPTなど他のモデルでも基本的な考え方は共通ですが、出力形式の細かな差異が生じる場合があります。
サーバー情報を一括収集する
構成表を作成するために、サーバーの情報を8カテゴリに分けて収集します。以下のコマンドはAlmaLinux 10 minimalで実行できます。ただし、firewall-cmd は firewalld パッケージがインストールされている環境が前提です(minimalインストールでは含まれない場合があります。dnf install -y firewalld でインストールしてください)。
| カテゴリ | コマンド | 取得できる情報 |
|---|---|---|
| ホスト情報 | hostnamectl | ホスト名・OS・カーネル・仮想化種別・Machine ID |
| OS情報 | cat /etc/os-release / uname -r | OS名・バージョン・カーネルバージョン |
| CPU | lscpu | アーキテクチャ・コア数・モデル名 |
| メモリ | free -h | メモリ合計・使用量・スワップ |
| ストレージ | df -hT / lsblk | マウントポイント・ファイルシステム・サイズ・使用率 |
| ネットワーク | ip addr / ip route / ss -tlnp | IPアドレス・ゲートウェイ・リスニングポート |
| サービス | systemctl list-units --type=service --state=running | 実行中のサービス一覧 |
| セキュリティ | getenforce / firewall-cmd --list-all | SELinux状態・firewalldルール |
各コマンドの実行例を示します。
# ホスト情報
$ hostnamectl
# 実行結果
Static hostname: alma-web01
Icon name: computer-vm
Chassis: vm
Machine ID: a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
Boot ID: 12345678-1234-1234-1234-123456789abc
Virtualization: microsoft
Operating System: AlmaLinux 10 (Purple Lion)
CPE OS Name: cpe:/o:almalinux:almalinux:10
Kernel: Linux 6.12.8-1.el10.x86_64
Architecture: x86-64
# メモリ情報
$ free -h
# 実行結果
total used free shared buff/cache available
Mem: 3.8Gi 512Mi 2.9Gi 8.0Mi 428Mi 3.3Gi
Swap: 2.0Gi 0B 2.0Gi
# リスニングポート(sudo必須)
$ sudo ss -tlnp
# 実行結果
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=1234,fd=4))
バイナリ配置型ミドルウェアの情報収集
rpm/dnf(パッケージ管理ツール)で管理されないソフトウェア(Payara、Tomcat、Elasticsearch等)は、パッケージ管理コマンドでは検出できません。これらのミドルウェアは /opt や /usr/local に直接配置されていることが多く、情報収集時に見落としやすい項目です。
確認手法①:プロセスから特定する
実行中のプロセスから、バイナリ配置型ミドルウェアを検出します。
# Javaベースのミドルウェアを検索
$ ps aux | grep -E '(java|payara|tomcat|elasticsearch|glassfish)' | grep -v grep
# 実行結果
payara 2345 0.5 12.3 3456789 456789 ? Sl 10:00 1:23 /opt/payara6/glassfish/bin/../modules/glassfish.jar
tomcat 3456 0.3 8.7 2345678 345678 ? Sl 10:00 0:45 /opt/tomcat/bin/bootstrap.jar
# 全プロセスを確認する場合
$ ps aux --sort=-%mem | head -20
確認手法②:バージョン確認コマンド
検出したミドルウェアのバージョンを確認します。
# Payara
$ /opt/payara6/bin/asadmin version
# 実行結果
Version = Payara Server 6.2024.6 #badassfish
# Tomcat
$ /opt/tomcat/bin/catalina.sh version
# 実行結果
Server version: Apache Tomcat/10.1.18
Server number: 10.1.18.0
# Elasticsearch(APIで確認)
$ curl -s localhost:9200
# 実行結果
{
"name" : "node-1",
"cluster_name" : "my-cluster",
"version" : {
"number" : "8.12.0"
}
}
# Java
$ java -version
# 実行結果
openjdk version "21.0.2" 2024-01-16
AIにプロセス情報を渡してミドルウェアを特定する
ps aux の出力全体をAIに渡し、動作しているミドルウェアの特定を依頼できます。
あなたはLinuxサーバーの構成調査を支援するアシスタントです。
以下はサーバーで実行中のプロセス一覧(ps aux の出力)です。
このサーバーで動作しているミドルウェア・アプリケーションを一覧にしてください。
## 条件
- プロセス名、実行ユーザー、コマンドパスからミドルウェアを特定する
- rpm/dnf で管理されていないバイナリ配置型のソフトウェアも含める
- 判断に迷う場合は「要確認」と記載する
- 各ミドルウェアについて、バージョン確認コマンドがあれば併記する
## 出力形式
Markdown表形式
| ミドルウェア名 | 実行ユーザー | コマンドパス | 推定バージョン | バージョン確認コマンド |
## プロセス一覧
<ps-output>
(ここにps auxの出力を貼り付け)
</ps-output>
一括収集スクリプトへの組み込み
既知のミドルウェアリストを定義し、プロセスの存在をチェックする方式で組み込みます。
# server-info-collector.sh 内の該当部分
echo -e "\n=== バイナリ配置型ミドルウェア ===" >> "$OUTPUT_FILE"
# 既知のミドルウェアリスト
MIDDLEWARE_LIST=("java" "payara" "tomcat" "elasticsearch" "nginx" "httpd" "postgres" "mysql" "redis")
for mw in "${MIDDLEWARE_LIST[@]}"; do
if pgrep -f "$mw" > /dev/null 2>&1; then
echo "--- $mw: 検出 ---" >> "$OUTPUT_FILE"
ps aux | grep "$mw" | grep -v grep >> "$OUTPUT_FILE"
fi
done
# Javaベースのミドルウェア詳細
if command -v java &> /dev/null; then
echo "--- Java Version ---" >> "$OUTPUT_FILE"
java -version 2>> "$OUTPUT_FILE"
fi
一括収集スクリプト
上記のコマンドをまとめて実行し、1つのテキストファイルに出力するスクリプトです。
スクリプトの実行方法は以下の通りです。
# スクリプトに実行権限を付与
$ chmod +x server-info-collector.sh
# sudo で実行(ss -tlnp や firewall-cmd で必要)
$ sudo ./server-info-collector.sh
# 実行結果
収集完了: server-info-alma-web01-20260313.txt
機密情報のマスキング
機密情報の取り扱い
コマンド出力には内部IPアドレス・ホスト名・MACアドレス・UUID等の機密情報が含まれます。外部AIサービスに送信する前に、必ずマスキング処理を行うか、社内ポリシーに従ってください。マスキングの基本的な考え方は記事① 障害対応の初動をAIで加速するで解説しています。
記事①で紹介したIPアドレス・ホスト名・ユーザー名のマスキングに加え、サーバー構成情報では以下の項目もマスキングが必要です。
| マスキング対象 | 理由 | マスキング例 |
|---|---|---|
| MACアドレス | ネットワーク機器の特定に使われる | XX:XX:XX:XX:XX:XX |
| Machine ID | systemdが生成するホスト固有ID | xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
| Boot ID | 起動ごとに生成されるID | xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx |
| UUID(ディスク) | パーティション固有のID | XXXX-XXXX-XXXX-XXXX-XXXX |
以下のスクリプトで一括マスキングできます。
#!/bin/bash
# mask-server-info.sh
# サーバー構成情報のマスキングスクリプト
INPUT_FILE="$1"
OUTPUT_FILE="${INPUT_FILE%.txt}_masked.txt"
cp "$INPUT_FILE" "$OUTPUT_FILE"
# IPアドレス(ネットワーク部を残してホスト部をマスキング)
sed -i -E 's/([0-9]{1,3}\.[0-9]{1,3})\.[0-9]{1,3}\.[0-9]{1,3}/\1.xxx.xxx/g' "$OUTPUT_FILE"
# MACアドレス
sed -i -E 's/([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}/XX:XX:XX:XX:XX:XX/g' "$OUTPUT_FILE"
# ホスト名
REAL_HOSTNAME=$(hostname)
sed -i "s/$REAL_HOSTNAME/MASKED-HOST/g" "$OUTPUT_FILE"
# Machine ID
sed -i -E 's/Machine ID: [0-9a-f]{32}/Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/g' "$OUTPUT_FILE"
# Boot ID
sed -i -E 's/Boot ID: [0-9a-f-]{36}/Boot ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/g' "$OUTPUT_FILE"
# UUID
sed -i -E 's/[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}/XXXX-XXXX-XXXX-XXXX-XXXX/g' "$OUTPUT_FILE"
echo "マスキング完了: $OUTPUT_FILE"
実行方法は以下の通りです。
$ chmod +x mask-server-info.sh
$ ./mask-server-info.sh server-info-alma-web01-20260313.txt
# 実行結果
マスキング完了: server-info-alma-web01-20260313_masked.txt
マスキング後のファイルを開き、機密情報が残っていないか目視で確認してからAIに送信します。
サーバー構成表をAIで生成する
比較: 手動でサーバー構成表を作成する場合
Before(手作業の場合)
以下の作業を1台ごとに繰り返します。
- SSHでサーバーに接続
- hostname、ip addr、free -h、df -h 等を1つずつ実行
- 各コマンドの出力を目視で確認
- ExcelやMarkdownに手入力で転記
- 表の体裁を整える
- 別の担当者にレビューを依頼
所要時間の目安: 1台あたり 1〜2時間
改善ポイント: コマンド出力をそのままAIに渡し、表形式への変換・項目の分類・体裁の整形をAIに任せます。人間は「正確性の検証」に集中します。
構成表生成プロンプト
以下のプロンプトをClaude(Web UI)に送信し、コマンド出力を貼り付けます。このプロンプトは、前シリーズ記事①で解説した6構成要素(役割・タスク・制約・コンテキスト・出力形式・例)に基づいて設計しています。
あなたはインフラエンジニアのドキュメント作成を支援するアシスタントです。
以下のコマンド出力から、サーバー構成表をMarkdown表形式で作成してください。
## 制約
- コマンド出力に含まれる情報のみを使用し、推測で補完しない
- 情報が不足する場合は「要確認」と記載する
- バージョン番号は出力から正確に転記する
- IPアドレス、ホスト名等はマスキングされた値をそのまま使用する
- rpm/dnf管理外のミドルウェア(バイナリ配置型)が検出されている場合は、別セクションとして記載する
## 出力形式
以下のテンプレートに従ってMarkdown表を作成してください。
### 基本情報
| 項目 | 内容 |
|------|------|
| ホスト名 | |
| OS | |
| カーネル | |
| アーキテクチャ | |
| 仮想化 | |
### ハードウェアリソース
| 項目 | 内容 |
|------|------|
| CPU | |
| コア数 | |
| メモリ合計 | |
| スワップ | |
### ディスク構成
| マウントポイント | デバイス | ファイルシステム | サイズ | 使用率 |
|----------------|---------|----------------|--------|--------|
### ネットワーク構成
| インターフェース | IPアドレス | サブネット | 備考 |
|----------------|----------|----------|------|
### リスニングポート
| ポート | プロトコル | プロセス | 用途 |
|--------|----------|---------|------|
### 稼働サービス
| サービス名 | 状態 | 自動起動 | 備考 |
|-----------|------|---------|------|
### セキュリティ設定
| 項目 | 設定値 | 備考 |
|------|--------|------|
| SELinux | | |
| firewalld | | |
### バイナリ配置型ミドルウェア
| ミドルウェア名 | バージョン | インストールパス | 実行ユーザー |
|-------------|----------|---------------|------------|
## コマンド出力
<server-info>
(ここに server-info-XXXX_masked.txt の内容を貼り付け)
</server-info>
実演:コマンド出力からの構成表生成
以下は、一括収集スクリプトの出力(マスキング済み)をAIに渡した場合の生成結果の例です。
入力(コマンド出力の一部):
=== ホスト情報 ===
Static hostname: MASKED-HOST
Icon name: computer-vm
Chassis: vm
Machine ID: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Boot ID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Virtualization: microsoft
Operating System: AlmaLinux 10 (Purple Lion)
CPE OS Name: cpe:/o:almalinux:almalinux:10
Kernel: Linux 6.12.8-1.el10.x86_64
Architecture: x86-64
=== メモリ情報 ===
total used free shared buff/cache available
Mem: 3.8Gi 512Mi 2.9Gi 8.0Mi 428Mi 3.3Gi
Swap: 2.0Gi 0B 2.0Gi
=== リスニングポート ===
State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=1234,fd=3))
LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=5678,fd=6))
AI生成結果:
### 基本情報
| 項目 | 内容 |
|------|------|
| ホスト名 | MASKED-HOST |
| OS | AlmaLinux 10 (Purple Lion) |
| カーネル | Linux 6.12.8-1.el10.x86_64 |
| アーキテクチャ | x86-64 |
| 仮想化 | microsoft (Hyper-V) |
### ハードウェアリソース
| 項目 | 内容 |
|------|------|
| CPU | 要確認(lscpuの出力なし) |
| コア数 | 要確認 |
| メモリ合計 | 3.8 GiB |
| スワップ | 2.0 GiB |
### リスニングポート
| ポート | プロトコル | プロセス | 用途 |
|--------|----------|---------|------|
| 22 | TCP | sshd | SSH |
| 80 | TCP | nginx | HTTP |
コマンド出力に含まれない情報(この例ではCPU情報)に対して「要確認」と記載されている点が、プロンプトの制約が正しく機能していることを示しています。
生成結果の検証
バージョン番号・IPアドレスの正確性を必ず確認
AI生成の構成表は、バージョン番号やIPアドレスの転記ミスが発生することがあります。生成後は必ずコマンド出力と突き合わせて正確性を確認してください。
以下の6項目を必ず検証してください。
| 検証項目 | リスク | 検証方法 |
|---|---|---|
| IPアドレス | 転記ミス・別サーバーの情報と混同 | コマンド出力と目視照合 |
| バージョン番号 | 古い情報で補完される可能性 | rpm -q <パッケージ名> で確認 |
| パス(ファイルパス) | 存在しないパスを生成する場合がある | ls -la <パス> で確認 |
| ポート番号 | 標準ポートを推測で記載する場合がある | ss -tlnp の出力と照合 |
| サービス名 | CentOS時代の名称で記載する場合がある | systemctl status <サービス名> で確認 |
| 設定値 | デフォルト値を推測で記載する場合がある | 設定ファイルの実物と照合 |
作業手順書をAIで生成する
比較: 手動で作業手順書を作成する場合
Before(手作業の場合)
- 作業中にメモを取りながら作業する(取り忘れが発生しがち)
- 作業後に記憶とメモを頼りに手順書を書く
- 各コマンドの説明・理由を自分の言葉で補足する
- 手順の前後関係を整理し直す
- レビューで「なぜこのコマンドを実行したのか」を追記するよう指摘される
所要時間の目安: 30分〜1時間の作業に対して、手順書作成に1〜2時間
改善ポイント: historyコマンドで実行履歴を正確に取得し、AIに「各コマンドの実行理由・期待結果」を補完させることで、抜け漏れのない手順書を効率的に生成します。
historyコマンドの活用
作業履歴をタイムスタンプ付きで取得するには、事前に以下の設定が必要です。.bashrc に追加しておくことを推奨します。
export HISTTIMEFORMAT='%Y-%m-%d %H:%M:%S '
export HISTSIZE=10000
export HISTFILESIZE=10000
設定を反映したあと、作業完了後に履歴をファイルに保存します。
# 履歴をファイルに出力
$ history > work-history.txt
出力には ls、cd、pwd など手順書に不要なコマンドも含まれるため、フィルタリングします。
# 不要なコマンドを除外
$ grep -v -E '^\s*[0-9]+\s+([0-9-]+\s+[0-9:]+\s+)?(ls|cd|pwd|clear|history|exit)' work-history.txt > filtered-history.txt
手順書生成プロンプト
以下のプロンプトでhistory出力から手順書を生成します。
あなたはインフラエンジニアの作業手順書を作成するアシスタントです。
以下はLinuxサーバーで実行したコマンド履歴です。
この履歴から、他のエンジニアが同じ作業を再現できる手順書を作成してください。
## 条件
- 各手順に「目的」「コマンド」「期待結果」を含める
- コマンドの意味(なぜそのコマンドを実行するのか)を補足する
- 試行錯誤で繰り返したコマンドは整理し、正しい手順のみを残す
- エラーが出たコマンドがあれば、その原因と対処も記載する
- 不明な場合は「確認必要」と注記する
- 推測で情報を補完しない
## 出力形式
Markdown形式の手順書。以下の構成に従うこと。
### 作業概要
- 作業名:
- 作業日時:
- 対象サーバー:
### 前提条件
- 必要な権限:
- 事前準備:
### 手順
#### 手順1: (目的)
**コマンド:**
```
(コマンド)
```
**期待結果:**
(期待される出力)
**補足:**
(なぜこのコマンドを実行するかの説明)
## コマンド履歴
<history>
(ここにfiltered-history.txtの内容を貼り付け)
</history>
実演:history出力からの手順書生成
入力(history出力の例):
101 2026-03-13 10:00:01 sudo dnf update -y
102 2026-03-13 10:05:23 sudo dnf install -y nginx
103 2026-03-13 10:05:45 sudo systemctl enable --now nginx
104 2026-03-13 10:05:50 sudo systemctl status nginx
105 2026-03-13 10:06:10 sudo firewall-cmd --permanent --add-service=http
106 2026-03-13 10:06:15 sudo firewall-cmd --reload
107 2026-03-13 10:06:30 curl -I http://localhost
AI生成結果の例:
### 作業概要
- 作業名: nginxのインストールと初期設定
- 作業日時: 2026-03-13 10:00〜10:07
- 対象サーバー: 確認必要(履歴にホスト名の記載なし)
### 前提条件
- 必要な権限: root または sudo
- 事前準備: インターネット接続(dnfリポジトリへのアクセス)
### 手順
#### 手順1: システムパッケージの更新
**コマンド:**
```
sudo dnf update -y
```
**期待結果:** インストール済みパッケージが最新版に更新される
**補足:** 新規ソフトウェアのインストール前に、既存パッケージの依存関係を最新状態にしておくことで、バージョン不整合を防止する
#### 手順2: nginxのインストール
**コマンド:**
```
sudo dnf install -y nginx
```
**期待結果:** nginxパッケージがインストールされる
**補足:** `-y` オプションで確認プロンプトを自動承認する
#### 手順3: nginxの起動と自動起動の有効化
**コマンド:**
```
sudo systemctl enable --now nginx
```
**期待結果:** nginxが起動し、OS起動時の自動起動が有効になる
**補足:** `--now` オプションで `enable` と `start` を同時に実行する
#### 手順4: nginxの動作確認
**コマンド:**
```
sudo systemctl status nginx
```
**期待結果:** Active: active (running) と表示される
#### 手順5: ファイアウォールでHTTPを許可
**コマンド:**
```
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --reload
```
**期待結果:** 1行目で success、2行目で success と表示される
**補足:** `--permanent` で永続設定に追加し、`--reload` で設定を反映する
#### 手順6: HTTP接続の疎通確認
**コマンド:**
```
curl -I http://localhost
```
**期待結果:** HTTP/1.1 200 OK が返される
AI生成の手順書をそのまま使わない
historyコマンドの履歴からAIが生成した手順書には、不要なコマンドの混入・手順の前後関係の誤り・前提条件の欠落が起こり得ます。本番環境に適用する前に、必ずテスト環境で手順を再実行して検証してください。
引き継ぎドキュメントに統合する
構成表と手順書は、それぞれ独立した目的を持つドキュメントです。引き継ぎドキュメントは、これらを統合し、運用に必要な情報を加えた包括的な資料です。
3種類のドキュメントの関係
| ドキュメント種別 | 入力ソース | AI変換の内容 | 主な用途 |
|---|---|---|---|
| サーバー構成表 | hostname / ip addr / free -h 等のコマンド出力 | コマンド出力を表形式に整形・項目ごとに分類 | 資産管理・構成管理台帳 |
| 作業手順書 | historyコマンドの実行履歴 | コマンド履歴に理由・期待結果を補完し手順書化 | 作業記録・再現手順の文書化 |
| 引き継ぎドキュメント | 構成表 + 手順書 + 運用ルール | 3つの情報を統合し、引き継ぎ用フォーマットに整理 | 担当者変更時の引き継ぎ資料 |
構成表と手順書を「部品」として先に作成し、引き継ぎドキュメントに組み込む設計にすると効率的です。
引き継ぎドキュメントのフォーマット
# サーバー引き継ぎドキュメント
## 1. サーバー基本情報
(構成表から転記)
## 2. 構築・変更履歴
| 日付 | 作業内容 | 担当者 | 備考 |
|------|---------|--------|------|
## 3. 定常運用手順
### 3-1. 日次作業
### 3-2. 週次作業
### 3-3. 月次作業
## 4. 監視項目
| 監視対象 | 閾値 | アラート先 | 対処手順 |
|---------|------|----------|---------|
## 5. バックアップ
| 対象 | 方式 | スケジュール | 保持期間 |
|------|------|------------|---------|
## 6. 障害時の連絡先・エスカレーション
| 分類 | 連絡先 | 備考 |
|------|--------|------|
## 7. 既知の問題・注意事項
AIで自動化できる範囲と人間が書くべき範囲
すべての項目をAIで埋めることはできません。AIが担える範囲と、人間の知識が必要な範囲を明確にしておきます。
| セクション | AIで自動化できるか | 理由 |
|---|---|---|
| 1. サーバー基本情報 | ○(AI可) | コマンド出力から構成表を生成済み |
| 2. 構築・変更履歴 | ○(AI可) | historyから手順書を生成済み |
| 3. 定常運用手順 | ×(人間が記載) | 運用ルールは組織固有の知識が必要 |
| 4. 監視項目 | ×(人間が記載) | 閾値やアラート先は運用設計に依存 |
| 5. バックアップ | ×(人間が記載) | バックアップ方針は組織のポリシーに依存 |
| 6. 障害時の連絡先 | ×(人間が記載) | 連絡先は人間しか知らない |
| 7. 既知の問題 | ×(人間が記載) | 過去の障害経験に基づく暗黙知 |
統合用プロンプト
構成表と手順書が生成済みの状態で、以下のプロンプトを使います。
あなたはインフラエンジニアの引き継ぎドキュメント作成を支援するアシスタントです。
以下の「サーバー構成表」と「作業手順書」を統合し、引き継ぎドキュメントのフォーマットに整理してください。
## 条件
- セクション1(サーバー基本情報)は構成表の内容をそのまま使用する
- セクション2(構築・変更履歴)は手順書の内容を日付・作業内容の表形式に変換する
- セクション3〜7は「【人間が記載】」とプレースホルダーを入れる
- 情報を推測で補完しない
## 出力形式
Markdown形式。上記のフォーマットに従うこと。
## サーバー構成表
<config>
(ここに構成表を貼り付け)
</config>
## 作業手順書
<procedure>
(ここに手順書を貼り付け)
</procedure>
生成ドキュメントの最終責任
AIが生成したドキュメントの内容に誤りがあった場合、その責任はドキュメントの作成者にあります。AIはツールであり、成果物の正確性を保証しません。必ず人間がレビューしてから共有・提出してください。
注意点とベストプラクティス
正確性検証チェックリスト
AI生成ドキュメントを確定する前に、以下の6項目を確認します。
| # | 検証項目 | 確認方法 | 見つかりやすい誤り |
|---|---|---|---|
| 1 | IPアドレス | コマンド出力と目視照合 | 転記ミス、別サーバーの情報と混同 |
| 2 | バージョン番号 | rpm -q <パッケージ名> で確認 | 古い情報で補完、マイナーバージョンの誤り |
| 3 | ファイルパス | ls -la <パス> で確認 | 存在しないパスの生成 |
| 4 | ポート番号 | ss -tlnp の出力と照合 | 標準ポートを推測で記載 |
| 5 | サービス名 | systemctl status <サービス名> で確認 | CentOS時代の名称で記載 |
| 6 | 設定値 | 設定ファイルの実物と照合 | デフォルト値を推測で記載 |
定期更新の設計
構成表は作成時点のスナップショットです。パッケージの更新やサービスの追加により、構成は変化します。定期的に情報を再収集し、構成表を更新する仕組みを構築することで、ドキュメントと実態の乖離を防止できます。
# cron設定例: 毎月1日の深夜3時に情報を収集
$ sudo crontab -e
# 以下のエントリを追加
0 3 1 * * /home/admin/server-info-collector.sh
社内規定との整合性確認ポイント
AI生成ドキュメントを正式な構成管理資料として扱う場合、以下の点を確認してください。
| 確認項目 | 確認先 | 備考 |
|---|---|---|
| ドキュメントの承認フロー | 社内ルール・規程 | AI生成であることの明示が必要か |
| 保管場所とバージョン管理 | 情報セキュリティ部門 | Git管理か社内Wikiか |
| 更新頻度と更新責任者 | チーム運用ルール | 定期更新のサイクルを定める |
| AI利用に関するガイドライン | 情報セキュリティ部門 | 外部AIサービスへの送信可否 |
まとめ
この記事で扱った3種類のドキュメントと、それぞれの適用場面を整理します。
| ドキュメント | 入力 | 適用場面 |
|---|---|---|
| サーバー構成表 | コマンド出力(hostnamectl, ip addr, free -h 等) | 新規構築時の台帳作成、構成監査 |
| 作業手順書 | historyコマンドの実行履歴 | 作業後の記録、再現手順の文書化 |
| 引き継ぎドキュメント | 構成表 + 手順書 + 運用ルール | 担当者変更時の引き継ぎ |
AI活用の2つの原則を確認します。
- AIは「整形・構造化」が得意で、「判断・責任」は人間が担います。 コマンド出力を表形式に変換する作業はAIに任せ、内容の正確性や運用判断は人間が検証します。
- 入力の品質が出力の品質を決めます。 AIに渡すコマンド出力が正確で網羅的であるほど、生成される構成表の品質も上がります。情報収集スクリプトを整備し、必要な情報を漏れなく取得することが重要です。
前の記事・次の記事
前の記事: ① 障害対応の初動をAIで加速する
次の記事: ③ 監視アラートをAIでトリアージする
