0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

AWX を デプロイして NetApp Ansibleモジュール用の実行環境(Execution Environment)を 登録してみた

Last updated at Posted at 2022-04-08

AWX を デプロイして 自分で作成した 実行環境(Execution Environment)を 登録してみた

以前の記事でAnsible実行環境(Execution Environment)用のコンテナイメージを作成する手順を紹介しました。
そこで作成したAnsible実行環境はAWX環境で登録・利用が可能なものとなります。

そこで今回はシンプルに AWXをデプロイして実行環境(Execution Environment)として登録する操作を実施してみたいと思います。

なお、Kubernetesクラスタは展開済みでLB(今回はMetallB)とCSI Driver(NetAPp Astra Trident)をデプロイしてある環境を構築済みである前提となっています。前提の環境を準備する際は、Kubernetesクラスタを Kindを利用して シングルホストでAWXを簡易的に試すための手順がNetAppのサイトでも紹介されていますので、そちらも参考にしてください。

前提

以下の環境で試しています

  • kubernetes 1.20.0
  • AWX Operator 0.18.0
  • AWX 20.0.1
  • Astra Trident 22.01.0
  • MetalLB 0.12.1
  • Ontap 9.9.1

やってみること

  1. AWXをOperatorでKubernetesクラスタにデプロイ
  2. デプロイしたAWXにアクセス
  3. 自分で作成したansible実行環境用コンテナイメージを登録

1. AWXをKubernetesクラスタにデプロイ

こちらのサイトに記載の手順で AWXをデプロイします。

$ git clone https://github.com/ansible/awx-operator.git
$ cd awx-operator
$ git checkout 0.18.0
$ export NAMESPACE=awx
$ make deploy
〜出力省略〜
$ cat <<EOF > awx.yaml
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx
  namespace: awx
spec:
  service_type: LoadBalancer
  ingress_type: none
  hostname: awx-demo.green.lab
  projects_persistence: true
#  projects_storage_class:
  projects_storage_size: 5Gi
EOF
$ kubectl get pods -n $NAMESPACE
NAME                                               READY   STATUS    RESTARTS   AGE
awx-operator-controller-manager-845c5c6d69-bz6n8   2/2     Running   0          53s
$ kubectl apply -f awx.yaml
awx.awx.ansible.com/awx created
$ kubectl get pods -n $NAMESPACE
NAME                                               READY   STATUS    RESTARTS   AGE
awx-b8744747-cwwnx                                 4/4     Running   0          78s
awx-operator-controller-manager-845c5c6d69-bz6n8   2/2     Running   0          15m
awx-postgres-0                                     1/1     Running   0          1m46s
$ 

2. デプロイしたAWXにアクセス

デプロイしたAWXにアクセするするために、IPと初期パスワードを確認します。


$ kubectl -n awx get secret awx-admin-password -o jsonpath='{.data.password}' | base64 --decode
7imhler1DpO3Tlkc4G3xgBkXjAjg7FZLg$ kubectl -n awx get service
NAME           TYPE           CLUSTER-IP     EXTERNAL-IP       PORT(S)        AGE
awx-postgres   ClusterIP      None           <none>            5432/TCP       4d17h
awx-service    LoadBalancer   10.233.45.41   192.168.100.231   80:31313/TCP   4d17h

上記の例では、192.168.100.231が、AWXのIP、7imhler1DpO3Tlkc4G3xgBkXjAjg7FZLgがAWXパスワードになります。

以下の情報でブラウザからAWXにアクセスして、ログインを押します。

パラメータ名 備考
URL  http://<<AWXのIP>> 例 "http://192.168.100.231"
ユーザー名: admin
パスワード <<AWXパスワード>> 例 "7imhler1DpO3Tlkc4G3xgBkXjAjg7FZLg"

ログインが成功するとダッシュボードが表示されます。

image.png

3. 自分で作成したansible実行環境用コンテナイメージを登録

AWXの画面左側にある、"管理"→"実行環境"のクリックし、"追加"をクリックします。

"名前"を入力して、"イメージ"に自分で作成したansible実行環境用コンテナイメージの情報(例:"DOCKER_ID"/ansible-ee:2.11-custom-v2)をを入力して、"保存"をクリックします。

image.png

なお、ansible実行環境用のコンテナイメージ準備についてはこちらのブログで試した時の内容を記載しています。自分で作成する際には参考にしてください。

これで、実行環境の登録が完了しました。
ジョブテンプレートから指定することで、自分で作成したansible実行環境用コンテナイメージ上で Ansibleのplaybookが実行されることになります。

4. 登録した実行環境上で Playbook を実行してみる

登録した実行環境上でNetAppのAnsibleモジュールを利用したPlaybookを実行してみます。

AWXから疎通可能なNetApp Ontapストレージに対して、ストレージのコンフィグ情報を収集する簡単なPlaybookを準備し実行してみます。

今回は シンプルに動作確認するために AWX(のPodがマウントしているプロジェクト用永続ボリューム)上にPlaybookファイルを作成して実行してみます。

4-1. Playbookファイルを配置

AWXのPodに接続してPlaybookファイルを作成します。

$ kubectl get pods -n $NAMESPACE
NAME                                               READY   STATUS    RESTARTS   AGE
awx-b8744747-cwwnx                                 4/4     Running   0          78s
awx-operator-controller-manager-845c5c6d69-bz6n8   2/2     Running   0          15m
awx-postgres-0                                     1/1     Running   0          1m46s
$ kubectl -n $NAMESPACE exec -it awx-b8744747-cwwnx -c awx-ee -- /bin/bash
bash-4.4$ mkdir /var/lib/awx/projects/awxtest1
bash-4.4$ cat <<EOF > /var/lib/awx/projects/awxtest1/ontap_info.yaml
---
- name: ONTAP INFO
  hosts: localhost
  gather_facts: no
  collections:
    - ansible.builtin
    - netapp.ontap
  tasks:
    - name: ontap info
      netapp.ontap.na_ontap_info:
        validate_certs : no
        https          : yes
        hostname: "<<NetAppストレージのIPアドレス>>"
        username: "<<NetAppストレージの管理者ユーザ>>"
        password: "<<管理者ユーザのパスワード>>"
        gather_subset:
          - vserver_info
          - volume_info
      register: ontap_info

    - name: msg
      debug: var=ontap_info
EOF
$ exit

※NetAppストレージのIPアドレス、管理者ユーザ、パスワードは、AWXから疎通可能なNetApp Ontapストレージの情報を設定

4-2. AWXプロジェクト作成

AWXの画面左側にある、"リソース"→"プロジェクト"をクリックし、"追加"をクリックします。

以下の情報を入力して、"保存"をクリックします。

パラメータ名 備考
名前 任意
ソースコントロール認証情報タイプ 手動を選択
Playbook ディレクトリー ディレクトリ名を選択 4-1で作成したもの

image.png

4-3. AWXジョブテンプレートを作成して Playbook を実行

AWXの画面左側にある、"リソース"→"テンプレート"をクリックし、"追加"→”新規ジョブテンプレートの追加”をクリックします。

以下の情報を入力して、"保存"をクリックします。

パラメータ名 備考
名前 任意
インベントリー: "Demo Inventory"を選択 デフォルト作成のもの
プロジェクト プロジェクト名を選択 4-2で作成したもの
実行環境 実行環境を選択 3で登録したもの
Playbook Playbookファイルを選択 4-1で作成したもの

image.png

保存後のテンプレート 詳細画面 で、"起動"をクリックすると 登録したPlaybookが実行され、実行結果が表示されます。

image.png

"netapp.ontap.na_ontap_info"というONTAPのコンフィグ情報を収集するAnsibleモジュールが実行され、各種取得した情報が表示されます。

image.png

この実行結果の情報は AWXの画面左側にある、"ビュー"→"ジョブ"の画面で 後から再度確認が可能です。

まとめ

AWXをデプロイし、自分で作成したansible実行環境用コンテナイメージを登録してみました。

AWXのデプロイは、 Operatorを利用して、非常に簡単に実施可能になっています。
また、自分で作成したAnsilbeは自動化実行環境用コンテナイメージの登録も、簡単に実施することができます。

AWXにコンテナ・Kubernetesの技術を取り入れ、構築・設定フェーズも簡単に行えるようになってきたので、より自動化への取り組みがしやすい環境が整ってきている印象です。
AWX導入後の設定もAnsibleで自動化できたりするので、そちらも興味あれば是非試してみてください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?