Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:centos_linux_8_ansible_tower

Ansible Tower / AWX unter Cent OS Linux 8

Für die Verwaltung von Ansible steht als OpenSource Projekt Ansible AWX ( https://github.com/ansible/awx ) zur Verfügung , die gleiche Applikation mit Support von Red Hat als Ansible Tower (https://www.ansible.com/).

Nach dem Installation von Ansible ⇒ Ein Oracle Linux 8 Basis System für Ansible verwenden - eine Oracle Umgebung mit Ansible warten kann auch über Ansible die Verwaltungsoberfläche „Tower“ bzw. AWX installiert werden.

Unter Oracle Linux 8 läuft aber leider die Automatische Installation von Redhat nicht, evtl. würde es funktionieren, wenn man selber die Versionsabfragen auf centos_8 umbiegt…

Problem unter Oracle Linux 8:

TASK [fail for unsupported distribution] ***************************************************************************************************
fatal: [localhost]: FAILED! => {"changed": false, "msg": "OracleLinux 8.4 is not a supported OS for an Ansible Automation Platform installation. Supported OSes include Red Hat Enterprise Linux 7.7+ and CentOS 7.7+."}

Ansible AWX hat sich nach einem ersten Test als recht umfangreich in der Installation herausgestellt, es ist doch so einiges an Basis Knowhow bzgl. Kubes etc. notwendig, daher für die Demo Umgebung auf CenOS8 umgestiegen.

Aber inzwischen gibt es AWX auch direkt von Oracle ⇒ Oracle Linux Automation Manager OLAM (aka “Oracle Ansible Tower”) unter Oracle Linux 8


CentOS Basis System bereitstellen

Ansible bereitstellen

  • EPL Repository enablen
  • ansible installieren
dnf update
 
dnf search epel
dnf install epel-release.noarch
 
 
dnf search ansible
 
dnf install ansible ansible-doc vim-ansible

Ansible Tower installieren

Ablauf:

Download und entpacken

Auf der Zielmaschine als root:

dnf install wget
 
cd 
wget https://releases.ansible.com/ansible-tower/setup/ansible-tower-setup-latest.tar.gz
 
#entpacken
tar xvzf ansible-tower-setup-latest.tar.gz

Setup Konfigurieren

cd ansible-tower-setup-3.8.3-1/
 
vi inventory
 
#Für alle Password Variablen ein Password angeben 

Setup starten

./setup

Anmelden und 60 Tage Demo Lizenz auswählen

Nach der Installation über die IP Adresse der Maschine in Ansible Tower mit dem zuvor vergebenen Admin Passwort anmelden.

Der Versuch über den RedHat Account nun das Demo zu aktiveren, schlägt fehl:

Problem:

Error Fetching Licenses
ERROR: Unable to open certificate bundle /etc/rhsm/ca/redhat-uep.pem. Check that Ansible Tower is running on Red Hat Enterprise Linux.

Siehe dazu https://access.redhat.com/solutions/4996571

Unter CentOS muss die Lizenz importiert werden!

Diese auf dem Portal wie im Link https://docs.ansible.com/ansible-tower/latest/html/userguide/import_license.html#obtain-sub-manifest beschrieben anlegen und herunterladen, die Lizenz Seite neu laden, darauf achten das kein User/Password angeben ist und mit „Browse“ die Lizenz Datei laden und mit „Submit“ installieren.

Nun ist die Tower Umgebung bereit.



Ansible Tower Cli installieren

Um die RestAPI von Tower für das Skripting auch per Console zu verwenden, ist das CLI hilfreich.

siehe ⇒ https://docs.ansible.com/ansible-tower/latest/html/towercli/usage.html#installation

# als root
yum-config-manager --add-repo https://releases.ansible.com/ansible-tower/cli/ansible-tower-cli-centos7.repo
 
# install
yum install ansible-tower-cli

Erster Test mit:

awx --conf.host https://10.10.10.10  --conf.username admin --conf.password Secret1 --conf.insecure  inventory list

Anwendung⇒https://docs.ansible.com/ansible-tower/latest/html/towercli/examples.html


Job Parameter einstellen

Damit Playbooks auch vom den Ausgaben in der richtigen Zeitzone laufen (Default ist immer UTC) diese für den Job setzen https://access.redhat.com/solutions/4124131

unter Settings/Job/EXTRA ENVIRONMENT Variables

{
"TZ": "Europe/Berlin"
}

Start mit Ansible Tower

Hosts importieren

über „ awx-manage“ kann auch eine Liste von Hosts inkl. der Gruppen Zuordnung importiert werden.

Zuvor ein Inventory in Tower anlegen, in dieses Inventory werden die Hosts dann importiert.

awx-manage --version
 
awx-manage inventory_import --inventory-name GPI_CONSULT --source inventory

Ruf man das auch einem Playbook auf das auch „group_vars“ und „host_vars“ enthält werden diese mit importiert!

Eine Host Manuell mit Beschreibung anlegen:

awx hosts create [-h] --name TEXT [--description TEXT] --inventory ID [--enabled BOOLEAN] [--instance_id TEXT] [--variables JSON/YAML]

Credential für den Host Zugriff anlegen

Nach dem inistalisieren des Hosts mit dem Ansible User soll auf diesen nur noch mit dem Key des Ansible Users zugeriffen werden, nicht mit einem Passwort.

Dazu ein Machine Credential mit dem Usernamen des Ansible Users auf der Umgebung mit mit dem Private Key des Ansible Users hinterlegen.



Anmerkungen zu Ansible AWX

Die Opensource Variante ist etwas komplexter in der Installation und wird über den AWX Operator ⇒ https://github.com/ansible/awx-operator durchgeführt.

Dazu wird aber eine MiniKube Umgebung benötigt https://minikube.sigs.k8s.io/docs/start/

Installation Kube:

dnf install docker
 
 
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-latest.x86_64.rpm
 
rpm -Uvh minikube-latest.x86_64.rpm
 
 
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
 
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Start eines Kube:

su - ansible
 
minikube start --addons=ingress --cpus=4 --cni=flannel --install-addons=true --kubernetes-version=stable --memory=2g
 
 
kubectl get nodes
NAME       STATUS   ROLES                  AGE   VERSION
minikube   Ready    control-plane,master   11m   v1.20.7
 
 
#Mit der letzten Release Nummer
 
kubectl apply -f https://raw.githubusercontent.com/ansible/awx-operator/0.10.0/deploy/awx-operator.yaml
customresourcedefinition.apiextensions.k8s.io/awxs.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxbackups.awx.ansible.com created
customresourcedefinition.apiextensions.k8s.io/awxrestores.awx.ansible.com created
clusterrole.rbac.authorization.k8s.io/awx-operator created
clusterrolebinding.rbac.authorization.k8s.io/awx-operator created
serviceaccount/awx-operator created
deployment.apps/awx-operator created
 
 
kubectl get pods
NAME                            READY   STATUS    RESTARTS   AGE
awx-operator-5dd757f594-9qbm7   1/1     Running   0          81s
 
vi awx-demo.yml
 
---
apiVersion: awx.ansible.com/v1beta1
kind: AWX
metadata:
  name: awx-demo
spec:
  service_type: nodeport
  ingress_type: none
  hostname: awx01.pipperr.local
 
 
kubectl apply -f awx-demo.yml
awx.awx.ansible.com/awx-demo created
 
kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"
NAME                  READY   STATUS              RESTARTS   AGE
awx-demo-postgres-0   0/1     ContainerCreating   0          10s
 
kubectl get pods -l "app.kubernetes.io/managed-by=awx-operator"
NAME                        READY   STATUS    RESTARTS   AGE
awx-demo-7744b86597-s2x4w   4/4     Running   0          2m52s
awx-demo-postgres-0         1/1     Running   0          3m11s

Zugriff:

minikube service list
|---------------|------------------------------------|--------------|---------------------------|
|   NAMESPACE   |                NAME                | TARGET PORT  |            URL            |
|---------------|------------------------------------|--------------|---------------------------|
| default       | awx-demo-postgres                  | No node port |
| default       | awx-demo-service                   | http/80      | http://192.168.49.2:32390 |
| default       | awx-operator-metrics               | No node port |
| default       | kubernetes                         | No node port |
| ingress-nginx | ingress-nginx-controller           | http/80      | http://192.168.49.2:30491 |
|               |                                    | https/443    | http://192.168.49.2:31215 |
| ingress-nginx | ingress-nginx-controller-admission | No node port |
| kube-system   | kube-dns                           | No node port |
|---------------|------------------------------------|--------------|---------------------------|

Im Detail siehe auch ⇒ https://asciinema.org/a/416946

Nur wie kann ich jetzt von außen auf den Kub auf eine VM zugreifen etc. .. daher erstmal an dieser Stelle abgebrochen.



Quellen

Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
"Autor: Gunther Pipperr"
linux/centos_linux_8_ansible_tower.txt · Zuletzt geändert: 2021/10/28 09:35 von gpipperr