AnsibleでOpenShiftを操作してみる

はじめに

本記事は OpenShift Advent Calendar 2022 の24日目の記事になります。

本記事では、Ansibleを使ってOpenShiftを操作してみようと思います。
OpenShiftを操作するコレクションは以下になります。


環境

項目 バージョン
RHEL 8.6
OCP 4.11.7
Ansible Automation Platform 2.2.1
Ansible Core 2.13.4
Python 3.9.13
community.okd 2.2.0
kubernetes.core 2.3.2

トークン取得

今回はkubeadminでAPIを操作するためのトークンを取得します。

Ansibleで実行

AnsibleでOCPを操作してみます。

環境構築

Pythonのvenvを作成します。

ansible-coreをインストールします。

コレクションを動作させるために必要なライブラリをインストールします。

OCPを操作するためのコレクションをインストールします。

これで操作する環境は整いました。

クラスタ情報の取得

まずは、きちんとOCPにアクセスできて情報が取得できるかを簡単に確認してみます。
以下のPlaybookを作成して実行してみましょう。

以下のように問題無く実行できるか確認します。

Deploymentを作成

今度は Deployment を作成してみたいと思います。
以下のPlaybookを作成して実行してみましょう。

以下のように問題無く実行できるか確認します。

nginx-deployment が作成された確認します。

Ansible Automation Platformで実行

Ansible Automation Platform(AAP)でOCPを操作してみます。

プロジェクト登録

今回は以下のリポジトリを登録します。

プロジェクト を選択して 追加 をクリックします。

名前 を入力して ソースコントロールタイプGit にし ソースコントロールのURL を入力して 保存 をクリックします。

最終ジョブステータス成功 になったことを確認します。

認証設定

認証情報 を選択して 追加 をクリックします。

名前 を入力して 認証タイプOpenShift または Kubernetes API Bearer トークン にし OpenShiftまたは Kubernetes APIエンドポイントAPI認証ベアラートークン を入力します。
今回はSSLの検証はしないので チェック を外して 保存 をクリックします。

テンプレート作成

テンプレート を選択して 追加 をクリックして 新規ジョブテンプレートの追加 をクリックします。

名前 を入力して インベントリー はデフォルトのものを使用するので Demo Inventory を選択し プロジェクトSample Project を選択します。
Playbookplaybooks/playbook.yml を選択し 認証情報 は登録した OCP認証 を選択後に 保存 をクリックします。

テンプレート実行

起動 をクリックしてジョブテンプレートを実行します。

次のように成功すれば問題ありません。

Execution Environment作成

上記ではプロジェクト同期時に必要なコレクションを自動でインストールしました。
もし、インターネットにAAPが繋がらない場合は以下の対処法があります。

  • コレクションを同梱したExecution Environment(EE)をビルドする
  • Private Automation Hubを構築してコレクションを登録し、そこからインストールできるようにする

今回は前者のEEをビルドしてみます。
EEのビルドは root で実行してください。

まずは、EEをビルドするための ansible-builder をAAPホストにインスト−ルします。

リポジトリをクローンします。

community.okd を同梱したEEをビルドします。

ビルドしたEEをPrivate Automation Hubに登録して使う方法もありますが、今回は手動で awx ユーザーにインポートします。
作成したEEを save して awx ユーザーのディレクトリ配下に移動します。

ocp-ee をロードします。

ビルドしたEEをAAPに登録します。
実行環境 を選択し 追加 をクリックします。

名前 を入力し イメージ に作成した localhost/ocp-ee:latest を指定します。
プル は既にローカルにロードしているため 実行前にコンテナーをプルしない を選択して 保存 をクリックします。

後はプロジェクトやジョブテンプレートの 実行環境 で登録したEEを選択してください。(以下は例)

最後に

Ansibleを使ったOCP操作はあまりケースが無いかと思いますが、興味があれば是非試してみてください 🙂
Happy Automation!!

Leave a Reply

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください