Como Definir Variáveis de Ambiente

January 25, 2017
Escrito por
Revisado por

Definindo variáveis de ambiente

Existem algumas coisas que nós não devemos compartilhar em nosso código. Estes geralmente são valores de configurações que dependem do ambiente, tal como debugging flags ou tokens de acesso para APIs como a Twilio. Variáveis de ambiente são uma boa solução e são fáceis de consumir na maioria das linguagens.

Variáveis de ambiente????

Gif cachorro confuso

Variáveis de ambiente, como o nome sugere, são variáveis em seu sistema que descrevem seu ambiente. A variável de ambiente mais conhecida é provavelmente o PATH, que contém o caminho de todas as pastas que podem conter um executável. Com PATH, você pode escrever apenas o nome do executável ao invés do caminho completo no seu terminal, já que o shell vai verificar o diretório local assim como todos os diretórios especificados na variável PATH para esse executável.

Além de variáveis ‘built-in’, nós também temos a oportunidade de definir nossa própria variável de ambiente. Como eles estão ligados ao nosso ambiente eles são ótimos para coisas como token de acesso de API. Você poderia ter uma variável com um valor definido no seu server para testes e outro no seu ambiente de produção sem ter que usar if statements ou arquivos de configurações.

As bibliotecas da Twilio por exemplo, procuram pelas variáveis de ambiente TWILIO_ACCOUNT_SID  e TWILIO_AUTH_TOKEN se você instanciar um client sem estes dois valores. Dessa forma você não têm que se preocupar em sem querer enviar credenciais para lugares como GitHub.

Variáveis de ambiente do Windows

A definição de variáveis de ambiente no Windows são bem ocultos em várias camadas de configurações, nós vamos definir as variáveis de ambiente usando a interface gráfica. Para abrir a respectiva interface, primeiro você tem que abrir o prompt do Windows Run. Faça isso pressionando as teclas Windows e R no seu teclado ao mesmo tempo. Digite sysdm.cpl no campo de entrada e pressione Ok.

Janela do Windows Run

Na nova janela que abrir, clique na aba Avançado e depois no botão Variáveis de Ambiente no canto inferior direito da janela.

Aba avançada das propriedades do sistema

Configurações de variáveis de ambiente do Windows

A janela tem duas seções diferentes. Uma é uma lista das variáveis de ambiente que são específicos do seu usuário. Isso significa que não estão disponíveis para outros usuários. A outra seção contém as variáveis de todo o sistema, que são compartilhadas entre todos os usuários.

Crie uma variável específica de usuário clicando no botão Novo abaixo da seção específica de usuário. No prompt você pode especificar o nome e valor da sua variável. Crie uma nova variável com o nome TWILIO_ACCOUNT_SID e copie seu Twilio Account SID do console. Pressione Ok no prompt para criar a variável, seguido por Ok na janela de Variáveis de Ambiente. E está pronto.

Janela para criar nova variável de ambiente

Para testar se funcionou abra o Prompt de Comando pressionando Windows R e digitando cmd.exe. Se você já tiver com o prompt de comando aberto, certifique-se de reiniciá-lo para garantir que suas alterações sejam aplicadas.

Dentro do Prompt de Comando execute o seguinte comando:

echo %TWILIO_ACCOUNT_SID%

Isso deve printar o valor que você salvou na variável de ambiente.

Prompt de comando do Windows

Distribuições macOS e Linux

Para definir variáveis de ambiente no macOS ou qualquer sistema operacional baseado em UNIX você primeiro precisa descobrir qual shell você está usando.Você pode fazer isso executando no seu terminal o comando:

echo $SHELL

O output deve indicar qual shell você está usando. O bash shell é o mais comum, que nós vamos estar usando nesse exemplo. Mas os passos são similares para outros shells como zsh ou fish.

Para definir uma variável de ambiente precisamos usar o comando export no seguinte formato:

export KEY=value

Como isso definiria apenas para a sessão atual, precisamos adicionar esse comando em um arquivo que é executado para cada sessão. Para isso, abra o arquivo .bashrc no seu diretório home com seu editor de código favorito. Adicione a seguinte linha em algum lugar no seu arquivo .bashrc:

export TWILIO_ACCOUNT_SID=youraccountsid

Substitua youraccountsid com seu Account SID atual do seu console Twilio. Salve o arquivo e abra um novo terminal para testar se funcionou executando:

echo $TWILIO_ACCOUNT_SID

Você deve ver o valor que você armazenou nele.

Janela do prompt de comando do Windows

.env.

Em algumas situações, você precisa de uma variável de ambiente para apenas um projeto. Nesse caso, arquivos .env são uma ótima solução. É um arquivo dentro do seu projeto em que você especifica essas variáveis de ambiente e depois usá uma biblioteca para sua respectiva linguagem de programação para carregar o arquivo que definirá dinamicamente essas variáveis.

Existem bibliotecas para a maioria das linguagens de programação que carregam esse arquivo. Aqui estão alguns exemplos:

Crie um arquivo .env na pasta do seu projeto (normalmente no root) e coloque os pare de valores-chave lá. Tipo assim:

TWILIO_ACCOUNT_SID=youraccountsid

Agora tudo o que precisa fazer é consumir a respectiva biblioteca e depois usar a variável de ambiente. Em Node.js o código ficaria assim:

require('dotenv').config();
console.log('Your environment variable TWILIO_ACCOUNT_SID has the value: ',       process.env.TWILIO_ACCOUNT_SID);

Como você provavelmente não quer fazer um commit das variáveis de ambiente para um repositório, certifique-se de adicionar o arquivo .env ao seu .gitignore para evitar de dar push acidentalmente.

Provedores de Nuvem

Definir variáveis de ambiente na sua máquina local ou em uma VM é apenas metade do trabalho. E se estamos hospedando nossa aplicação em um ambiente de nuvem como Heroku, Azure, AWS ou até conteinerizado em Docker? Felizmente, todos estes provedores suportam formas de definir variáveis de ambiente. Você pode encontrar instruções de como configurá-las em suas documentações:

Se você não encontrou seu provedor nessa lista, não significa necessariamente que não há como configurar variáveis de ambiente. Certifique-se de verificar sua documentação para mais informações.

Sumário

E é isso! Agora você pode definir variáveis de ambiente, o que significa que você pode retirar todas as suas configurações baseadas em ambiente do seu código e torná-lo mais flexível e seguro!

Lembre-se que estes valores ainda estão armazenados em plain text. Se você planeja armazenar valores mais sensíveis, procure algo como uma solução de secret storage, como o Vault.

Esse post foi traduzido do original por Caick Passarella. Qualquer dúvida entre em contato comigo no e-mail cpassarella@twilio.com

Se você tem alguma dúvida ou gostaria de me mostrar as coisas incríveis que você está desenvolvendo, fique a vontade para me enviar um e mail para: dkundel@twilio.com ou contate-me no Twitter @dkundel. Mal posso esperar para ver o que você construiu!