ランブック
ランブックは、特定のシステムの起動、停止、デバッグ、トラブルシューティングなど、特定のプロセスを実行する方法を説明する文書化された手順のコレクションです。
Jupyter NotebooksとRubixライブラリを使用することで、ユーザーは独自の実行可能ランブックを書き始めることができます。
歴史的に、ランブックは条件やシステムに応じて、デシジョンツリーや詳細なステップバイステップのガイドの形をとっていました。
最新の実装では、「実行可能なランブック」というコンセプトが導入されており、明確に定義されたプロセスとともに、オペレーターはあらかじめ書かれたコードブロックやデータベースクエリを与えられた環境に対して実行することができます。
実行可能なランブック
GitLab 11.4で導入されました。
GitLabのKubernetesインテグレーションで提供されるJupyterHubアプリにNurtchのRubixライブラリが同梱され、DevOpsランブックを簡単に作成できるようになりました。 サンプルランブックが提供され、一般的なオペレーションが紹介されています。 Rubixを使えばKubernetesやAWSの一般的なワークフローを簡単に作成できますが、Rubixを使わずに手動で作成することもできます。
GitLabでこれを実現する方法の概要については、このビデオをご覧ください!
要件
実行可能なランブックを作成するには、以下のものが必要です:
- Kubernetes- 残りのアプリケーションをデプロイするにはKubernetesクラスターが必要です。GitLabのインテグレーションを使ってクラスターを追加するのが一番簡単な方法です。
- イングレス- イングレスは、ロードバランシング、SSLターミネーション、名前ベースのバーチャルホスティングを提供します。 アプリケーションのウェブプロキシとして機能します。
- JupyterHub-JupyterHubは、チーム全体でノートブックを管理するためのマルチユーザーサービスです。 Jupyter Notebooksは、データ分析、可視化、機械学習に使用されるWebベースのインタラクティブなプログラミング環境を提供します。
育成
Nurtch はRubix ライブラリを開発している会社です。 Rubix はオープンソースの Python ライブラリで、Jupyter Notebooks 内で一般的な DevOps タスクを簡単に実行できます。 Cloudwatch メトリクスのプロットや ECS/Kubernetes アプリのロールなどのタスクが数行のコードに簡略化されます。 詳細はNurtch ドキュメントを参照してください。
GitLab で実行可能なランブックを設定します。
このステップバイステップのガイドに従って、GitLabで実行可能なランブックを設定します。上記のコンポーネントと事前にロードされたデモランブックを使用します。
-
Create new clusterで説明した手順に従って、プロジェクトにKubernetesクラスターを追加します。
-
Ingressアプリケーションの横にあるInstallボタンをクリックしてIngressをインストールします。
-
Ingressが正常にインストールされたら、JupyterHubアプリケーションの横にあるInstallボタンをクリックします。 次のステップでは、ここで提供されたJupyter Hostnameが必要になります。
-
JupyterHubが正常にインストールされたら、ブラウザでJupyter Hostnameを開きます。Sign in with GitLabボタンをクリックしてJupyterHubにログインし、サーバを起動します。 GitLabインスタンスのどのユーザに対してもOAuth2による認証が有効になっています。 このボタンは、JupyterHubがあなたのGitLabアカウントを使用するための認証を要求するGitLabのページにリダイレクトします。
- Authorizeをクリックすると、JupyterHubアプリケーションにリダイレクトされます。
- Start My Serverをクリックすると、数秒後にサーバーが起動します。
-
ランブックから GitLab プロジェクトへのアクセスを設定するには、デモランブックのSetupセクションにGitLabアクセストークンとプロジェクト ID を入力します:
-
左側のパネルにあるDevOps-Runbook-Demoフォルダをダブルクリックします。
-
Nurtch-DevOps-Demo.ipynb
ランブックをダブルクリックします。Jupyterは、画面の右側にランブックの内容を表示します。Setupセクションには、
PRIVATE_TOKEN
とPROJECT_ID
が表示されます。 以下のように、シングルクォートを維持したまま、これらの値を入力します:PRIVATE_TOKEN = 'n671WNGecHugsdEDPsyo' PROJECT_ID = '1234567'
-
このセクションの最終行の
VARIABLE_NAME
を、アクセストークンに使用する変数名に合わせて更新します。この例では、変数名をPRIVATE_TOKEN
とします。VARIABLE_VALUE = project.variables.get('PRIVATE_TOKEN').value
-
-
ランブックのオペレーションを設定するには、変数を作成して設定します:
注:この例では、サンプル・ランブックのRun SQL queries in Notebookセクションを使用して、PostgreSQLデータベースにクエリを実行しています。 以下のコード・ブロックの最初の4行は、このクエリが機能するために必要な変数を定義しています:%env DB_USER={project.variables.get('DB_USER').value} %env DB_PASSWORD={project.variables.get('DB_PASSWORD').value} %env DB_ENDPOINT={project.variables.get('DB_ENDPOINT').value} %env DB_NAME={project.variables.get('DB_NAME').value}
シェルスクリプトの実行やKubernetesクラスターとのやり取りなど、他のオペレーションも試すことができます。 詳細はNurtchドキュメントをご覧ください。