Blog Agility

Criando Grupos de Devices com Expressões Regulares no Network Automation

Criando Grupos de Devices com Expressões Regulares no Network Automation

Expressões regulares são grandes aliados de profissionais de TI. Elas são largamente utilizadas tanto por profissionais de desenvolvimento de software quanto para quem trabalha com infraestrutura. Com as RegEx, podemos simplificar cadeias de comandos, filtrar texto e aprimorar pesquisa com uma pequena sequência lógica de caracteres.

Diversas ferramentas dão suporte ao uso de expressões regulares. No Network Automation da Infoblox, elas podem ser utilizadas para realizar pesquisas avançadas em arquivos de configuração e para criação de grupos. Os próximos capítulos mostrarão como as RegEx funcionam no mundo Infoblox e dará exemplos de sua utilização na criação de grupos de devices..


Variáveis

Há dois itens que precisamos entender para começar a trabalhar com expressões regulares no Infoblox. O primeiro deles é que podemos trabalhar com variáveis de dispositivo que armazenam informações comuns de um device (como por exemplo, o modelo), porém diferentes entre si (cada equipamento possui o seu modelo).

A lista abaixo exibe as variáveis mais comuns de dispositivos que podemos utilizar.

  • $IPAddress:IP do Device
  • $Name: Nome do Device
  • $Type: Tipo do Device (Router, Switch, etc)
  • $Vendor: Fabricante do Device
  • $Model: Modelo do Device
  • $Version: versão do software no device

Operadores Especiais

O outro item que precisamos entender são os operadores especiais, que são os caracteres utilizados para avaliar a morfossintaxe das palavras (ou seja, a forma como elas são escritas). Geralmente, estes caracteres indicam para a pesquisa o que considerar ou desconsiderar, além da posição do item no texto e outras comparações.

Para explicá-los, vamos à um exemplo prático. Vamos criar um grupo que tenham como membros apenas equipamentos Dell.

Pra iniciar a configuração, vamos logar no Network Automation.

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation02

No lado direito da tela, localize o menu Select Device Groups e clique na engrenagem

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation03

Na parte posterior da tela, localize o botão Add Group:

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation04

Na tela aberta, no campo Name digite um nome para o grupo. Em Membership Criteria, digite:

$Vendor eq ‘Dell’

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation05

Clique em Save & Close após o término.

O valor $Vendor é uma variável que armazena qual é o fabricante de determinado device.

“eq” (equal) é um operador que realiza a comparação entre duas strings (texto ou número) . Neste caso, desejamos que o vendor deste device seja igual à Dell.

Ainda, outros valores podem ser utilizados:

  • Eq: Equal (Igual a, aplicável para texto e números);
  • Ne: Not equal (Diferente de, aplicável para texto e números);
  • Gt: Greater Than (maior que, aplicável somente para números);
  • Lt: Less Than (Menor que, aplicável somente para números);
  • Like: contém (aplicável somente para texto, mas converte numeros em texto para comparação);
  • Not like: não contém (aplicável somente para texto, mas converte números em texto para comparação);

De volta a tela de grupos, localize o grupo criado, clique na engrenagem e em seguida “View Members”

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation06
2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation07

Vamos adicionar nessa listagem, todos os dispositivos que sejam da Palo Alto, supondo que um mesmo departamento seja responsável por estes dois equipamentos:

Vamos voltar na edição do grupo e modificar a expressão para que ela fique desta forma:

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation08

Verifique que a empressão acima contém um or. O Or é um operador lógico que combina duas ou mais expressões.

Os seguintes operadores podem ser utilizados:

  • And: E (a expressão do lado direito do operador deve ser verdadeira em relação a expressão do lado direita e vice-versa)
  • Or: OU (pelo menos uma expressão deve ser verdadeiro).

Neste caso: o Modelo do device deve ser Dell OU Palo Alto.

Após a edição, verifique novamente os membros do grupo.

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation09

Agora, vamos supor que este departamento seja responsável apenas por devices que contenham “Lab” no nome. Para isso, vamos modificar a expressão para que considere a palavra “Lab” em qualquer lugar do nome do dispositivo.

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation10

Primeira alteração: Observe que agrupamos a avaliação dos Vendors entre parênteses. Isto é necessário porque precisamos que uma delas seja verdadeira antes de compará-la com a instrução em “and”. Manter este padrão otimiza o processamento da RegEx.

Segunda alteração. A variável $DeviceName armazena o nome (coletado via SNMP) do dispositivo. Aqui, utilizamos o operador “like” para dizer que o device deve conter a palavra “Lab”. Como não foi especificado em que posição a string “Lab” está, vamos utilizar o operador “.*” entre barras (que funcionam como agrupadores): ex: /.*<texto>.*/. Fazendo isso, estamos definindo que a palavra pode conter qualquer valor antes ou depois dela (ou em outras palavras, existir em qualquer posição do texto): Ex: APP_LAB_01 ou Laboratorio-MGMT2.

Clique em Save & Close e verifique os membros novamente Clicando em View Members.

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation11

Note que nenhum item foi retornado. Isso é esperado, pois Expressões Regulares diferenciam maiúsculas e minúsculas por padrão. Para fazer a pesquisa desconsiderar caracteres em minúsculas e maiúsculas, basta inserir “i” no final da expressão, conforme exibido abaixo.

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation12

Agora, veja a lista de membros:

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation13

Vamos adicionar uma última instrução: Um novo gerente decidiu que todos os devices com a sigla PA no início do nome serão administrados pela mesma equipe. Considerando que “PA” esteja no início do nome do device e em maiúsculo, vamos modificar a RegEx da seguinte forma:

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation14

Novamente, agrupamos instruções semelhantes entre parênteses e utilizamos a variável $DeviceName com o operador like (contém). Porém, como foi especificado que “PA” deve existir no início do nome do device, utilizamos o caractere “^” no início do texto desejado, considerando também que possa existir qualquer coisa após PA utilizando o “.*”.

2015_08_Criando_Grupos_de_Devices_com_Expressoes_Regulares_no_Network_Automation15

Note que após a construção da RegEx e sempre que houver a descoberta de novos devices que atendam aos requisitos dela (o termo utilizado é neste caso é “Match”), o dispositivo automaticamente passa a ser membro deste grupo, sem necessidade de atualizações manuais.


Os exemplos acima são bem simples, mas são os que mais são utilizados para organizações deste tipo. Lembrando que é possível extrair relatórios e realizar outras tarefas somente com os membros dos grupos criados, para limitar o escopo destas tarefas. O Admin Guide do Network Automation fornece estes e mais exemplos que podem ser uteis na construção de expressoes mais complexas. Consulte a documentação de referência e faça bom uso das expressoes regulares.