とりあえずAnsible AWXをうごかしたい
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