Construindo uma infraestrutura como código com GitLab e Ansible


Todo o poder do GitLab CI na demonstração de manuais Ansible com a infraestrutura como abordagem de código.


O GitLab CI é uma ferramenta eficaz para uma ampla variedade de cenários, incluindo infraestrutura como código. O GitLab pode ser usado com diferentes ferramentas, mas nesta demonstração usaremos o Ansible, porque é exatamente isso que os desenvolvedores costumam usar ao abordar a "infraestrutura como código". Aqui está uma demonstração com dois roteadores do curso em redes Ansible .


A beleza do IC do GitLab é que o código do manual do Ansible pode ser modificado e entregue sem a instalação local de nenhuma dependência. Um projeto de demonstração que faz com que as seqüências SNMP sejam atualizadas em todos os dispositivos todos os meses, de acordo com nossa política de segurança, pode ser totalmente concluído no GitLab.com , nosso serviço de hospedagem de códigos.


Para começar, abra o manual do Ansible, onde existem 4 tarefas:


  • Reúna fatos do roteador - coletando fatos sobre roteadores.
  • Versão de exibição - versão de exibição
  • Exibir número de série
  • Configurar SNMP - Configure SNMP.

Nesta demonstração, focaremos na configuração de strings SNMP, para as quais você precisa seguir algumas etapas simples.


A partir do painel de tarefas


Qualquer plano no GitLab começa da mesma maneira: com uma tarefa . Portanto, a primeira etapa do fluxo de trabalho do GitLab é verificar o quadro de tarefas no projeto ansible-demo . No quadro de tarefas ansible-demo, já vemos a tarefa: alterar as linhas SNMP em todos os roteadores . A tarefa possui um link para a página wiki da política de segurança do GitLab, na qual diz que as linhas SNMP precisam ser atualizadas todos os meses e, para operações somente leitura e leitura e gravação, deve haver linhas diferentes.



A política de segurança do GitLab prescreve a atualização de strings SNMP todos os meses.


Em seguida, você precisa verificar se os comandos para configurar as seqüências SNMP na demonstração com dois roteadores não violam a política de segurança do GitLab descrita na tarefa.



Os comandos para configurar seqüências de caracteres SNMP estão disponíveis no manual do Ansible.


Em seguida, retorne à tarefa, atribua a si mesmo e altere o atalho de pendências para doing no painel direito ou simplesmente arraste a tarefa no quadro de uma coluna para outra.


Criando uma solicitação de mesclagem


Agora você precisa criar uma solicitação de mesclagem a partir da tarefa. Verifique se a solicitação de mesclagem possui um sinalizador WIP (Work in Progress), para que não entre no assistente prematuramente. Em vez de se conectar localmente, usamos o GitLab Web IDE porque as alterações nas linhas SNMP são pequenas.


  • Abra a seção de demonstração do CI / CD.
  • Vá para o manual Ansible.
  • Mude a seção SNMP da seguinte maneira:
  • Observe que diferentes linhas estão configuradas para RO e RW de acordo com a política de segurança do GitLab descrita na tarefa .

Confirmar confirmação


Você atualizou a linha SNMP de acordo com as instruções e agora precisa confirmar as alterações. Abra uma comparação paralela de alterações para garantir que a solicitação de mesclagem contenha a confirmação mais recente.



A ferramenta de comparação paralela mostra visualmente as alterações.


Resultados


A confirmação de alterações iniciará automaticamente o pipeline do IC do GitLab. Ele executará as seguintes tarefas:


  • Verificação de sintaxe
  • Teste é executado.
  • Testando alterações em um laboratório / ambiente artificial.

Vemos o progresso e a saída de cada trabalho no pipeline do GitLab CI que atualiza o SNMP.



A saída da sua tarefa mostra que as atualizações SNMP no ambiente artificial foram bem-sucedidas.


Todas essas tarefas serão iniciadas e documentadas na solicitação de mesclagem.



As marcas de seleção indicam que a tarefa no pipeline do IC do GitLab foi concluída.


Em seguida, efetue login nos roteadores para obter uma demonstração e ver as alterações.



Alterações nas seqüências SNMP RO e RW são refletidas nos roteadores.


Revisão da solicitação de mesclagem


Você pode executar uma aprovação de etapa adicional da solicitação de mesclagem . Se você configurar a aprovação, vários usuários poderão verificar as alterações antes de entrarem em produção.



A solicitação de mesclagem pode ser configurada para que outro usuário verifique seus trabalhos antes que eles apareçam no assistente.


Transferir para o mestre


As alterações podem ser enviadas ao assistente imediatamente após o teste. Um assistente é a ramificação principal que contém o código da área de trabalho.


Quando estiver pronto, clique no botão Resolve Work In Progress . Clique em Merge .


Quando você ativa o status WIP, a solicitação de mesclagem pode ser enviada ao assistente e a tarefa pode ser fechada.


O novo pipeline executará todos os testes que você executou na etapa adicional de iniciar o manual em produção.


Acompanhe o progresso e os logs na tela do pipeline. Quando o processo for concluído, efetue login nos roteadores em funcionamento e verifique se as linhas SNMP foram alteradas.


Magic GitLab CI


Tudo isso é possível graças à magia do GitLab CI. Os pipelines do GitLab CI são uma série de tarefas sequenciais que executam tudo o necessário para testar e implementar o código Ansible.


Toda a configuração do IC do GitLab se encaixa em um arquivo YAML simples, armazenado no .gitlab-ci.yml .


Nesta demonstração, o .gitlab-ci.yml contém 3 etapas.


  1. Implantar (implantação): cria uma rede simulada com dois roteadores na AWS usando o Ansible.
  2. Demonstração: executa um manual que altera as linhas SNMP.
  3. Destruir: Destrói uma rede simulada com dois roteadores.

O IC do GitLab começa com uma imagem básica. Nesse caso, usamos a imagem do Docker, que contém todo o código necessário e as dependências do Ansible. Indique os comandos que serão executados em cada estágio e as dependências.



Um arquivo YAML simples contém três estágios do IC do GitLab.



A fase de demonstração do GitLab CI, que executa o manual do Ansible.


Observamos o interior do pipeline e vimos como você pode usar o GitLab CI para criar uma infraestrutura como código sem precisar instalar dependências Ansible no seu computador. Este é apenas um exemplo de como o GitLab CI pode ser usado para implementar a infraestrutura como código. Veja o vídeo para um guia completo:


Source: https://habr.com/ru/post/pt459984/


All Articles