Como provisionar automaticamente uma nova instância do Looker

Outra opção é provisionar automaticamente uma chave de licença, um URL de host, uma conta de usuário inicial e uma chave de licença na inicialização de uma nova instância hospedada pelo cliente do Looker.

Provisionamento automático de uma nova instância com um usuário de e-mail

Na primeira inicialização, o Looker verifica se há um arquivo chamado provision.yml no diretório looker, onde o arquivo JAR reside. O formato desse arquivo é o seguinte:

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"

Se a instância do Looker for nova e ainda não tiver sido configurada, ela será provisionada com a chave de licença e uma conta de usuário com as informações fornecidas.

Se o Looker já tiver sido provisionado, os valores da chave de licença e do URL do host vão substituir qualquer chave de licença e URL do host definidos no momento. As informações do usuário serão ignoradas. Isso é útil para atualizar uma instância de teste do Looker com uma nova cópia do banco de dados interno de uma instância de produção, mantendo uma chave de licença e um URL separados para o servidor de teste.

Provisionamento automático de uma nova instância com um usuário da API

Na inicialização de uma nova instância do Looker, você pode provisionar um usuário inicial da API de forma programática. É possível provisionar um usuário da API OU um usuário de e-mail, mas o Looker não permite o provisionamento de um usuário de API e de um e-mail ao mesmo tempo.

Como gerar credenciais de API

Para provisionar um usuário da API, gere um ID e uma chave secreta do cliente, que o Looker vai ler e salvar no banco de dados. Os requisitos dessas credenciais são:

  • O ID do cliente deve ter 20 caracteres.
  • A chave secreta do cliente precisa ter 24 caracteres.
  • As duas strings precisam ser incluídas no corpo de uma solicitação POST. Portanto, é recomendável usar apenas caracteres alfanuméricos.

Por exemplo, o Looker usa o seguinte código para gerar essas credenciais de forma programática:

require 'securerandom'

TOKEN_SYMBOLS = "bcdfghjkmnpqrstvwxyzBCDFGHJKMNPQRSTVWXYZ23456789".freeze

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

Esse código evita caracteres ambíguos para tornar as strings menos propensas a erros.

Também é possível gerar strings adequadas usando o comando openssl:

openssl rand -hex 10

O número no final do comando openssl é o número de bytes na string. Portanto, use 10 para o ID do cliente e 12 para a chave secreta do cliente.

Como provisionar o usuário da API

Para provisionar um usuário da API na inicialização, verifique se você tem um arquivo provision.yml que inclui sua chave de licença e o URL do host no diretório looker. Exemplo:

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

Crie um arquivo chamado api-provision.yml com as permissões 0600 no diretório looker que inclua as informações do usuário da API. Exemplo:

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

Recomendamos que você armazene essas credenciais em um Secret Manager fora desse arquivo, já que esse arquivo vai ser removido na inicialização assim que a instância do Looker tiver processado e criado o usuário no banco de dados.

Na inicialização, se a instância estiver vazia e nenhum usuário estiver presente, o Looker criará um usuário da API Admin do Looker com essas credenciais e removerá o arquivo api-provision.yml do disco.

Você terá 30 minutos para usar essas credenciais e fazer provisionamento adicional antes que elas sejam removidas do banco de dados interno e não possam mais ser usadas. A remoção dessas credenciais iniciais evita a criação de um backdoor de longa duração no aplicativo e mantém o caso de uso pretendido estritamente no provisionamento.