Automatische Bereitstellung einer neuen Looker-Instanz

Optional können Sie beim Starten einer neuen vom Kunden gehosteten Looker-Instanz die Instanz automatisch mit einem Lizenzschlüssel, einer Host-URL und einem ersten Nutzerkonto bereitstellen.

Neue Instanz automatisch mit einem E-Mail-Nutzer bereitstellen

Beim ersten Start sucht Looker im Verzeichnis looker, in dem sich die JAR-Datei befindet, nach einer Datei namens provision.yml. Die Datei hat folgendes Format:

license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"
user:
  first_name: "Ariel"
  last_name: "Q"
  email: "arielq@altostrat.com"
  password: "password123"

Wenn die Looker-Instanz brandneu ist und noch nicht eingerichtet wurde, wird sie mit dem angegebenen Lizenzschlüssel und einem Nutzerkonto mit den angegebenen Informationen bereitgestellt.

Wenn Looker bereits bereitgestellt wurde, werden die Werte für den Lizenzschlüssel und die Host-URL überschrieben. Die Nutzerinformationen werden ignoriert. Dies ist nützlich, um eine Staging-Instanz von Looker mit einer frischen Kopie der internen Datenbank einer Produktionsinstanz zu aktualisieren und dabei einen separaten Lizenzschlüssel und eine separate URL für den Staging-Server beizubehalten.

Neue Instanz automatisch mit einem API-Nutzer bereitstellen

Beim Starten einer neuen Looker-Instanz können Sie einen ersten API-Nutzer programmatisch bereitstellen. Sie können einen API-Nutzer ODER einen E-Mail-Nutzer bereitstellen. Looker unterstützt jedoch nicht die gleichzeitige Bereitstellung eines API-Nutzers und eines E-Mail-Nutzers.

API-Anmeldedaten generieren

Um einen API-Nutzer zu provisionieren, generieren Sie eine Client-ID und ein Client Secret, die von Looker gelesen und in der Datenbank gespeichert werden. Für diese Anmeldedaten gelten folgende Anforderungen:

  • Die Client-ID muss 20 Zeichen lang sein.
  • Das Client-Secret muss 24 Zeichen lang sein.
  • Beide Strings müssen in den Text einer POST-Anfrage aufgenommen werden können. Daher wird empfohlen, nur alphanumerische Zeichen zu verwenden.

In Looker werden diese Anmeldedaten beispielsweise mit dem folgenden Code programmatisch generiert:

require 'securerandom'

TOKEN_SYMBOLS = "bcdfghjkmnpqrstvwxyzBCDFGHJKMNPQRSTVWXYZ23456789".freeze

def generate_token(size)
  Array.new(size).map { TOKEN_SYMBOLS[SecureRandom.random_number(TOKEN_SYMBOLS.size)] }.join
end

In diesem Code werden mehrdeutige Zeichen vermieden, um die Strings weniger fehleranfällig zu machen.

Sie können geeignete Strings auch mit dem Befehl openssl generieren:

openssl rand -hex 10

Die Zahl am Ende des Befehls openssl ist die Anzahl der Byte im String. Verwenden Sie also 10 für die Client-ID und 12 für den Clientschlüssel.

API-Nutzer bereitstellen

Wenn Sie einen API-Nutzer beim Starten bereitstellen möchten, muss im Verzeichnis looker eine provision.yml-Datei mit Ihrem Lizenzschlüssel und Ihrer Host-URL vorhanden sein. Beispiel:

license_key: "1234-5678-ABCD-EFGH-IJKL"
host_url: "https://looker.mycompany.com"

Erstellen Sie im Verzeichnis looker eine Datei namens api-provision.yml mit den Berechtigungen 0600, die die API-Nutzerinformationen enthält. Beispiel:

user:
  first_name: "Ariel"
  last_name: "Q"
  client_id: "M9hZb8vRh9bSZzdPxw42"
  client_secret: "NMnqBVbHqPsPzTvbZk6xZfV3"

Wir empfehlen, diese Anmeldedaten außerhalb dieser Datei in einem Secret Manager zu speichern, da diese Datei beim Starten entfernt wird, sobald die Looker-Instanz den Nutzer verarbeitet und in der Datenbank erstellt hat.

Wenn die Instanz beim Starten leer ist und keine Nutzer vorhanden sind, erstellt Looker einen Looker Admin API-Nutzer mit diesen Anmeldedaten und entfernt die Datei api-provision.yml vom Laufwerk.

Sie haben dann 30 Minuten Zeit, um mit diesen Anmeldedaten eine zusätzliche Bereitstellung durchzuführen, bevor sie aus der internen Datenbank entfernt und nicht mehr verwendet werden können. Durch das Entfernen dieser ursprünglichen Anmeldedaten wird verhindert, dass eine langlebige Backdoor in die Anwendung erstellt wird, und der beabsichtigte Anwendungsfall wird auf die Bereitstellung beschränkt.