Ansibleでネットワークを構成管理・自動化、なんて話を多く聞く昨今!NWエンジニアの皆さん如何お過ごしでしょうか。NWエンジニアはプログラムに触れる機会が少なめで、”コードを書いて自動化”みたいなアクションが苦手な方が多いのではないでしょうか?
そんな中、AIツールも流行ってて『ChatGPTでプログラムを書ける』と聞きます。「じゃあ、ChatGPTにAnsibleやらせれば、とっつきやすく簡単にできるんじゃないの?」と思い、実際にやってみました。
今回はそんなAnsible+ChatGPTの実験レポートをお届けします。【NW設定自動化】をAnsible+ChatGPTで知識ゼロからできるのか?ー前編はshowコマンド編です。
目次
いちおうツール説明
ChatGPTとは?

言わずと知れたOpenAI社の作った生成AI。基本は言語モデルであり、言語を受け付け、言語で返事をします。この入力言語の事を「プロンプト」と呼びます。プロンプトを細かく記載することで詳細な指示が可能。
せっかくなのでChatGPTに自己紹介を依頼してみましょうか、プロンプトはこんな感じで。

すると、以下のような感じで返事が返ってきました。


おっ!いいこと言いますね
今回はこれを使って、Ansibleというツールのコードを自動的に作ってもらいます。
Ansibleって何?

構成管理ツールの一つ。オープンソースであるため自由に利用可能。SSH経由などで操作対象機器に接続し、あらかじめ決められた処理を行う事が出来ます。
“知識ゼロから”とは言うものの、最低限のAnsibleの構成くらいは知っておいた方が分かりやすいかな?ということで、構成要素とファイル構成について書いておきます。
Ansibleの構成要素
Ansibleの構成要素はざっくり書き出すと以下の通り。
・Ansibleコマンド … コマンドラインで実行するコマンド。プレイブックを指定する
・プレイブック … Ansibleの骨組み、ここに処理を記載する
・HOSTS … 対象ホストを定義する箇所、IPアドレスなどを指定する
・VARS … 変数を定義する箇所、ログインIDやパスワードが変数に該当する
・TASKS … 処理内容。”モジュール”と呼ばれる定義済みのプログラムを利用する
用途ごと様々なモジュールが存在し、柔軟かつ正確な処理が可能
図にしてみました。こんな感じかな?

この構造を理解したり、漏れのないようコードを書いたりするのが大変!また星の数ほどあるAnsibleモジュールから適切なものを探して組み込むのも時間がかかります。
今回はこの辺をChatGPTにやらせることで簡単に知識ゼロからできるのか?という実験をやります。レッツトライ!
AnsibleをChatGPTで自動化してみる
始める前に、今回の環境の前提条件を書いておきます。こんな感じでやらせて下さい。
■前提条件
・ChatGPTはGPT-4を利用
・オペレーションはLinuxサーバで行う
・Ansibleはオペレーションサーバにインストール済み
・操作対象にはSSHで接続して実行する
・操作対象はAristaのEOSで動作
・操作内容はシンプルなshowコマンド
※本記事掲載のホスト名など固有情報はマスクします。掲載されている値はChatGPTが出力したサンプル値です。
以上、すごく簡単なshowコマンドでやってみます。これができなければ始まらない。
Ansible+ChatGPTでshowコマンドをとってみる
さっそくChatGPTにAnsibleのコードを出力させてみましょう。以下のような簡単なプロンプトを入力、
■プロンプト
Arista機器をAnsibleを用いて操作する方法を教えて下さい。
初心者にもわかるシンプルなAnsibleのプレイブックで、
インターフェイス「Eth49/1」の設定をshowコマンドで確認したいです
どのようなやり方があるか教えて下さい



おっ、親切に前提条件から教えてくるようです。しんせつ。
続いて、インベントリファイルを生成してくれました。

そしてプレイブック。

実行コマンド、

以上、
ふむふむ。arista.eos.eos_commandモジュールでshowコマンドを送り、結果を debugモジュールで表示させてくれるようです。
ファイル構成のイメージとしては、こんな感じ。

知識ゼロなので、コピペでファイルを作成していきましょう。
オペレーションサーバでカタカタ。プレイブックとインベントリを作成。


ファイルができたら、指定されたとおりのAnsibleコマンドを実行してみます。ぽち!


あっ!?失敗?
赤文字でfatalメッセージを吐いて、failed=1 となっています
知識ゼロということで、デバッグもChatGPTにやらせますよ。エラーメッセージをそのままChatGPTのプロンプトに打ちこみます。

すると、何かわかったらしく改善案を提案してきました。


上記のような対処方法が提案されました。なるほど、そもそも今回はSSHで接続する想定でしたが、eAPI(HTTP)で接続の設定になっていたようです。ChatGPTに修正を依頼します。



ふむふむ。ansible_connection: の箇所が”httpapi”から”network_cli”に変わりました。指示されたとおりインベントリを修正して、再度実行してみます。

今度は緑で OK=2 と表示、うまくいったようです。“show interface”コマンドの結果が出力されました。
OK。ひとまず、ChatGPTの指示どおりのコードでAnsibleを動かすことに成功しました。えらい。
ChatGPTにAnsibleの機能を追加させてみる
続いて、コードの改修をさせてみましょう。ログを吐き出す機能をつけてもらおうかな?プロンプトで依頼していきます。

さぁどうだ?
以下のようなプレイブックが出力されました。


ふむふむ。”file”、”copy”の二つのモジュールが追加されています。
新たにプレイブックを作成し、実行。


エラー無く実行できましたし、指定したとおりのファイル名でログファイルが出力されています。グッド。
もう一つ頼んでみましょう。自動化っていうと複数の機器に実行するものですよね。二台に対応するよう依頼してみましょうか。





おぉ!やり方を教えてくれたうえに、ファイル名にIPを入れる方法まで教えてくれました。しんせつ。
しかし、適用して実行してみると失敗。1台にしか適用されません。

すかさずChatGPTにツッコミを入れていきましょう。うまくいかないよ!



「ナイス気付きです!」ではなく、最初からChatGPT君が教えてくれたらよかったのですが、まぁいいでしょう。プレイブックを修正します。

実行。
うーーーん。二台にはできましたが、不完全。

arista1 が ok=3 なのに対して、arista2 が ok=1 になっています。結果を見てみると、ログファイルが生成されていませんでした。
再度ChatGPT聞こうとしたら、何か言ってます。

ふむふむ。作業中のプレイブックを貼ればもっと正確な結果が出せると。
依頼事項と一緒に、前回ChatGPTから出力されたプレイブックを貼り付けてみます。ぺたり。



原因がわかったらしく、新しいプレイブックが届きました。こちらを実行すると…
いけました!

だいぶやりとりに時間がかかりましたが、”二台に対して特定のログを採取するAnsible”が完成。
この可変値の「ホスト名」「コマンド」を本番の値に書き換えるだけ(ここは手作業)で、ログとりツールとして使えるのではっ!
応用して、
・Ansibleをcronで動かして定時ログとり
・障害試験とかで全機器のログをとる
とかは知識ゼロでも簡単に自動化できるのではないでしょうか?
【検証結果】
Ansible+ChatGPTで知識ゼロからshowコマンドの自動化はできました。が、一発で出来ない場合があり、ChatGPTとやりとりが必要。丁寧にプロンプトを書いたり、Ansibleの基礎知識がわかっていると早いかも。
というところでしょうか、
慣れてきたら、テラタームマクロを書くよりかんたんかも?
おまけ:ChatGPTにAnsibleのshowプレイブックを書いてもらうサンプルプロンプト
おまけで、一撃で出力できそうなサンプルプロンプトを書いておきます。
【サンプル プロンプト】
以下の要件を満たすAnsibleのプレイブックとインベントリファイルを作成して下さい。
■前提条件
・Arista機器を対象にする
・SSHで接続して実行する
・シンプルな構造にする
・オペレーションはLinuxサーバで行う
・オペレーションサーバにAnsibleはインストールされているものとする
■実行内容
・複数台の機器に複数のコマンドを実行
・結果をログファイルに保存
・ログファイルはディレクトリ YYYYMMDD を作成しその配下に保存する
・ファイル名は YYYYMMDD_HHMMSS_IPアドレス.txt とする
※YYYYは西暦4桁、MMは月を2桁、DDは日を2桁、HHは時間を2桁、MMは分を2桁、SSは秒を2桁
■機器
192.168.1.1
192.168.1.2
■コマンド
show int status
show int version
※回答にゆれがあるので、思った通りにいかないときはプロンプトをよしなに変えたり、追加で依頼したりしてみてください。
以上、
長くなったのは今回はここまで!
後編ではChatGPT+Ansibleで設定変更自動化にチャレンジしてみたいと思います。
まとめ
Ansible+ChatGPTで知識ゼロでもshowコマンドを実行させるプレイブックとインベントリの出力に成功。機能追加や困ったときのデバッグにも対応できました。
欠点としては、ChatGPTとのやりとりに時間がかかること。
ひとむかし前は非対応だったはずなのですが、進歩しましたねChatGPT。えらい。
Ansibleに抵抗感があるNWエンジニアのみなさん、ひとまずChatGPTに依頼してみて、だまされたと思って言われた通りやってみたらラクできるかもしれませんよ。お試しあれ。
ご拝読ありがとうございました。

ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(471)
-
イベント(169)
-
カルチャー(40)
-
デザイン(23)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudflare
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- ConoHa、Dify
- CS
- CSS
- CTF
- DC
- Designship
- Desiner
- DeveloperExpert
- DevRel
- DevSecOpsThon
- Dify
- DNS
- Docker
- DTF
- GitLab
- GMO AIR
- GMO Developers Day
- GMO Developers Night
- GMO Developers ブログ
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOクラウド]
- GMOグローバルサイン
- GMOサイバーセキュリティ大会議
- GMOサイバーセキュリティ大会議&表彰式
- GMOソリューションパートナー
- GMOデジキッズ
- GMOブランドセキュリティ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kaigi on Rails
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- perplexity
- PHP
- PHPcon
- PHPerKaigi
- PHPカンファレンス
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- Spectrum Tokyo Meetup
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- アドベントカレンダー
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- サイバーセキュリティ
- スクラム
- スペシャリスト
- セキュリティ
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットのセキュリティもGMO
- ネットワーク
- ヒューマノイドロボット
- プログラミング教育
- ブロックチェーン
- マルチプレイ
- ミドルウェア
- モバイル
- ゆめみらいワーク
- リモートワーク
- レンタルサーバー
- 京大ミートアップ
- 人材派遣
- 協賛レポート
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 技術広報
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP
-
【NW設定自動化】をAnsible+ChatGPTで知識ゼロからできるのか?試してみた【前編】
技術情報
-
【技書博初出展!】GMOインターネットグループとして3冊目の技術同人誌を出版しました!
イベント
-
技術広報として、現場の熱を感じ続けたい-RubyKaigi 2025 参加レポート
技術情報
-
Creators MIX 2025 登壇レポート「クリエイティブとAIの最前線 2025」
技術情報
-
【グループ9社が参加!】GMOインターネットグループ Advent Calendar 2024 振り返りレポート
イベント
-
“創るだけ”を超えていけ。GMOインターネット 丸山清人が語る、事業を動かすデザイナーとは
デザイン