Apresentando StackQL – Gerencie seus serviços em nuvem e interaja com APIs usando SQL
No acelerado mundo digital, stacks de nuvem modernos se tornaram mais complexos, levando os usuários a aprender várias tecnologias e utilitários para gerenciá-los.
Cada provedor de nuvem oferece seu próprio conjunto de ferramentas, interfaces e APIs, resultando em uma experiência fragmentada, que agrava a curva de aprendizado e limita a eficiência.
StackQL foi criado para ajudar desenvolvedores a padronizar seus fluxos de trabalho em nuvem, introduzindo um ambiente unificado para o gerenciamento de recursos em nuvem.
Neste artigo, listaremos os benefícios do StackQL, exploraremos seus princípios de funcionamento, aprenderemos a configurá-lo e executar consultas práticas para ver como funciona na prática.
Veremos como os usuários podem navegar pelos serviços em nuvem, realizar operações CRUD e outras operações práticas na nuvem.
Agradecimentos à equipe StackQL por patrocinar este artigo.
O que é o StackQL e suas principais características
StackQL é uma estrutura baseada em SQL que permite aos usuários consultar, provisionar e gerenciar recursos em nuvem e SaaS usando sintaxe SQL familiar.
É um projeto de código aberto, não se esqueça de ⭐ seu repositório do GitHub se você gosta do projeto.
Os usuários podem começar facilmente com vários provedores de nuvem comumente usados, como Google Cloud, AWS, Microsoft Azure, Digital Ocean, entre muitos outros.
O StackQL suporta vários modos de uso, incluindo o shell interativo REPL, utilitário de linha de comando ou a execução de instruções StackQL por meio de um arquivo de entrada (arquivo IQL).
Pode ser utilizado em muitos cenários práticos, como realizar consultas ao vivo contra recursos em nuvem, fazer alterações de configuração, gerenciar a infraestrutura em nuvem e muito mais.
O StackQL está disponível para download para Windows, MacOS e Linux.
Explicando a hierarquia de recursos
O StackQL organiza os objetos em uma hierarquia estruturada, espelhando a estrutura interna dos provedores de serviços em nuvem.
Essa disposição permite que os usuários naveguem e gerenciem os recursos em nuvem de forma fácil e compreensível, usando consultas SQL familiares.
Veja os princípios operacionais do StackQL para o serviço Google Cloud Compute:
No nível superior, ele categoriza os recursos pelo provedor específico, como Google Cloud ou AWS.
Dentro de cada provedor, os recursos são ainda divididos em serviços disponíveis para cada provedor, como Computação, Armazenamento e Rede.
Cada serviço contém então tipos de recursos específicos, como Máquinas virtuais, Buckets de armazenamento, Rotas, Firewalls e Licenças.
Por fim, cada recurso tem métodos suportados que os usuários podem utilizar para criar, ler, atualizar, excluir e realizar outras operações, dependendo do recurso.
Instalando o StackQL na sua máquina
Primeiro, navegue até a seção de Downloads, onde os usuários podem encontrar detalhes sobre instalação, configuração e utilização em diferentes plataformas.
Para fins deste tutorial, usaremos o instalador MSI. Siga as instruções no assistente de configuração e a instalação não deve levar mais de um minuto.
Isso instalará o StackQL globalmente, para que possamos acessá-lo de qualquer lugar no sistema.
Após a conclusão da instalação, abra seu terminal e execute o comando stackql --version
. Se a instalação foi bem-sucedida, o terminal retornará a versão do StackQL.
Usaremos o shell do StackQL, o que significa que interagiremos com o StackQL e ele nos fornecerá as saídas diretamente do terminal.
Configurando o provedor Google Cloud
O StackQL atualmente suporta mais de 20 provedores comumente usados, incluindo Google Cloud, AWS, Microsoft Azure, Digital Ocean, GitHub e muitos outros.
Para fins deste tutorial, trabalharemos com o provedor Google Cloud.
Primeiro, você precisará criar uma conta no Google Cloud se ainda não tiver uma. Navegue até a página de inscrição do Google Cloud e você poderá criar uma gratuitamente.
Para começar, precisaremos criar credenciais de acesso, para que possamos autenticar sua identidade ao trabalhar com o Google Cloud pelo StackQL.
Faça login no Google Cloud e navegue até Contas de Serviço. Em seguida, vá para IAM e Admin.
Em seguida, selecione Contas de Serviço na barra lateral esquerda. Crie uma Conta de Serviço. Insira o nome e ID da conta, e adicione uma descrição.
Adicione uma nova chave e escolha JSON como o tipo de chave. Clique em Criar para baixar o arquivo JSON, que conterá todas as credenciais necessárias.
Agora volte para o terminal e defina as variáveis para o sistema para que possamos usá-las, certifique-se de substituir o caminho onde você salvou o arquivo JSON das credenciais.
Execute o comando de autenticação: stackql shell --auth="{ 'google': { 'type': 'service_account', 'credentialsfilepath': 'creds/sa-key.json'}}"
.
Se a autorização for bem-sucedida, você deve entrar na linha de comando interativa do StackQL, onde executaremos os comandos para trabalhar com o Google Cloud.
Para começar, precisaremos puxar a versão mais recente do provedor Google Cloud. Você pode fazer isso executando registry pull google;
.
Após a instalação bem-sucedida, você receberá a versão instalada do provedor e a versão atual dele, conforme mostrado abaixo:
Para referência futura, você pode ver todos os provedores suportados e suas versões mais recentes executando um comando registry list;
e ver os que estão atualmente instalados executando show providers;
.
Navegando nas APIs da nuvem para serviços
Primeiro, vamos dar uma olhada em como podemos usar facilmente o StackQL para nos familiarizar com o provedor. Isso nos ajudará a explorar sua estrutura e capacidades.
1. Descobrir serviços e recursos disponíveis
Um caso de uso comum para iniciantes seria SHOW
todos os serviços disponíveis em um provedor ou SHOW
todos os recursos disponíveis em um determinado serviço.
Por exemplo, podemos listar todos os serviços com nomes contendo “compute” e recursos com nomes que incluem “instances” no recurso de Computação.
SHOW SERVICES IN google LIKE '%compute%';
SHOW RESOURCES IN google.compute LIKE '%instances%';
Agora, verifique seu terminal e você deve ter uma tabela organizada dos resultados.
2. Mostrar atributos do recurso
Para uma descrição mais detalhada, os usuários podem utilizar a palavra-chave DESCRIBE
, que fornecerá mais informações, incluindo todos os campos de saída para um recurso específico.
Por exemplo, podemos exibir os campos disponíveis do recurso ou incluir uma palavra-chave adicional EXTENDED
em nossa consulta para obter metadados adicionais.
DESCRIBE google.compute.instances;
DESCRIBE EXTENDED google.compute.instances;
Se verificarmos o terminal, agora obtemos uma tabela de dados fácil de usar com informações mais detalhadas.
3. Mostrar métodos para o recurso
Se você gostaria de ver quais métodos poderíamos usar para realizar operações em cada recurso, também podemos receber os dados estruturados em formato de tabela para isso.
Nesse caso, executaríamos SHOW METHODS
e forneceríamos o recurso específico com o qual queremos trabalhar para exibir todos os métodos disponíveis para ele.
SHOW METHODS IN google.compute.instances;
Se verificarmos a saída recebida da consulta, veremos que as colunas nos forneceram o nome do método, o verbo SQL respectivo e os parâmetros necessários para a consulta.
Realizar operações CRUD na Nuvem
Graças ao poder do StackQL, podemos criar, ler, atualizar e excluir recursos nos provedores de nuvem mais comumente usados.
Agora, vamos tentar algumas operações práticas na nuvem.
Criar uma nova instância
Criar um novo recurso é tão simples quanto você faria em um banco de dados, criando uma nova linha de dados usando a familiar instrução INSERT
.
Vamos tentar criar um novo recurso de Disco do Google Compute Engine com um nome e tamanho específicos e dentro de um projeto e zona específicos.
INSERT INTO google.compute.disks (project, zone, name, sizeGb)
SELECT 'stackql-demo',
'europe-north1-a',
'disk-1', 16;
Para verificar o resultado, navegue até a seção de Discos e note que a nova instância de Disco foi criada com os parâmetros específicos que fornecemos.
Ler uma instância
Vamos também testar se é possível acessar o recurso recém-criado diretamente via StackQL.
Execute a instrução SELECT
para listar todos ou recursos específicos implantados dentro de um serviço particular. Vamos listar o tamanho do Disco do recurso que criamos anteriormente.
SELECT sizeGB FROM google.compute.disks
WHERE project = 'stackql-demo'
AND zone = 'europe-north1-a';
Note que o StackQL nos fornece a saída esperada, conforme desejamos.
Atualizar a instância
O StackQL também pode fazer alterações nos recursos existentes, tudo que você precisa saber é o recurso a ser atualizado e a propriedade a ser definida.
Vamos tentar executar a instrução UPDATE
para modificar o tamanho do Disco do Google Compute Engine e usar a instrução SET
para definir o novo valor de sua capacidade.
UPDATE google.compute.disks
SET sizeGb = 32
WHERE project = 'stackql-demo'
AND zone = 'europe-north1-a'
AND name = 'disk-1';
Se verificarmos o painel do Google Cloud Compute, podemos ver que o tamanho do disco agora está definido em 32GB, que é a nova quantidade que definimos em nossa consulta.
Excluir a instância
Finalmente, se não precisarmos mais de alguns dos recursos, também é possível excluí-los diretamente pela interface do StackQL. É útil para garantir que os recursos estejam sendo usados de forma eficiente.
Precisaremos executar uma instrução básica DELETE
fornecendo o nome da instância, o nome do projeto e a zona. Vamos remover o recurso de Disco que criamos para fins de teste.
DELETE FROM google.compute.disks
WHERE disk = 'disk-1'
AND project = 'stackql-demo'
AND zone = 'europe-north1-a';
Assim como antes, volte para a plataforma Google Cloud e veja que a instância do Compute Engine foi removida da lista de recursos.
Realizar operações em recursos da Nuvem
Podemos utilizar ainda mais o poder do StackQL. Por exemplo, podemos mudar os estados dos recursos executando comandos semelhantes ao SQL para controlar quando eles iniciam e param.
Essa funcionalidade pode ser muito valiosa para desenvolvedores que buscam automatizar o gerenciamento da infraestrutura e otimizar custos por meio do controle programático dos recursos em nuvem.
Para fins deste tutorial, criamos uma instância de máquina virtual “instance-1”. Todas as suas máquinas virtuais serão listadas na seção “Instâncias de VM”.
Parar operações em recursos da nuvem
Após criar a instância, ela será iniciada por padrão, então vamos tentar usar o comando EXEC
para parar a instância do Google Cloud Compute primeiro.
Forneça o nome da instância, o nome do projeto e a zona e o StackQL deverá ser capaz de pará-la.
EXEC google.compute.instances.stop
@instance = 'instance-1',
@project = 'stackql-demo',
@zone = 'europe-north1-a';
Se agora visitarmos a lista de instâncias do Google Cloud Compute e verificarmos o status do recurso criado anteriormente, veremos que a instância está realmente parada.
Iniciar operações em recursos da nuvem
Se quisermos iniciar novamente uma instância do Google Compute Engine inativa, precisaremos executar uma consulta similar, apenas desta vez usando o método start
.
Edite a consulta anterior para a seguinte e execute-a em seu terminal:
EXEC google.compute.instances.start
@instance = 'instance-1',
@project = 'stackql-demo',
@zone = 'europe-north1-a';
Verifique no Google Cloud para ver que a operação foi concluída. Você notará que a instância foi iniciada novamente e está pronta para uso.
Conclusão
Neste tutorial, aprendemos que a abordagem do StackQL é única e direcionada aos desenvolvedores para padronizar os processos de trabalho com operações em nuvem.
A hierarquia de objetos e o fluxo de trabalho do StackQL são muito intuitivos. A ferramenta basicamente preenche a lacuna entre a linguagem de consulta tradicional e os modernos stacks de computação em nuvem.
Também testamos o StackQL na prática usando vários casos de uso práticos, desde navegar pelas APIs em nuvem até realizar operações CRUD e mudar o estado das instâncias.
Você poderia usá-lo ainda mais para áreas como inventário e relatórios de ativos em nuvem, otimização de custos, integração CI/CD para validação de implantação e muito mais.
Espero que o StackQL seja útil para você melhorar seu conjunto de ferramentas e que ele seja útil em projetos futuros sempre que você estiver trabalhando com recursos em nuvem.
Compartilhe
Publicar comentário