AnsibleのOperatorを使ってk8sにAWXやAnsible Towerをデプロイする


この投稿はAnsible 2 Advent Calendar 2019(通称裏アドベントカレンダー?)の11日めの記事です。
1週間全部俺の4回目です!

今回はtower-operatorを使ってk8s(kind)にAWXをサクッと作ってみます。

tower-operator

tower-operatorはJeff GeerlingさんがOperator SDKとAnsibleを組み合わせて作られてるオペレーターです。

このオペレーターを使うことで簡単にAnsible TowerやAWXをk8s上に構築することができます。
ここではkindでクラスタを作ってOperator podをデプロイしAWX環境を構築してみようと思います。

環境

項目 バージョン
kind 0.6.0
Ansible Tower/AWX Operator 0.2.0
CentOS 7.7.1908

今回の検証で使ったVMのスペックは4CPU/6GB Memoryです。

kindクラスタの準備

kindのインストール

kindコマンドのインストール方法は以下のドキュメントを参考にしてください。

また、kubectlコマンドのインストール方法は以下のドキュメントを参考にしてください。

クラスタの作成

今回はcontrol-planeとworkerを1つずつ作ってみます。

クラスタの作成を実行します。

ノードを確認してみます。

ラベルの設定をします。

local-path-provisionerインストール

Ansible Tower/AWXで使用するPostgreSQLのPodがボリュームをマウントするのですが、kindの標準ではうまくマウントできないので次のコマンドでlocal-path-provisionerをインストールします。

これで、PVおよびPVCは自動で作ってくれます。

Ansible Tower/AWX Operatorデプロイ

次のコマンドでオペレーターをデプロイします。

オペレーターpodが起動したか確認します。

AWX podのデプロイ

AWXをデプロイするマニフェストを作成します。
標準だとAnsible Towreがデプロイされていまうので、AWXをデプロイする場合は tower_task_imagetower_web_image を上書きします。

次のコマンドを実行してクラスタにAWXをデプロイします。

AWXのpodが起動したか確認します。

Serviceの作成

外部からAWX podへアクセスするためのServiceを作ってみます。

NodePortの設定を確認します。
今回はクラスタノードのIPに対して 30859 でアクセスすればAWXのWebGUIへアクセスできることが確認できます。

NATの設定

今回はNATを入れてアクセスしてみます。
tower-webが起動しているノードのIPを確認します。

前、NATを入れるツールを作っていたのでそれを使ってNAT設定を入れてみます。

これで、kindをデプロイしたホストのIPでアクセスすればAWXのログイン画面が表示されます。

URL
http://IP Addr

最後に

オペレーターを使う事でk8s上に簡単にAnsible Tower/AWXの環境がデプロイできますね!
これは好きなときに好きなだけデプロイ(リソースが許される限り)できるので、ますます検証が捗りそうです 🙂

4回目は以上です!次!

Leave a Reply

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

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