Awx-operator: awx stellt bereit, erstellt aber nie einen Benutzer

Erstellt am 11. Nov. 2020  ·  12Kommentare  ·  Quelle: ansible/awx-operator

awx-Operator von git (f4b619a185ac0cb5736b229c61e56ed91237d16a)
awx 15.0.1
Kubernetes 1.18.8 (AKS)

Wenn ich eine awxs-Ressource erstelle, erstellt der Operator die Postgres-Datenbank und den awx-Pod, aber der Aufgabencontainer scheint die Datenbank nicht zu laden (auch nach mehreren Stunden erhalte ich immer noch Fehler wie:

2020-11-11 09:38:10,649 WARNING  awx.main.dispatch.periodic periodic beat started
Traceback (most recent call last):
  File "/var/lib/awx/venv/awx/lib/python3.6/site-packages/django/db/backends/utils.py", line 84, in _execute
    return self.cursor.execute(sql, params)
psycopg2.errors.UndefinedColumn: column main_instance.ip_address does not exist
LINE 1: SELECT (1) AS "a" FROM "main_instance" WHERE ("main_instance...

Wenn ich in den Aufgabencontainer shell und die Migration manuell ausführe, wird angezeigt, dass keine Migrationen ausstehen und eine Verbindung zur Datenbank hergestellt werden kann.

bash-4.4$ awx-manage migrate
Operations to perform:
  Apply all migrations: auth, conf, contenttypes, main, oauth2_provider, sessions, sites, social_django, sso, taggit
Running migrations:
  No migrations to apply.
bash-4.4$ awx-manage check_db
Database Version: PostgreSQL 10.14 (Debian 10.14-1.pgdg90+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516, 64-bit

Ich sehe keine Fehler (und sehr wenig) in den Protokollen der Aufgabencontainer bezüglich der Migration.

Komisch ist, dass dieselbe Konfiguration zuvor bei mir funktioniert hat, aber ich kann nicht sehen, wo ich sie beheben kann.

Hilfreichster Kommentar

Erstes Feedback – die README-Datei von 0.6.0 sagt, dass das Bereitstellungsmanifest aus dem Entwicklungszweig verwendet werden soll. Sieht so aus, als hätte sich das Manifest seit dem Tagging von 0.6.0 erheblich geändert (neue apiVersion und andere Dinge).

Die Verwendung des 0.6.0-Manifests mit der 0.6.0-README-Datei hat mir jedoch eine funktionierende awx-Instanz mit einem mir bekannten Passwort gebracht!

Die Entwickler- README, die die Standardansicht in github ist, spricht über die Erstellung von Geheimnissen, die 0.6.0 jedoch nicht. Vielleicht sollte es einen Hinweis geben, um sicherzustellen, dass die Leute einen passenden Satz von README, Manifest und Git-Zweig verwenden :-) Ziemlich sicher ist das, was @BonzTM oben sieht.

Alle 12 Kommentare

Eine Sache, die mir aufgefallen ist, ist, dass der Aufgabencontainer vor der Datenbank erscheint. Ist das Startskript intelligent genug, um zu warten?

NAME                   READY   STATUS              RESTARTS   AGE
awx-69bf447555-9gr92   3/3     Running             0          20s
awx-postgres-0         0/1     ContainerCreating   0          27s

Wenn ich jetzt etwas mehr über die Reihenfolge der Dinge verstehe, kann ich sehen, dass die Datenbank tatsächlich vom Operator erstellt wird, aber dass am Ende des Prozesses die Tabelle auth_user leer ist. Ich definiere tower_admin_user und tower_admin_password in meinem awx-Objekt.

Die einzige Erwähnung von tower_admin_user, die ich finden kann, befindet sich in roles/tasks/initialize.yml, was so aussieht, als ob es _früher_ von main.yml aufgenommen wurde, aber seit dieser "Lint-Bereinigung" nicht mehr: https://github.com/ ansible/awx-operator/commit/267741550f3de75a576b7feced0b7b8abf660a93

Nachdem ich die Include-Zeile wieder auskommentiert habe, erhalte ich einen Benutzer! Aber nur manchmal. Es scheint, dass der Operator nicht wirklich wartet oder prüft, ob die Datenbank verfügbar ist, bevor er versucht, die Migrationen auszuführen:

django.db.utils.OperationalError: could not translate host name \"awx-postgres\" to address: Name or service not known"

Um sicherzustellen, dass Postgres tatsächlich gestartet wurde, habe ich am Ende eine zusätzliche Aufgabe zu role/awx-operator/main.yml hinzugefügt, bevor "Überprüfe, ob die Datenbank gefüllt ist":

- name: Verify database is available
  community.kubernetes.k8s_exec:
     namespace: "{{ meta.namespace }}"
     pod: "{{ tower_pod_name }}"
     container: "{{ meta.name }}-task"
     command: >-
       bash -c "awx-manage check_db"
  register: database_avail_check
  retries: 60
  delay: 5
  ignore_errors: true
  until: "'Database Version' in database_avail_check.stdout"

Hey @howardjones hast du dieses Problem mit der neuesten Version immer noch?

Ich habe 0.6 noch nicht ausprobiert - ich verwende derzeit meinen eigenen "0.55"-Build. Ich werde bald testen, damit ich aufhören kann, meinen eigenen Fork zu verwalten!

Hi,
Ich habe das gleiche Problem, ich habe keinen Admin-Benutzer erstellt, mit und ohne tower_admin_user und tower_admin_password definiert. Getestet habe ich es am 0.6.

Danke für den Kommentar.

  1. Macht es Ihnen etwas aus, eine spec Datei zu teilen, die ich zur Reproduktion beantragen kann?

  2. Was liefert kubectl logs -f deployments/awx-operator -n <yournamespace> als Ausgabe für die folgende Aufgabe: https://github.com/ansible/awx-operator/blob/devel/roles/installer/tasks/initialize.yml#L16

Hinweis: auf devel (gilt nicht für 0.6.0 ) wird der tower_admin_password nicht mehr verwendet, für die ordnungsgemäße Erstellung des Addmin-Benutzerkontos kann man sich auf die README https:/ beziehen.

Auch ich konnte mich in 0.60 nicht authentifizieren. Für mich wurde kein Geheimnis erstellt, und keine Kombination aus der manuellen Erstellung eines Geheimnisses, tower_admin_password oder tower_admin_password_secret würde mich einbringen.

Protokolle zeigten, dass die Initialisierung der Benutzeraufgabe lief, aber keine Ausgabe.

Ich habe mich nicht in die DB eingeloggt, um weitere Fehler zu beheben. Ich bin gerade in den Aufgabencontainer gegangen und habe über cli einen zweiten Superbenutzer erstellt.

echo "from django.contrib.auth.models import User; User.objects.create_superuser('admin2', '[email protected]', 'longpassword')" | awx-manage shell

Erstes Feedback – die README-Datei von 0.6.0 sagt, dass das Bereitstellungsmanifest aus dem Entwicklungszweig verwendet werden soll. Sieht so aus, als hätte sich das Manifest seit dem Tagging von 0.6.0 erheblich geändert (neue apiVersion und andere Dinge).

Die Verwendung des 0.6.0-Manifests mit der 0.6.0-README-Datei hat mir jedoch eine funktionierende awx-Instanz mit einem mir bekannten Passwort gebracht!

Die Entwickler- README, die die Standardansicht in github ist, spricht über die Erstellung von Geheimnissen, die 0.6.0 jedoch nicht. Vielleicht sollte es einen Hinweis geben, um sicherzustellen, dass die Leute einen passenden Satz von README, Manifest und Git-Zweig verwenden :-) Ziemlich sicher ist das, was @BonzTM oben sieht.

@howardjones ja, andere Community-Mitglieder wurden davon gebissen.

Es ist geplant, https://github.com/ansible/awx-operator/issues/124 zu adressieren, also sollte zumindest das bereitgestellte Manifest immer auf Augenhöhe sein (und auf den tatsächlichen richtigen Operator verweisen, der mit devel übereinstimmt). ) - Auf diese Weise sollten solche Fehlanpassungen nicht mehr vorkommen.

Ich werde dieses Problem schließen, wenn das Root-Problem behoben ist, und versuchen, das oben erwähnte Problem zu beheben. Vielen Dank für die Meldung des ursprünglichen Problems!

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen