AWX 19.4.0 を macOS Big Sur 11.6 にインストールした手順の記録。
環境
- macOS Big Sur 11.6
- Docker Desktop 4.1.0
- Docker Engine 20.10.8
- minikube 1.23.2
- AWX Operator 0.14.0
- AWX 19.4.0
INSTALL.md によれば、AWX 18.0 以降は AWX Operator を使ったインストールが推奨される。 1 2
準備
Docker Desktop のインストール
brew install --cask docker
Docker の使用メモリがデフォルトで 2GB (2.5GB?) なので 4.25GB に増やす。
Docker > Settings > Resources > ADVANCED > Memory > 4.25GB > Apply & Restart
Minikube のインストール
brew install minikube
INSTALL.md では Minikube を使ってインストールしているので踏襲。
AWX のインストール
Kubernates クラスタの起動
minikube start --cpus=2 --memory=4g --addons=ingress
😄 Darwin 11.6 上の minikube v1.23.2
✨ dockerドライバーが自動的に選択されました。他の選択肢: vmware, virtualbox, ssh
👍 コントロールプレーンのノード minikube を minikube 上で起動しています
🚜 イメージを Pull しています...
💾 Kubernetes v1.22.2 のダウンロードの準備をしています
> gcr.io/k8s-minikube/kicbase: 355.40 MiB / 355.40 MiB 100.00% 1.77 MiB p/
> preloaded-images-k8s-v13-v1...: 511.84 MiB / 511.84 MiB 100.00% 2.31 MiB
🔥 docker container (CPUs=4, Memory=6144MB) を作成しています...
🐳 Docker 20.10.8 で Kubernetes v1.22.2 を準備しています...
▪ 証明書と鍵を作成しています...
▪ Control Plane を起動しています...
▪ RBAC のルールを設定中です...
🔎 Kubernetes コンポーネントを検証しています...
💡 After the addon is enabled, please run "minikube tunnel" and your ingress resources would be available at "127.0.0.1"
▪ イメージ gcr.io/k8s-minikube/storage-provisioner:v5 を使用しています
▪ イメージ k8s.gcr.io/ingress-nginx/controller:v1.0.0-beta.3 を使用しています
▪ イメージ k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0 を使用しています
▪ イメージ k8s.gcr.io/ingress-nginx/kube-webhook-certgen:v1.0 を使用しています
🔎 ingress アドオンを検証中です...
🌟 有効なアドオン: storage-provisioner, default-storageclass, ingress
🏄 完了しました! kubectl が「"minikube"」クラスタと「"default"」ネームスペースを使用するよう構成されました
INSTALL.md では 4CPU 6GB を指定しているが、Ansible Tower の Requirements によれば 2CPU 4GB が下限。 3 4
ノードの確認
minikube kubectl -- get nodes
> kubectl.sha256: 64 B / 64 B [--------------------------] 100.00% ? p/s 0s
> kubectl: 50.63 MiB / 50.63 MiB [---------------] 100.00% 3.20 MiB p/s 16s
NAME STATUS ROLES AGE VERSION
minikube Ready control-plane,master 16m v1.22.2
kube-apiserver 通信の確認
minikube kubectl -- get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx ingress-nginx-admission-create--1-j8vd6 0/1 Completed 0 17m
ingress-nginx ingress-nginx-admission-patch--1-tz4bn 0/1 Completed 1 17m
ingress-nginx ingress-nginx-controller-69bdbc4d57-b8qsz 1/1 Running 0 17m
kube-system coredns-78fcd69978-5qzg2 1/1 Running 0 17m
kube-system etcd-minikube 1/1 Running 0 17m
kube-system kube-apiserver-minikube 1/1 Running 0 17m
kube-system kube-controller-manager-minikube 1/1 Running 0 17m
kube-system kube-proxy-7kb98 1/1 Running 0 17m
kube-system kube-scheduler-minikube 1/1 Running 0 17m
kube-system storage-provisioner 1/1 Running 1 (17m ago) 17m
AWX Operator リポジトリのクローン
git clone https://github.com/ansible/awx-operator.git
Cloning into 'awx-operator'...
remote: Enumerating objects: 5651, done.
remote: Counting objects: 100% (2749/2749), done.
remote: Compressing objects: 100% (986/986), done.
remote: Total 5651 (delta 1856), reused 2389 (delta 1664), pack-reused 2902
Receiving objects: 100% (5651/5651), 1.39 MiB | 2.87 MiB/s, done.
Resolving deltas: 100% (3212/3212), done.
チェックアウト
cd awx-operator
git checkout 0.14.0
Note: switching to '0.14.0'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at 9e9457c Fix release workflow
デプロイ
export NAMESPACE=awx
make deploy
cd config/manager && /Users/bezeklik/Workspace/awx-operator/bin/kustomize edit set image controller=quay.io/ansible/awx-operator:0.14.0
cd config/default && /Users/bezeklik/Workspace/awx-operator/bin/kustomize edit set namespace awx
/Users/bezeklik/Workspace/awx-operator/bin/kustomize build config/default | kubectl apply -f -
namespace/awx created
customresourcedefinition.apiextensions.k8s.io/awxbackups.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxrestores.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created
serviceaccount/awx-operator-controller-manager created
role.rbac.authorization.k8s.io/awx-operator-leader-election-role created
role.rbac.authorization.k8s.io/awx-operator-manager-role created
clusterrole.rbac.authorization.k8s.io/awx-operator-metrics-reader created
clusterrole.rbac.authorization.k8s.io/awx-operator-proxy-role created
rolebinding.rbac.authorization.k8s.io/awx-operator-leader-election-rolebinding created
rolebinding.rbac.authorization.k8s.io/awx-operator-manager-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator-proxy-rolebinding created
configmap/awx-operator-manager-config created
service/awx-operator-controller-manager-metrics-service created
deployment.apps/awx-operator-controller-manager created
確認
alias kubectl="minikube kubectl --"
kubectl get pods -n $NAMESPACE
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-6f68ddbf4-s7ztr 2/2 Running 0 79s
STATUS が ImagePullBackOff となって先に進まない場合は 0.14.0 などバージョンを指定する。
設定
kubectl config set-context --current --namespace=$NAMESPACE
Context "minikube" modified.
設定
kubectl apply -f awx-demo.yml
awx.awx.ansible.com/awx-demo created
ログの確認
kubectl logs -f deployments/awx-operator-controller-manager -c manager
確認
kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"
NAME READY STATUS RESTARTS AGE
awx-demo-d46576-9wdzq 4/4 Running 0 7m2s
awx-demo-postgres-0 1/1 Running 0 7m10s
確認
kubectl get svc -l "app.kubernetes.io/managed-by=awx-operator"
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-demo-postgres ClusterIP None <none> 5432/TCP 7m24s
awx-demo-service NodePort 10.98.118.93 <none> 80:32080/TCP 7m18s
サービスの起動
minikube service awx-demo-service --url -n $NAMESPACE
🏃 Starting tunnel for service awx-demo-service.
|-----------|------------------|-------------|------------------------|
| NAMESPACE | NAME | TARGET PORT | URL |
|-----------|------------------|-------------|------------------------|
| awx | awx-demo-service | | http://127.0.0.1:61197 |
|-----------|------------------|-------------|------------------------|
http://127.0.0.1:61197
❗ Dockerドライバーをdarwin上で動かしているため、実行するにはターミナルを開く必要があります。
admin パスワードの確認
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" | base64 --decode
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX%
アンインストール
AWX インスタンスの削除
kubectl delete awx awx-demo
awx.awx.ansible.com "awx-demo" deleted
クラスタの削除
minikube delete
🔥 docker の「minikube」を削除しています...
🔥 コンテナ "minikube" を削除しています...
🔥 /Users/bezeklik/.minikube/machines/minikube を削除しています...
💀 クラスタ "minikube" の全てのトレースを削除しました。
-
Starting in version 18.0, the AWX Operator is the preferred way to install AWX.
awx/INSTALL.md at 19.4.0 · ansible/awx ↩ -
AWX can also alternatively be installed and run in Docker, but this install path is only recommended for development/test-oriented deployments, and has no official published release.
awx/INSTALL.md at 19.4.0 · ansible/awx ↩ -
2 CPUs minimum for Automation Platform installations.
5. Requirements — Ansible Tower Installation and Reference Guide v3.8.4 ↩ -
4 GB RAM minimum for Automation Platform installations
5. Requirements — Ansible Tower Installation and Reference Guide v3.8.4 ↩