Instellen van de Automation Controller (AWX) met Ansible
Categories:
8 minuten leestijd , 9 minuten voorziening provision
Projecten: c2platform/ansible
, c2platform.mw
,
c2platform.mgmt
,
ansible-execution-environment
Deze handleiding biedt stapsgewijze instructies voor het maken van een AWX instantie op de c2d-awx1
node
met behulp van de AWX Operator Helm Chart
en Ansible. Hier volgt een overzicht van het
proces:
- Kubernetes Cluster Configuratie: Ansible leidt de configuratie van een
Kubernetes-instantie met behulp van de
microk8s
rol binnen dec2platform.mw
collectie. - Kubernetes Configuratie: Met het Kubernetes-cluster ingesteld, gaat
Ansible verder met de configuratie ervan, gebruikmakend van de
kubernetes
rol uit dezelfdec2platform.mw
collectie. - AWX Implementatie: De implementatie van AWX op het Kubernetes-cluster wordt gecoördineerd met behulp van de AWX Operator Helm Chart. Ansible beheert naadloos dit implementatieproces.
- AWX Aanpassing: Om de installatie te voltooien, wordt de
c2platform.mgmt
collectie’sawx
rol gebruikt om de AWX-instantie naar de gewenste configuratie aan te passen.
Na succesvolle voltooiing van deze stappen, krijg je toegang tot de AWX interface door de volgende URL te bezoeken: https://awx.c2platform.org .
Vereisten
Maak de reverse en forward proxy c2d-rproxy1
.
c2
unset PLAY # zorg ervoor dat alle plays draaien
vagrant up c2d-rproxy1
Voor meer informatie over de verschillende rollen die c2d-rproxy1
in dit
project vervult:
- Instellen Reverse Proxy en CA server
- Instellen SOCKS proxy
- Beheer van Server Certificaten als een Certificaat Autoriteit
- DNS instellen voor Kubernetes
Installatie
Om de Kubernetes-instantie te maken en de AWX-instantie te implementeren, voer je het volgende commando uit:
vagrant up c2d-awx1
Waarschuwing!
AWX kan enige tijd nodig hebben om beschikbaar te worden, wat mogelijk kan leiden tot een Ansible-fout tijdens stap 4, AWX Aanpassing. Mocht je een fout ondervinden, controleer dan of je toegang hebt tot de AWX webinterface. Zodra je het inlogscherm ziet, kun je het provisieproces opnieuw uitvoeren met het volgende commando:
vagrant provision c2d-awx1
Verificatie
Om je AWX-instantie te verifiëren, volg je deze stappen:
Verbinden
Als je kubectl
op je host hebt geïnstalleerd, kun je ook toegang krijgen tot
het cluster door de volgende commando’s uit te voeren:
export BOX=c2d-awx1
sudo snap install kubectl --classic
vagrant ssh $BOX -c "microk8s config" > ~/.kube/config
kubectl get all --all-namespaces
Laat zien
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system pod/hostpath-provisioner-766849dd9d-jdd5b 1/1 Running 0 17m
kube-system pod/calico-node-vf72q 1/1 Running 0 17m
kube-system pod/coredns-d489fb88-8xpwb 1/1 Running 0 17m
kube-system pod/calico-kube-controllers-d8b9b6478-2dj4s 1/1 Running 0 17m
container-registry pod/registry-6674bf676f-twgpz 1/1 Running 0 17m
kube-system pod/dashboard-metrics-scraper-64bcc67c9c-5hbvz 1/1 Running 0 15m
kube-system pod/kubernetes-dashboard-74b66d7f9c-8hqgf 1/1 Running 0 15m
metallb-system pod/controller-56c4696b5-w2xbs 1/1 Running 0 15m
metallb-system pod/speaker-pkkpk 1/1 Running 0 15m
cert-manager pod/cert-manager-cainjector-7985fb445b-jdkk6 1/1 Running 0 15m
cert-manager pod/cert-manager-655bf9748f-6jxbg 1/1 Running 0 15m
kube-system pod/metrics-server-6b6844c455-7564v 1/1 Running 0 15m
cert-manager pod/cert-manager-webhook-6dc9656f89-br48w 1/1 Running 0 15m
awx pod/awx-operator-controller-manager-699d64766-ltpxh 2/2 Running 0 15m
awx pod/awx-postgres-15-0 1/1 Running 0 14m
awx pod/awx-web-6cb68b86cc-dp8tr 3/3 Running 0 14m
awx pod/awx-migration-24.4.0-cljp4 0/1 Completed 0 13m
awx pod/awx-task-5c96c47f86-r7vn7 4/4 Running 0 14m
NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
default service/kubernetes ClusterIP 10.152.183.1 <none> 443/TCP 17m
container-registry service/registry NodePort 10.152.183.38 <none> 5000:32000/TCP 17m
kube-system service/kube-dns ClusterIP 10.152.183.10 <none> 53/UDP,53/TCP,9153/TCP 17m
kube-system service/metrics-server ClusterIP 10.152.183.147 <none> 443/TCP 16m
kube-system service/kubernetes-dashboard ClusterIP 10.152.183.175 <none> 443/TCP 16m
kube-system service/dashboard-metrics-scraper ClusterIP 10.152.183.61 <none> 8000/TCP 16m
metallb-system service/webhook-service ClusterIP 10.152.183.124 <none> 443/TCP 16m
cert-manager service/cert-manager ClusterIP 10.152.183.51 <none> 9402/TCP 15m
cert-manager service/cert-manager-webhook ClusterIP 10.152.183.177 <none> 443/TCP 15m
kube-system service/dashboard-lb LoadBalancer 10.152.183.133 1.1.4.16 443:32189/TCP 15m
awx service/awx-operator-controller-manager-metrics-service ClusterIP 10.152.183.195 <none> 8443/TCP 15m
awx service/awx-postgres-15 ClusterIP None <none> 5432/TCP 14m
awx service/awx-service ClusterIP 10.152.183.88 <none> 80/TCP 14m
awx service/awx-service-lb LoadBalancer 10.152.183.29 1.1.4.17 8052:32477/TCP 11m
NAMESPACE NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
kube-system daemonset.apps/calico-node 1 1 1 1 1 kubernetes.io/os=linux 17m
metallb-system daemonset.apps/speaker 1 1 1 1 1 kubernetes.io/os=linux 16m
NAMESPACE NAME READY UP-TO-DATE AVAILABLE AGE
kube-system deployment.apps/calico-kube-controllers 1/1 1 1 17m
kube-system deployment.apps/hostpath-provisioner 1/1 1 1 17m
kube-system deployment.apps/coredns 1/1 1 1 17m
container-registry deployment.apps/registry 1/1 1 1 17m
kube-system deployment.apps/dashboard-metrics-scraper 1/1 1 1 16m
kube-system deployment.apps/kubernetes-dashboard 1/1 1 1 16m
metallb-system deployment.apps/controller 1/1 1 1 16m
cert-manager deployment.apps/cert-manager-cainjector 1/1 1 1 15m
cert-manager deployment.apps/cert-manager 1/1 1 1 15m
kube-system deployment.apps/metrics-server 1/1 1 1 16m
cert-manager deployment.apps/cert-manager-webhook 1/1 1 1 15m
awx deployment.apps/awx-operator-controller-manager 1/1 1 1 15m
awx deployment.apps/awx-web 1/1 1 1 14m
awx deployment.apps/awx-task 1/1 1 1 14m
NAMESPACE NAME DESIRED CURRENT READY AGE
kube-system replicaset.apps/calico-kube-controllers-d8b9b6478 1 1 1 17m
kube-system replicaset.apps/hostpath-provisioner-766849dd9d 1 1 1 17m
kube-system replicaset.apps/coredns-d489fb88 1 1 1 17m
container-registry replicaset.apps/registry-6674bf676f 1 1 1 17m
kube-system replicaset.apps/dashboard-metrics-scraper-64bcc67c9c 1 1 1 15m
kube-system replicaset.apps/kubernetes-dashboard-74b66d7f9c 1 1 1 15m
metallb-system replicaset.apps/controller-56c4696b5 1 1 1 15m
cert-manager replicaset.apps/cert-manager-cainjector-7985fb445b 1 1 1 15m
cert-manager replicaset.apps/cert-manager-655bf9748f 1 1 1 15m
kube-system replicaset.apps/metrics-server-6b6844c455 1 1 1 15m
cert-manager replicaset.apps/cert-manager-webhook-6dc9656f89 1 1 1 15m
awx replicaset.apps/awx-operator-controller-manager-699d64766 1 1 1 15m
awx replicaset.apps/awx-web-6cb68b86cc 1 1 1 14m
awx replicaset.apps/awx-task-5c96c47f86 1 1 1 14m
NAMESPACE NAME READY AGE
awx statefulset.apps/awx-postgres-15 1/1 14m
NAMESPACE NAME COMPLETIONS DURATION AGE
awx job.batch/awx-migration-24.4.0 1/1 102s 13m
Raadpleeg Verbinding maken met een Kubernetes Cluster voor meer informatie.
Kubernetes Dashboard
- Toegang tot het Kubernetes Dashboard door naar https://dashboard-awx.c2platform.org/
te
gaan en in te loggen met een token. Verkrijg de token door het commando
kubectl
hieronder binnen dec2d-awx1
node uit te voeren. - Eenmaal ingelogd, navigeer naar de awx
namespace. Controleer of de
awx-web
enawx-task
pods zonder fouten draaien.
kubectl -n kube-system describe secret microk8s-dashboard-token
Voor meer informatie over het verkrijgen van de token en het instellen van het Kubernetes Dashboard, raadpleeg de Kubernetes Dashboard Instellen handleiding.
AWX
- Om toegang te krijgen tot de AWX webinterface, ga naar https://awx.c2platform.org
. Gebruik het
admin
account met het wachtwoordsecret
om in te loggen. - Eenmaal ingelogd, navigeer naar de Templates sectie.
- Van daaruit kun je verschillende plays starten, zoals de reverse proxy play
c2-reverse-proxy
of een van de AWX playsc2-awx
ofc2-awx-config
.
Review
Om een beter begrip te krijgen van hoe de AWX-instantie wordt gecreëerd met Ansible, kun je het volgende bekijken:
In het Ansible playbook project c2platform/ansible
:
Vagrantfile.yml
: Dit bestand configureert dec2d-awx1
node met demgmt/awx
playbook. Dit bestand wordt gelezen in deVagrantfile
.hosts-dev.ini
: Het inventarisbestand wijst dec2d-awx1
node toe aan deawx-new
Ansible groep enlocalhost
aan deawx_config
Ansible groep.
AWX Play
plays/mgmt/awx.yml
: Deze playbook stelt Ansible-rollen in voor deawx-new
Ansible groep.group_vars/awx_new/main.yml
: Dit bestand bevat de hoofdconfiguratie voor Kubernetes, inclusief het inschakelen van add-ons zoalsdashboard
enmetallb
load balancer.group_vars/awx_new/files.yml
: Hier kun je de configuratie vinden voor het creëren van de AWX Helm Chart in het/home/vagrant/awx-values.yml
bestand.group_vars/awx_new/kubernetes.yml
: Dit bestand bevat de configuratie om het Kubernetes-cluster in te stellen en AWX erop te installeren.group_vars/awx_new/awx.yml
: Dit bestand bevat de configuratie om AWX te configureren. Het stelt een organisatie, referenties, een execution environment en een job template in om de reverse proxy in te richten.
AWX Configuratie Play
De AWX Configuratie Play is verantwoordelijk voor het beheren van AWX met
behulp van AWX zelf. Het is bedoeld om binnen de AWX-omgeving uitgevoerd te
worden. In tegenstelling tot de standaard AWX Play, gebruikt deze
play minder rollen – specifiek, het omvat alleen c2platform.core.secrets
en
c2platform.mgmt.awx
. De scope is beperkt tot het configureren van AWX, en het
gaat ervan uit dat de AWX-instantie al is opgezet. Deze play dient als een
illustratief voorbeeld van hoe AWX autonoom zijn eigen opzet kan beheren.
plays/mgmt/awx_config.yml
: Deze playbook stelt de Ansible-rollen vast die nodig zijn voor deawx-config
play.group_vars/awx_config/main.yml
: Dit bestand bevat de configuratie-instellingen voor AWX-aanpassing. Het is een directe kopie vangroup_vars/awx_new/awx.yml
. Opmerking: In een reële situatie zou het kopiëren van configuratiecode zoals deze niet worden aanbevolen.
Binnen het Ansible collectie project c2platform.mw:
- De
c2platform.mw.microk8s
Ansible rol. - De
c2platform.mw.kubernetes
Ansible rol.
Binnen het Ansible collectie project c2platform.mgmt:
- De
c2platform.mgmt.awx
Ansible rol.
AWX Configuratie
Binnen de AWX-instantie via https://awx.c2platform.org
, kun je alle componenten onderzoeken die zijn
gegenereerd op basis van de configuraties gevonden in
group_vars/awx_new/awx.yml
of group_vars/awx_config/main.yml
. Bijvoorbeeld:
- Job Templates zoals
c2-awx
,c2-awx-config
,c2-reverse-proxy
. - Referenties zoals
c2-machine
enc2-vault
. - Het Project genaamd
c2d
en de Inventaris genaamdc2
.
Handmatige installatie
Als je de voorkeur geeft aan een handmatige installatie van AWX, kun je de
c2d-awx1
node voorzien zonder de c2platform.mw.kubernetes
Ansible rol.
Hiervoor schakel je de c2platform.mw.kubernetes
rol uit of verwijder je deze
in plays/mgmt/awx.yml
. Door het commando vagrant up c2d-awx1
uit te voeren,
wordt een “lege” Kubernetes-cluster gemaakt. Daarna kun je de documentatie
volgen om AWX in te stellen.
Hier zijn de relevante bronnen voor het handmatige installatieproces:
Bekende problemen
Kustomize
Standaard wordt de AWX-instantie gecreëerd met behulp van Kustomize . Raadpleeg de ansible/awx-operator documentatie voor meer details.
Er is echter een probleem bij het gebruik van een Kubernetes-cluster op basis
van MicroK8s. Het commando kubectl apply
zal falen met het volgende bericht:
evalsymlink failure on ‘/home/vagrant/github.com/ansible/awx-operator/config/default?ref=2.2.1’
vagrant@c2d-awx1:~$ kubectl apply -k .
error: accumulating resources: accumulation err='accumulating resources from 'github.com/ansible/awx-operator/config/default?ref=2.2.1': evalsymlink failure on '/home/vagrant/github.com/ansible/awx-operator/config/default?ref=2.2.1' : lstat /home/vagrant/github.com: no such file or directory': git cmd = '/snap/microk8s/5392/usr/bin/git fetch --depth=1 origin 2.2.1': exit status 128
Om dit bericht te reproduceren, maak een bestand
/home/vagrant/kustomization.yaml
met de onderstaande inhoud en voer het
commando kubectl apply -k .
uit:
vagrant@c2d-awx1:~$ cat kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
images:
- name: quay.io/ansible/awx-operator
newTag: 2.2.1
kind: Kustomization
namespace: awx
resources:
- github.com/ansible/awx-operator/config/default?ref=2.2.1
Als gevolg van het falen van Kustomize , werd de Helm Chart optie gebruikt.
Links
- ansible/awx-operator: Een Ansible AWX operator voor Kubernetes gebouwd met Operator SDK en Ansible.
- Ansible Documentatie
- Vertrouwen van een aangepaste certificaatautoriteit - Ansible AWX Operator Documentatie
- Red Hat Communities of Practice
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.