CTC 教育サービス
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes
前回に続いて、Jupyterを活用したシステム運用・管理のアイデアを紹介します。Ansibleなどの自動化ツールが登場する中で、プログラムコードから環境を操作する「Programmable Infrastructure」、あるいは、「Infrastructure as a Code」という考え方が広く知られるようになりました。
しかしながら、その一方で、従来の手順書に基づいた運用とのギャップが大きく、どのように導入を進めてよいかわからないという声を聞くこともあります。あるいは逆に、Ansibleの活用を大規模に進める中で、新たな課題に直面することもあるようです。そのような中で、Jupyterを活用することで、これらの課題を解決していこうという取り組みをしているグループがあります(*1)。この取り組みは、Ansibleの活用そのものが主眼ではありませんが、ここでは、Ansibleの新たな活用方式として紹介してみたいと思います。
Ansibleを使用する際は、一般に専用の管理サーバーを用意して、管理対象機器のインベントリーを保存しておきます。このサーバー上でAnsibleを用いて、管理対象の機器を操作していきます。操作手順を記載した「Playbook」を用いることで、複数の手順からなる作業をまとめて自動化することができます。
しかしながら、Ansibleの役割は、基本的にはPlaybookを適用して操作を実行するだけで、Playbookの内容そのものを管理する機能はありません。そのため、同一の定形作業を繰り返すには便利ですが、環境ごとに必要なカスタマイズを加えることが困難になる場合もあります。現実には、1つのPlaybookをさまざまな環境で利用しながら、その内容を改善していく、あるいは、より汎用性を高めていくという取り組みが必要となります。
そこで、1つのPlaybookにすべての作業を詰め込んでブラックボックス化するのではなく、Playbookの内容を作業者にも理解しやすい形で分割しつつ、Jupyterを用いた「実行可能な手順書」として提供しようというのが、ここでの発想となります。
Jupyterを利用してAnsibleを操作する環境は、図1のようになります。基本的には、Ansibleの管理サーバーにJupyterを追加導入しているだけで、特別な環境というわけではありません。
図1 Jupyter経由で操作する環境
前回紹介したように、Jupyterを利用すると、外部のWebブラウザーからNotebook形式でサーバー上のコマンドを実行することが可能になります。元々は、Pythonのコマンドを実行するためのツールですが、Pythonだけではなく、Bashを用いてサーバーの上のコマンドを実行することも可能です。そこで、一連の作業手順を記載したNotebookを作成して、各ステップをAnsibleのPlaybookとして実行するようにしておきます。
作業実施者は、与えられたNotebookを「お手本」として、作業手順を確認しながら、各ステップを実行していきます。AnsibleのPlaybookを単なるブラックボックスとして実行するのではなく、作業内容を理解した上で実行していくところがポイントとなります。必要な際は、適用先の環境に応じて、オプションパラメーターを変更して実行することも可能です。実際に環境を用意して、サンプルのNotebookを利用する手順を筆者のBlogで公開していますので、そちらも参考にしてください(*2)。
このように、JupyterのNotebookとして手順書を提供することには、いくつかのメリットがあります。ひとつは、作業記録がそのままNotebookとして残ることです。管理対象のサーバーに対して行った作業を1つひとつのコマンド単位で、その実行結果とともに保存することができます。
そしてもうひとつは、手順書とPlaybookの内容を比較的容易に改善していけるという点です。図1に示したように、AnsibleのPlaybookそのものは、管理サーバーに保存するのではなく、Notebookに記載された手順の中で、外部のGitリポジトリーから取得します。手順の中で、使用するブランチ(あるいはタグ)を指定しておけば、Gitリポジトリー上でのPlaybookの修正をNotebook側の手順に反映するタイミングをコントロールできます。あるいは、Notebookに記載された手順を修正して、より使いやすく改善されたNotebookを作っていくこともできます。
これは、言い換えると、Notebookとして用意された手順書をプログラムコードのようにリファクタリングすることができるというわけです。現在のJupyterには、GitのようにNotebookそのものをバージョン管理する機能はありませんが、将来的には、Notebookの一部をモジュールとして取り出すなど、まさにプログラムコードと同等にメンテナンスできるようになる可能性も考えられます。
今回は、JupyterのNotebookとして、「実行可能な手順書」を用意するというアイデアを紹介しました。これまでサーバーの操作というと、テキストベースのコマンド入力かグラフィカルなGUIのどちらかでしたが、JupyterのNotebookは、ちょうどこれらの中間と考えることができます。もともと統計分析を実施するツールですので、実行結果として表やグラフを表示することも可能です。
次回は、このようなJupyterの「表現力」を活かした利用方法を探ってみたいと思います。
*1 Literate Computing for Infrastructure - インフラ・コード化の実践におけるIPython (Jupyter) Notebookの適用
*2 Literate Automation(文芸的自動化)についての考察
++ CTC教育サービスから一言 ++
このコラムでLinuxや周辺技術の技術概要や面白さが理解できたのではないかと思います。興味と面白さを仕事に変えるには、チューニングやトラブルシューティングの方法を実機を使用して多角的に学ぶことが有効であると考えます。CTC教育サービスでは、Linuxに関する実践力を鍛えられるコースを多数提供しています。興味がある方は以下のページもご覧ください。
CTC教育サービス Linuxのページ
http://www.school.ctc-g.co.jp/linux/
筆者書籍紹介 Software Design plusシリーズ 「独習Linux専科」サーバ構築/運用/管理 ――あなたに伝えたい技と知恵と鉄則 本物の基礎を学ぶ!新定番のLinux独習書 中井悦司 著 B5変形判/384ページ 定価3,129円(本体2,980円) ISBN 978-4-7741-5937-9 詳しくはこちら(出版社WEBサイト) |
[IT研修]注目キーワード Python UiPath(RPA) 最新技術動向 Microsoft Azure Docker Kubernetes