O Code Manager é um recurso exclusivo do PE, não é construído no Puppet.
Code Manager é basicamente uma API que é acionada quando eventos acontecem no seu servidor Git.
Exemplo de fluxo de trabalho com o Gitlab:
- Alguém mescla uma solicitação pull na ramificação de produção do repositório de controle
- O Gitlab dispara uma carga útil JSON na API do gerenciador de código
- A API do gerenciador de código lê a carga, vê que é para o ramo de produção
- O gerenciador de código aciona uma execução do R10k para o ramo de produção
Estou simplificando, pois há outras etapas (verificação de erros, autenticação, etc.), mas isso é essencialmente o que está acontecendo.
Para usuários de código aberto, há uma ferramenta de Gerenciador de código com menos recursos no repositório r10k: link
Funciona de maneira semelhante, mas tem menos recursos e não é oficialmente suportável. Mas é um fluxo de trabalho similar: o aplicativo Sinatra ouve Payloads JSON, quando recebe um que é acionado e o R10k é executado para o ramo especificado.