M1 MacでAnsible AWXをインストールして起動する
- 2022.10.24
- IT

Software Design10月号にAnsible-AWXの起動方法が書いてあったので、気になりやってみました!
公式ドキュメントを見ながら、実行しました。
私のMacの環境
利用環境は、M1 Macです。
1 2 3 4 5 6 7 8 9 10 |
test@tests-Air ~ % sw_vers ProductName: macOS ProductVersion: 12.3.1 BuildVersion: 21E258 test@tests-Air ~ % sysctl machdep.cpu.brand_string machdep.cpu.brand_string: Apple M1 test@tests-Air ~ % python -V Python 3.9.10 test@tests-Air ~ % pip -V pip 22.0.4 |
事前準備
事前にDocker Desktopをインストールします。
minikubeとKustomize(マニュフェスト管理ツール)をインストールしていきます。
まずは、minikubeをインストールします。
公式ドキュメントに従って、minikubeをインストールします。
Homebrewが使えるみたいなので、使います。
ターミナルで、
brew install minikube
を打ち、実行します
次に、Kustomizeを公式ドキュメントに従ってインストールします。
Homebrewが使えるみたいなので、使います。
ターミナルで、
1 |
brew install kustomize |
を打ち、実行します
Minikubeの起動
まずは、Dockerデスクトップを起動します。
次に下記コマンドをターミナルで実行してMinikubeを起動します
minikube start --cpus=4 --memory=6g --addons=ingress
この際に、
❌ MK_USAGE が原因で終了します: Docker Desktop は 1988MB のメモリーしか使用できませんが、8192MB のメモリー使用を指定されました
というエラーが出た場合は、Docker Desktopのメモリの量を調整してみてください。
(上記のエラーは8GBを指定した際に出たエラーです。)
AWXのデプロイ
それでは実際に作っていきます。
Yamlファイルの準備
任意のディレクトリでデプロイ用のYamlファイル(kustomization.yaml, awx-demo.yaml)を2つ作ります。
こちらは公式ドキュメントを参考にします。
kustomization.yamlは下記のとおりです。(Githubはこちらです)
1 2 3 4 5 6 7 8 9 10 11 |
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - github.com/ansible/awx-operator/config/default?ref=0.30.0 - ./awx-demo.yaml images: - name: quay.io/ansible/awx-operator newTag: latest # Specify a custom namespace in which to install AWX namespace: awx |
awx-demo.yamlは下記のとおりです。
1 2 3 4 5 6 7 8 9 |
--- apiVersion: awx.ansible.com/v1beta1 kind: AWX metadata: name: awx-demo spec: service_type: ClusterIP ingress_type: ingress hostname: awx-demo.example.com |
Yamlファイルの実行
まずは、ネームスペースを作ります。
kubectl create ns awx
下記のコマンドでビルドしていきます。
kustomize build . | kubectl apply -f -
このビルドは時間がかかるのですが、下記のコマンドでビルドの状況を見ることができます。
1 2 3 4 5 6 7 8 9 10 |
kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx -w # 下記は実行例です test@tests-Air ~ % kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator" -n awx -w NAME READY STATUS RESTARTS AGE awx-demo-649b6d4987-ww49w 0/4 Init:0/1 0 48s awx-demo-postgres-13-0 1/1 Running 0 2m35s awx-demo-649b6d4987-ww49w 0/4 Init:0/1 0 52s awx-demo-649b6d4987-ww49w 0/4 PodInitializing 0 53s awx-demo-649b6d4987-ww49w 4/4 Running 0 83s |
もしくは、下記コマンドでも状況を見ることができます。
1 2 3 4 5 6 7 |
test@tests-MacBook-Air awx % kubectl logs -f deployments/awx-operator-controller-manager -c awx-manager -n awx {"level":"info","ts":1666534156.6696548,"logger":"cmd","msg":"Version","Go Version":"go1.18.6","GOOS":"linux","GOARCH":"amd64","ansible-operator":"v1.23.0","commit":"1eaeb5adb56be05fe8cc6dd70517e441696846a4"} {"level":"info","ts":1666534156.6802886,"logger":"cmd","msg":"Watching single namespace.","Namespace":"awx"} {"level":"info","ts":1666534156.7597718,"logger":"controller-runtime.metrics","msg":"Metrics server is starting to listen","addr":"127.0.0.1:8080"} {"level":"info","ts":1666534156.7686467,"logger":"watches","msg":"Environment variable not set; using default value","envVar":"ANSIBLE_VERBOSITY_AWX_AWX_ANSIBLE_COM","default":2} {"level":"info","ts":1666534156.769116,"logger":"watches","msg":"Environment variable not set; using default value","envVar":"ANSIBLE_VERBOSITY_AWXBACKUP_AWX_ANSIBLE_COM","default":2} {"level":"info","ts":1666534156.769444,"logger":"watches","msg":"Environment variable not set; using default value","envVar":"ANSIBLE_VERBOSITY_AWXRESTORE_AWX_ANSIBLE_COM","default":2} |
起動が終わったら、AWXのログイン用のURLを下記コマンド取得します。
1 2 3 4 5 |
test@tests-Air ~ % minikube service awx-demo-service --url -n awx 😿 サービス awx/awx-demo-service は NodePort がありません http://127.0.0.1:51511 ❗ Docker ドライバーを darwin 上で使用しているため、実行するにはターミナルを開く必要があります。 こ |
これでアクセス先はわかりました。
次に、別のターミナルで、AWXのログイン用のPWを下記コマンドで取得します。
1 |
kubectl get secret awx-demo-admin-password -o jsonpath="{.data.password}" -n awx | base64 --decode |
ちなみに、PWは、~~~~%というように、%が最後につくのですが、%はPWに含まれません。
これだけでは、先程取得したURLにアクセスができないので、下記コマンドでアクセスできるようにします。
PWの入力が求められるので、先程取得したPWを入力します。
1 2 3 4 5 6 7 8 9 |
test@tests-Air awx % minikube tunnel ✅ トンネルが無事開始しました 📌 注意: トンネルにアクセスするにはこのプロセスが存続しなければならないため、このターミナルはクローズしないでください ... ❗ awx-demo-ingress service/ingress は次の公開用特権ポートを要求します: [80 443] 🔑 sudo permission will be asked for it. 🏃 awx-demo-ingress サービス用のトンネルを起動しています。 Password: |
それでは、取得したURLをブラウザに入力します。
次に
ID: Admin
PW: さきほど取得したPW
でログインすると。。
入れました!
以上です!