Ansible AWX è un’applicazione Web front-end gratuita e open source che fornisce un’interfaccia utente per gestire playbook e inventari Ansible, nonché un’API REST per Ansible.
È una versione open source di Red Hat Ansible Tower.
In questo tutorial mostrerò come installare Ansible AWX su Ubuntu 22.04.
Per implementare AWX, sono necessarie alcune infrastrutture Kubernetes come MicroK8, K3 o Minikube.
In questo tutorial utilizzeremo minikube (un cluster Kubernetes a nodo singolo).
Utilizza il seguente URL per l’installazione di minikube
PREREQUISITI
Ubuntu 22.04 LTS Server
Minikube Installato
Minimo 8GB di Ram
Minimo 2 vCPU
20GB di Spazio disco
Account di root o user con diritti di sudo
Per installare Minikube su Ubuntu 22.04 seguire la guida seguente xxxxxxxxxxxxxxxxxxxx
INSTALLAZIONE DI ANSIBLE AWX
Installare GIT con il comando:
0 |
sudo apt install git make -y
|
Aggiungere il componente Metrics-Server a Minikube con il comando:
0 |
minikube addons enable metrics-server
|
Dovremmo vedere il seguente output:
0
1
2
3
|
* metrics-server is an addon maintained by Kubernetes. For any concerns contact minikube on GitHub.
You can view the list of minikube maintainers at: https://github.com/kubernetes/minikube/blob/master/OWNERS
- Using image registry.k8s.io/metrics-server/metrics-server:v0.6.4
* The 'metrics-server' addon is enabled
|
Avviare Minikube con il seguente comando:
0 |
minikube start --vm-driver=docker --addons=ingress
|
Dovremmo vedere il seguente output:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
* minikube v1.31.2 on Ubuntu 22.04
* Using the docker driver based on existing profile
* Starting control plane node minikube in cluster minikube
* Pulling base image ...
* Updating the running docker "minikube" container ...
* Preparing Kubernetes v1.27.4 on Docker 24.0.4 ...
* Verifying Kubernetes components...
- Using image gcr.io/k8s-minikube/storage-provisioner:v5
- Using image docker.io/kubernetesui/dashboard:v2.7.0
- Using image docker.io/kubernetesui/metrics-scraper:v1.0.8
- Using image registry.k8s.io/ingress-nginx/controller:v1.8.1
- Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407
- Using image registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230407
- Using image registry.k8s.io/metrics-server/metrics-server:v0.6.4
* Verifying ingress addon...
* Some dashboard features require the metrics-server addon. To enable all features please run:
minikube addons enable metrics-server
* Enabled addons: default-storageclass, storage-provisioner, dashboard, metrics-server, ingress
* Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default
|
Verificare lo stato di Minikube con il comando:
0 |
minikube status
|
Dovremmo vedere il seguente output:
0
1
2
3
4
5
|
minikube
type: Control Plane
host: Running
kubelet: Running
apiserver: Running
kubeconfig: Configured
|
Quindi verificare lo stato del PODS con il comando:
0 |
kubectl get pods -A
|
Dovremmo vedere il seguente output:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
|
NAMESPACE NAME READY STATUS RESTARTS AGE
ingress-nginx ingress-nginx-admission-create-5fjxk 0/1 Completed 0 33m
ingress-nginx ingress-nginx-admission-patch-lr6kr 0/1 Completed 1 33m
ingress-nginx ingress-nginx-controller-7799c6795f-xqjd8 1/1 Running 2 (4m31s ago) 33m
kube-system coredns-5d78c9869d-h4x8z 1/1 Running 2 (4m36s ago) 45m
kube-system etcd-minikube 1/1 Running 2 (4m41s ago) 45m
kube-system kube-apiserver-minikube 1/1 Running 2 (4m31s ago) 45m
kube-system kube-controller-manager-minikube 1/1 Running 2 (4m41s ago) 45m
kube-system kube-proxy-k4tf4 1/1 Running 2 (4m41s ago) 45m
kube-system kube-scheduler-minikube 1/1 Running 2 (4m41s ago) 45m
kube-system metrics-server-7746886d4f-97vzj 1/1 Running 1 (4m41s ago) 5m21s
kube-system storage-provisioner 1/1 Running 4 (4m21s ago) 45m
kubernetes-dashboard dashboard-metrics-scraper-5dd9cbfd69-fz7cf 1/1 Running 2 (4m42s ago) 36m
kubernetes-dashboard kubernetes-dashboard-5c5cfc8747-b5qnt 1/1 Running 2 (4m41s ago) 36m
|
Scaricare i seguenti comandi per scaricare AWX Operator:
0
1
2
|
git clone https://github.com/ansible/awx-operator.git
cd awx-operator/
git checkout 2.6.0
|
Dovremmo vedere il seguente output:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
Note: switching to '2.6.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 822b3a4 Add receptor_log_level (#1444)
|
ATTENZIONE: durante la stesura del seguente tutorial la versione di AWX Operator è la 2.6.0 (per verificare l’ultima versione disponibile collegarsi al sito https://github.com/ansible/awx-operator/releases)
Configurare quindi il namespace ansible-awx quindi eseguire il deploy con i comandi:
0
1
|
export NAMESPACE=ansible-awx
make deploy
|
Dovremmo vedere il seguente output:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
namespace/ansible-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-awx-manager-role created
role.rbac.authorization.k8s.io/awx-operator-leader-election-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-awx-manager-rolebinding created
rolebinding.rbac.authorization.k8s.io/awx-operator-leader-election-rolebinding created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator-proxy-rolebinding created
configmap/awx-operator-awx-manager-config created
service/awx-operator-controller-manager-metrics-service created
deployment.apps/awx-operator-controller-manager created
|
Verificare lo stato del pods dal namesapce ansible-awx con il comando:
0 |
kubectl get pods -n ansible-awx
|
Dovremmo vedere il seguente output:
0
1
|
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-7dbdd45fd7-8fx9h 2/2 Running 0 76s
|
Creare il file AWX per la distribuzione con il comando:
0 |
sudo nano awx-deploy.yml
|
Quindi inserire all’interno del file le seguenti righe:
0
1
2
3
4
5
|
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
name: awx
spec:
service_type: nodeport
|
Salvare e chiudere il file di configurazione
Distribuire AWX con il comando:
0 |
kubectl create -f awx-deploy.yml -n ansible-awx
|
Dovremmo vedere il seguente output:
0 |
awx.awx.ansible.com/awx created
|
Verificare i pods di ansible-awx con il comando:
0 |
kubectl get pods -n ansible-awx
|
Dovremmo vedere il seguente output:
0
1
2
3
4
|
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-7dbdd45fd7-8fx9h 2/2 Running 0 17m
awx-postgres-13-0 1/1 Running 0 4m47s
awx-task-67d76567c-j5qgw 4/4 Running 0 4m17s
awx-web-54697c9c7c-m47gv 3/3 Running 0 3m7s
|
Verificare lo stato dei servizi con il comando:
0 |
kubectl get svc -n ansible-awx
|
Dovremmo vedere un output simile al seguente:
0
1
2
3
4
5
6
7
8
9
|
NAME READY STATUS RESTARTS AGE
awx-operator-controller-manager-7dbdd45fd7-8fx9h 2/2 Running 0 17m
awx-postgres-13-0 1/1 Running 0 4m47s
awx-task-67d76567c-j5qgw 4/4 Running 0 4m17s
awx-web-54697c9c7c-m47gv 3/3 Running 0 3m7s
rchiatto@vm-srv-ubu-ansible:~/awx-operator$ kubectl get svc -n ansible-awx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
awx-operator-controller-manager-metrics-service ClusterIP 10.106.82.206 <none> 8443/TCP 18m
awx-postgres-13 ClusterIP None <none> 5432/TCP 5m34s
awx-service NodePort 10.109.227.115 <none> 80:30771/TCP 5m6s
|
E’ possibile monitorare l’installazione di AWX dal pod con il comando:
0 |
kubectl logs awx-operator-controller-manager-7dbdd45fd7-8fx9h -n ansible-awx -f
|
NOTA BENE: al posto di 7dbdd45fd7-8fx9h inserire il valore relativo alla propria installazione
Per accedere alla dashboard dal sistema Ubuntu stesso, eseguire il seguente comando per ottenere l’URL della dashboard:
0 |
minikube service awx-service --url -n ansible-awx
|
Dovremmo vedere il seguente output:
0 |
http://192.168.49.2:30771
|
Nel caso in cui si vuole accedere dall’esterno del sistema Ubuntu, eseguire il seguente comando kubectl:
0 |
kubectl port-forward service/awx-service -n ansible-awx --address 0.0.0.0 10550:80
|
Dovremmo vedere il seguente output:
0 |
Forwarding from 0.0.0.0:10550 -> 8052
|
A questo punto aprire da un qualsiasi browser il seguente link:
http://IP_SERVER_ANSIBLE:10550
Se è andato tutto a buon fine dovremmo vedere la schermata di login di Ansible AWX
Per recuperare la password dell’utente amministratore, eseguire il seguente comando kubectl:
0 |
kubectl get secret awx-admin-password -o jsonpath="{.data.password}" -n ansible-awx | base64 --decode; echo
|
Copiare la stringa che compare dopo aver eseguito il comando:
0 |
MoiBMIJoNFoC3xUJQC3BKW1BGjvdPpfp |
Quindi ritornare al browser ed inserire come utente admin e come password la stringa copiata. Cliccare Login
Se è andato tutto a buon fine dovremmo accedere alla Dashboard di Ansible AWX come mostrato nell’immagine sovrastante
Sono Raffaele Chiatto, un appassionato di informatica a 360 gradi.
Tutto è iniziato nel 1996, quando ho scoperto il mondo dell'informatica grazie a Windows 95, e da quel momento non ho più smesso di esplorare e imparare.
Ogni giorno mi dedico con curiosità e passione a scoprire le nuove frontiere di questo settore in continua evoluzione.
0 Comments