
2025.03.07
メール対応担当の8割以上が「カスハラ被害」に クレームのハード化・長期化を防ぐ4つの対策
コンテナ化されたAnsible実行環境の周辺ツールまとめ(全1記事)
リンクをコピー
記事をブックマーク
よこち氏:では私のほうから、「コンテナ化されたAnsible実行環境の周辺ツールまとめ」の話をします。「Ansible」を知っている方も多いかなとは思いますが、Pythonで作られているIT自動化ツール。サーバーとかクラウドとか、ネットワーク機器の設定とかを自動化できるようなツールです。
ここ数年、特に2021年ぐらいから「Ansibleの実行環境と呼ばれるものはコンテナ化して扱おう」というような流れが来ていて、それに伴っていろいろなツールも出てきているので、そのあたりをサラッとにはなりますが、いくつか紹介をしたいと思います。
あらためて、私、よこちと申します。エーピーコミュニケーションズに所属していて、ふだんはネットワークの自動化の支援を業務でやっています。
主観を含みますが、そもそも「じゃあ、なんでコンテナ化が進んできたんでしたっけ?」という背景を説明します。
冒頭でお話ししたとおりAnsibleはPythonで作られているので、venvを作って、その中でpip install ansibleとか入れていって、必要なパッケージとかも入れていって、venvごとに区切っていたのが今までのやり方でした。これは今も普通にぜんぜんできます。
これだとポータビリティがあまり高くないというか、「あっちで動いたのがこっちで動かない」ということがたまにある感じでした。
「じゃあ、これをもう、いっそのことコンテナ化しちゃいましょうよ」みたいなことが、2021年ぐらいからけっこう加速していきました。(スライドを示して)右の図で書いたようなところですね。丸ごとコンテナで隔離するみたいな使い方が進んできました。
「Ansibleの世界で」という話にはなるんですが、けっこう重要なのが、こういったAnsibleの実行に必要な諸々ですね。本当に諸々を入れたイメージのことを、Ansibleの世界ではExecution Environment、長いのでよくEEとか、日本語で「実行環境」と呼んだりします。
「じゃあ、このあたりをひっくるめたツールって、どんなのが出てきた?」というところを、1枚の図で示しています。全体像ですね。先ほど言ったAnsibleの実行に必要なイメージ、Execution Environment、EEですね。
「じゃあEEを誰が作るのか?」という話でいうと、「ansible-builder」というツールがあります。これがビルドしてくれるツールです。
「じゃあ、誰が使うんですか?」というと、この「ansible-navigator」とか、「Automation Controller」というツールがEEを使う側で、EEを経由して、サーバーとかネットワーク機器にいろいろなPlaybookを流し込んで設定をするというイメージになっています。
今3つツールが出てきたので、それぞれ見ていきます。まずEEを作る側ですね。ansible-builder。これは実行環境のコンテナイメージをビルドするツールです。ビルドするツール。一言で言うとそれだけですね。
「どんな仕組みでやっていくんですか?」というと、execution-environment.ymlというビルドの定義ファイルを用意しておいて、それでビルドをポチッ、コマンドをポンッてやると、それに合った内容がビルドされる、イメージがポコッとできるようなイメージです。
「Podman」でいうとContainerfile、「Docker」でいうとDockerfileみたいなものが、このexecution-environment.ymlです。長いですね。
「じゃあ、中身どんな感じですか?」ということで、簡単なサンプルを持ってきました。(スライドを示して)これがexecution-environment.ymlの中です。いっぱいオプションがありますが、抜粋して説明します。
わりと重要なのはベースイメージですね。「どんなイメージをベースに使いますか?」という話と、「じゃあ、Ansibleのバージョンはどれ入れましょうか?」とか。あと、内部的に使われるんですが、「『ansible-runner』を入れるんですか?」と。いや、入れないといけないんですが、指定をしたりとか。
あとAnsibleならではというところだと、「どういうコレクション……」。(コレクションは)モジュール群みたいなものですね。「コレクションを入れるんですか?」と指定をしたり。あと、コレクションによっては「このPythonパッケージが必要ですよ」みたいに依存している場合があるので、明示的に指定が必要な場合は、こういうのを入れておく。
あと、最後にシステムパッケージ。今回の場合だと「dnf install なになに」で、「なになにをインストールしたい場合は、ここで指定をしておく」というかたちですね。DockerfileとかContainerfileのYAML版で、それのAnsibleフレンドリーなやつになっています。
これを用意した上で、「ansible-builder build」コマンドでタグ付けてビルドをやると、ちょっと時間がかかって、イメージがポコッとできる。出来上がったイメージは、外見としては本当にただのイメージなので、イメージ一覧を表示すると、「あっ、なんかできたな」となります。Ansibleの世界では、これをExecution Environmentと呼ぶようなかたちになっています。これがビルドするansible-builderの話でした。
今度は使う側ですね。まずはansible-navigator。これはEE経由でPlaybookを実行してくれるツールです。
これもやはり設定ファイルみたいなものがあって、その中で「じゃあどのEEを使いますか?」と。デフォルトで設定もされてはいますが、お好みのEEを設定して、それ経由でPlaybookを実行すると、指定されたEEとその中のAnsibleを使ってPlaybookを実行するようなものになっています。
内部的には、もうちょっと細かくいろいろなツールが使われていますが、意識するのは、「ガワ」というか、人とのインターフェイスであるansible-navigatorになってくるかなと思います。
設定ファイルと呼んでいたものは、なくてもデフォルトである程度動きはします。(スライドを示して)よく使うのはたぶんこのあたりかなと思います。利用するイメージですね。ここだと、先ほどビルドしたやつというようなシナリオで書いています。
「さっき作ったこのEEを使ってくれよな」という指定をしつつ、ログ設定的なものとか、時刻の設定とかをして。このあたりはオプションですが、こういうものを使った上で、「じゃあ、ansible-navigator、実行」とやるとこんなものになります。
Ansibleを古くから使っている方にとっては逆になじみがないかなとは思いますが、ansible-navigatorって、デフォルトだとTUI(ターミナルユーザーインターフェイス)になっていて。ちょっとグラフィカルみたいな感じになっていて。
実行した結果をサマリーからどんどんディテールにドリルダウン表示していくと、「このタスクのログ、どうなっているのか」みたいな結果を追っていくようなことができるようになっています。「いやいや、やはりCLIで普通に使いたいよ」という場合も普通にできます。
モード変更するオプションがあって、「-m stdout」とやると、わりとおなじみのPlaybook実行ログが出てくるようなものになっています。
もう1個、EEを使う側として紹介したかったのが、Automation Controllerというものです。これはGUIのプロダクトです。AnsibleをGUI経由で実行できるような、Red Hat社の有償のプロダクトになっています。
ログ管理とかRBACとかAPIみたいな機能があります。昔のバージョンだと「Ansible Tower」と呼んでいたものですね。EE対応版になったタイミングで、Automation Controller 4.xというバージョンになりました。
このツールもGUI上で「じゃあ、どのEE使うんですか?」という名前を設定して。「じゃあ、そのEEを実際使いますよ」というジョブ単位があるんですが、「このPlaybookはこのEEで実行してください」という定義も一緒にセットで定義してあげて、(そうすることで)実際実行というかたちになります。
今、3つほど紹介しました。(スライドを示して)まず、こちらの図でサマリーができるかなと思います。EEを作る側としてはansible-builder、EEを使う側としてはansible-navigatorとAutomation Controllerという3つのツールを紹介しました。
このあたりは2021年ぐらいからいろいろなツール、がポコポコ新しいものが出てきたかたちになっているので、「なんか最近似たような名前のAnsibleのツールを見かけるけど、どういう役割なんだろう?」みたいなところがわからなかったら、このタイミングで整理してもらえたら幸いです。
以上です。ご清聴ありがとうございました。
関連タグ:
2025.03.07
部下へのフィードバックで最初に伝える一言 何度も指摘せずに済むマネジメントの秘訣
2025.03.05
「一人前のエンジニア」になるために必要なこと 未経験からフルスタックエンジニアへの道筋
2025.03.12
SNSで炎上している研究者は「研究者として正しい」 人文学のプロ・阿部幸大氏が説く“強い意見を出せない時代”に対する考え方
2025.03.04
チームが協力しないのはマネジメントの問題 “協働意識”を高めるマネージャーの特徴とは?
2025.01.07
1月から始めたい「日記」を書く習慣 ビジネスパーソンにおすすめな3つの理由
2021.09.30
「なぜセーラー服で出社してはいけないの?」 さくらインターネット・江草陽太氏の自由な発想の源
2025.03.12
新規事業を継続するかどうかを見極める2パターンの判断軸 会社の規模別「撤退基準」の設け方
2025.03.11
自分よりできる人を採用し、ゴリ押しで権限委譲 東大発スタートアップに学ぶ、組織を伸ばすマネジメント
2025.03.03
大企業で成功したマネージャーが中小企業で苦戦する理由 “指示待ち”部下を主体的に動かす方法
2015.11.24
人は食事をしないとどうなるか 餓死に至る3つのステップ