🐈

とりあえずAnsible AWXをうごかしたい

2022/09/19に公開

Ansible AWXをうごかしたい

今まで使っていた、Ansible AWXを更新しようかなと思ったら、

  • あれ、Dockerでの構築が非推奨になってる。
  • AWX Operatorってなんだ?
  • え、Kubernetes上でしか動かないの?
    と、みなさんなったことでしょう。

ということで、とりあえずAWX Operatorを使ってAWXを構築してみます。

環境

AWXの推奨スペックはこちらを確認してください。今回は、
Infrastructure

  • OS : Ubuntu 22.04 server 64bit
  • CPU : 8core
  • MEM : 16GB
  • Disk : 64GB
    を用意しました。

Kubernetes環境どうするか

Githubでのサンプルでは、minikubeを展開してAWXをデプロイしていましたが、私の数少ない経験がk3sしかないので、とりあえず、k3s上に構築することにしました。議論はあると思いますが、k3sの方がminikubeよりも軽いらしいです。

k3s環境の構築

k3sはこちらを参考にしてインストールしてみます。

$ curl -sfL https://get.k3s.io | sh -s - --write-kubeconfig-mode 644

1行でインストール終わりです。すごいです。

Kustomizeのインストール

マニュアルでは、Kustomizeを利用してマニフェストを管理しているのでインストールします。

$ curl -s "https://raw.githubusercontent.com/kubernetes-sigs/kustomize/master/hack/install_kustomize.sh"  | bash

1行でインストール終わりです。お手軽です。

AWXをデプロイする

Githubでのサンプルを参考にマニフェストを用意します。tagの部分はreleaseから任意の物を選んで必ず書き換えてください。今回は、0.29.0にしています。

kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  # Find the latest tag here: https://github.com/ansible/awx-operator/releases
  - github.com/ansible/awx-operator/config/default?ref=0.29.0

# Set the image tags to match the git version from above
images:
  - name: quay.io/ansible/awx-operator
    newTag: 0.29.0

# Specify a custom namespace in which to install AWX
namespace: awx

マニフェストを適用します。

$ ./kustomize build . | kubectl apply -f -

AWXのマニフェストを先ほどのkustomization.yamlに追加してデプロイしていきます。
awx-demo.yaml

apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
spec:
  service_type: nodeport

kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  # Find the latest tag here: https://github.com/ansible/awx-operator/releases
  - github.com/ansible/awx-operator/config/default?ref=0.29.0
  - awx-demo.yaml

# Set the image tags to match the git version from above
images:
  - name: quay.io/ansible/awx-operator
    newTag: 0.29.0

# Specify a custom namespace in which to install AWX
namespace: awx

マニフェストを適用します。

$ ./kustomize build . | kubectl apply -f -

起動確認

ここまで来たら起動しているか確認します。

$ kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx
-----
NAME                        READY   STATUS    RESTARTS   AGE
awx-demo-postgres-13-0      1/1     Running   0          4m18s
awx-demo-69458fd8d7-s7l2f   4/4     Running   0          3m23s

全てrunningになっていることを確認します。

$ kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator" -n awx
-----
NAME                   TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
awx-demo-postgres-13   ClusterIP   None            <none>        5432/TCP       4m37s
awx-demo-service       NodePort    10.43.117.251   <none>        80:30080/TCP   3m45s

awx-demo-serviceで公開しているPortを確認します。
ここまでで、起動していることが確認できたら、adminの初期パスワードを調べてAWXにアクセスしてみます。

$ kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode
-----
"パスワードが出力されます"

http://{構築した環境のIP}:30080にアクセスし、admin/先ほどのpasswordでログインできれば完了です。

まとめ

AWXを、k3s上にデプロイしてみました。https対応やHAなどは全く考慮してないので本番環境としては微妙ですが、ただ動かしてみたいだけならば十分かなと思ってます。(正直playbookをGithubで管理していれば、最悪HAとかいらないとも思ってたり。。。)

Discussion