Olá a todos!
Na aula "Finalizando a instalação" do curso "Ansible: implementando sua infraestrutura como código", aprendemos a tratar a vulnerabilidade known-secrets no WordPress, adicionando as chaves de segurança ao arquivo wp-config.php usando o módulo lineinfile.
A abordagem apresentada na aula é funcional e nos introduz ao lineinfile, que é um módulo muito útil. No entanto, durante a aula, surgiram algumas reflexões sobre a robustez e a manutenção dessa solução, especialmente considerando futuras atualizações do WordPress.
Minha principal preocupação é que o lineinfile realiza uma busca literal. Se o arquivo wp-config-sample.php (que é a base para o wp-config.php) tiver suas linhas de placeholder alteradas em uma futura versão do WordPress (por exemplo, mudança de espaços, quebras de linha ou texto), a substituição pode falhar silenciosamente, deixando a vulnerabilidade ativa sem que percebamos.
Pensando nisso, gostaria de propor e discutir uma alternativa:
Manter uma cópia do wp-config.php customizado no projeto Ansible: Em vez de depender do wp-config-sample.php do WordPress no servidor remoto, poderíamos ter um arquivo wp-config.php já preparado (com placeholders para as chaves de segurança) dentro da estrutura do nosso projeto Ansible.
Utilizar o módulo template: Com esse arquivo customizado, poderíamos usar o módulo template do Ansible para copiá-lo para o host remoto e, ao mesmo tempo, preencher dinamicamente os placeholders das chaves de segurança com os valores gerados pela API do WordPress.
Essa abordagem traria vantagens como:
Controle de Versão: O arquivo de configuração estaria sob controle de versão junto com o restante do playbook.
Consistência: Garantiria que todos os ambientes recebam a mesma base de configuração.
Robustez: Seria menos suscetível a falhas silenciosas causadas por pequenas alterações na formatação do wp-config-sample.php original do WordPress.
O que vocês acham dessa alternativa? Alguém já utiliza essa abordagem ou tem outras sugestões para gerenciar arquivos de configuração e chaves de segurança de forma mais resiliente com Ansible?