Olá Pessoal,
Seguindo em nossos posts, continuamos trabalhando para fazer nossas comparações entre as configurações que estão aplicadas em nosso ambiente. Hoje vamos tratar sobre a validação do módulo ” startup-config “.
Como vocês observaram anteriormente, sempre estavamos validando situações onde iríamos comparar arquivos ( scripts ) que poderiam ser aplicados em nossos equipamentos ou validados no sentido de possíveis alterações que de fato não se equipara com nossa base ( backup ).
Logo abaixo, iremos fazer uma validação simples entre “ startup-config ” com a ” running-config “, com isso temos outro motivo para possíveis troubleshooting identificar rapidamente se algo foi alterado, e se de fato essa alteração foi feita da maneira correta, sempre lembrando-se que, essas alterações podem aparecer desde que ainda não foram salvas na NVRAM. Abaixo temos o script:
--- - hosts: all connection: local gather_facts: no tasks: - name: OBTAIN LOGIN CREDENTIALS include_vars: secret.yaml - name: Fill vars set_fact: provider: host: "{{ ansible_host }}" username: "{{ creds['username'] }}" password: "{{ creds['password'] }}" auth_pass: "{{ creds['auth_pass'] }}" - name: Compare startup-config with running-config ios_config: diff_against: startup provider: "{{ provider }}" register: test_diff - name: Take startup-config and sets it to a variable called *before* set_fact: before="{{ test_diff['diff']['before'].split('\n')}}" when: test_diff['diff'] is defined - name: This takes the running_config and sets it to a variable called *after* set_fact: after="{{ test_diff['diff']['after'].split('\n')}}" when: test_diff['diff'] is defined - name: Create a line-to-line diff of running-config to startup_config set_fact: difference="{{ after | difference(before) }}" when: test_diff['diff'] is defined - name: sanitized output "Lines added to running-config that are not present in startup_config" debug: var: difference when: test_diff['diff'] is defined
Vale ressaltar que utilizamos a mesma técnica já explicada anteriormente, onde temos que “ sanitizar ” as diferenças para que de fato tenhamos a saída mais ” clean ” possível, e claro de fácil visualização. No primeiro momento, como vocês vão perceber apenas executei nossa playbook para demonstrar que de fato meu equipamento foi ligado e permanece com a mesma configuração.
A mensangem ” skipping ” é justamente para mencionar que nossa variável esta ” zerada ” e que essa tarefa está sendo pulada para as tarefas seguintes. Segue abaixo:
Agora, como já temos tudo garantido, vamos novamente fazer uma alteração em nosso roteador relacionado a um novo usuário, e claro, não vamos salvar em nossa NVRAM.
Feito isso, agora esperamos que após execução da playbook iremos visualizar que nosso novo usuário foi inserido na ” running-config “. Segue abaixo o output trazendo assim a linha adicional:
Com isso, finalizamos nossas 3 opções de validação de configuração, para qual pode atender diversas opções dentro de nosso ambiente de produção ou mesmo de futuros laboratórios. Pensando assim, vendo nossas demonstrações você avalia que isso de fato pode automatizar algum processo que hoje você precisa executar manualmente ou não consiga gerenciar suas configurações de equipamentos? O que seria mais interessante?
PS.: Vale lembrar novamente que estamos executando somente em um roteador, porém isso, pode ser escalável a muitos equipamentos, apenas alterando nosso arquivo de hosts.
Deixe seus comentários.
Abs,
Rodrigo
Comentários Recentes