Sobes.tech
Middle+

Como versionarias vários papéis no Ansible para o setor bancário?

sobes.tech IA

Resposta da IA

No setor bancário, onde é necessária uma fiscalização rigorosa das alterações e conformidade regulatória, a gestão de versões dos papéis do Ansible é de extrema importância.

Eu utilizaria a seguinte combinação de abordagens:

  1. Sistema de controlo de versões (Git): Cada papel é armazenado num repositório Git separado. Isto permite versionar, ramificar e rever alterações de forma independente em cada papel.

  2. Versionamento semântico (SemVer): Aplica-se SemVer (MAJOR.MINOR.PATCH) a cada papel.

    • MAJOR: Alterações significativas que quebram a compatibilidade retroativa.
    • MINOR: Adição de novas funcionalidades que mantêm a compatibilidade.
    • PATCH: Correções de bugs que mantêm a compatibilidade. As etiquetas Git são usadas para marcar versões específicas.
  3. GitFlow ou processo de trabalho semelhante: Uso de ramos develop (para desenvolvimento em curso) e main (para versões estáveis e prontas para produção). São criados ramos de funcionalidades para novas funções ou correções.

  4. Ansible Galaxy: Para gerir centralmente as dependências e versões dos papéis. Pode-se usar uma instância privada do Ansible Galaxy para garantir segurança e controlo de acesso num ambiente bancário.

  5. Requisitos (requirements.yml): Nos playbooks (ou outros papéis dependentes), especifica-se a versão concreta do papel no ficheiro requirements.yml.

    # requirements.yml
    - name: common_config
      src: git@internal-git.bankname.com/ansible-roles/common_config.git
      version: 1.2.0 # Especificação de versão concreta
    - name: database_server
      src: git@internal-git.bankname.com/ansible-roles/database_server.git
      version: 2.1.5
    
  6. Testes automatizados: Cada commit e cada nova versão do papel passa por testes automáticos (por exemplo, com Molecule). Se os testes falharem, a versão não pode ser marcada como estável.

  7. Registo de alterações (Changelog): Em cada repositório do papel mantém-se um ficheiro CHANGELOG.md ou similar, que documenta as alterações em cada versão. Isto é importante para auditoria e compreensão do histórico de alterações.

  8. Pipeline CI/CD: Processo automatizado de construção, teste e implantação de papéis. A cada alteração em main (ou ao criar uma etiqueta), o pipeline é executado, verifica o papel, cria a etiqueta e possivelmente publica-o no Ansible Galaxy.

    # Exemplo de passo no pipeline CI (uso de GitLab CI/GitHub Actions/Jenkins)
    stages:
      - test
      - release
    
    test_role:
      stage: test
      script:
        - molecule test
    
    release_role:
      stage: release
      only:
        - tags # Executar apenas ao criar uma etiqueta
      script:
        - ansible-galaxy role import --server https://galaxy.internal.bankname.com namespace role_name --role-version $CI_COMMIT_TAG
      needs:
        - test_role
    

Esta abordagem garante rastreabilidade, possibilidade de reverter a versões anteriores, testes independentes e controlo rigoroso das alterações nos papéis, o que é fundamental para cumprir os requisitos de segurança e reguladores no setor bancário.