Como obter log utilizando Terraform Scripts

Olá Pessoal,

Após a notificação de alguns posts, pensei em compartilhar um ponto importante antes como troubleshooting consumindo o serviço Terraform.

Como sabemos, após executar o comando terraform plan ou terraform apply muitos comandos são executados em background, bem como identificar as variáveis, provider e gráficos de caminhos de execução.

Lembrando que esses parâmetros não são específicos de Netscaler ou qualquer outro vendor, e sim são caminhos que o próprio Terraform oferece para obter mais dados/logs da execução de seu script.

Introdução

O Terraform oferece um registro detalhado, que fornece muito mais informações, facilitando a depuração do problema. Para ativar os diferentes níveis de registro, é necessário configurar duas variáveis de ambiente, TF_LOG e TF_LOG_PATH. A variável de ambiente TF_LOG define o nível de verbosidade do registro. Cinco níveis de registro podem ser usados para fins de depuração:

- TRACE = Tem a verbosidade mais elaborada e mostra cada passo dado pelo Terraform.

- DEBUG = Descreve o que está acontecendo internamente de forma mais concisa em comparação com o TRACE.

- INFO = Mostra mensagens gerais de alto nível sobre o processo de execução.

- WARN = Registra avisos que podem indicar erros de configuração ou erros, mas que não são críticos para a execução.

- ERROR = Exibe erros que impedem o Terraform de continuar.

O próximo item que você precisa definir é o caminho do arquivo de registro, para isso, você deve usar a variável de ambiente TF_LOG_PATH. Essa variável criará o arquivo especificado e anexará os registros gerados pelo Terraform. Se TF_LOG_PATH não for definida, a saída será enviada para a saída padrão e para o erro no terminal.

Visualização e Execução

No meu caso eu prefiro no momento de execução do script definir essas variáveis baseado no que você deseja naquele momento de log, portanto segue abaixo exemplo de comandos:

$ TF_LOG=DEBUG TF_LOG_PATH=./tf_debug.log terraform plan
$ TF_LOG=INFO TF_LOG_PATH=./tf_debug_1.log terraform apply

Segue o resumo do arquivo gerado por essa demanda. Logo abaixo, podemos observar os resultados sendo executados diretamente para executar o comando do terraform.

Comando para definir método

Definição da criação do nome do arquivo feito na execução anterior.

Estrutura do resultado e arquivos criados

Logo abaixo um exemplo da função sendo executada pelo definição TRACE.

Exemplo do comando Trace

Conclusão

De fato, podemos obter informações para investigar os eventos e os erros de execução no background, facilitando assim uma forma de identificação do erro ou muitas vezes de uma biblioteca que está faltando parâmetro.

Atte, Rodrigo