Ansible
é um sistema de automação e, no que diz respeito ao gerenciamento de arquivos de configuração, não é muito diferente de apt
. A razão pela qual mais e mais softwares oferecem o recurso para ler trechos de configuração de um diretório conf.d
é permitir que esses sistemas de automação tenham pacotes / funções diferentes para adicionar configuração ao software. Acredito que não é a filosofia de Ansible
fazer o que você tem em mente, mas sim usar o truque conf.d
. Se o software que está sendo configurado não oferece essa funcionalidade, você pode estar com problemas.
Como você mencionou os arquivos de configuração XML, aproveito a oportunidade para fazer algumas reclamações. Há uma razão para a tradição do Unix de usar arquivos de configuração de texto simples. Os arquivos de configuração binários não se prestam bem à automação do sistema, portanto, qualquer tipo de formato binário causará problemas e provavelmente exigirá a criação de um programa para lidar com a configuração. (Se alguém acha que XML é um formato de texto simples, eles devem ter seus cérebros examinados.)
Agora, no seu problema específico de PostgreSQL
. PostgreSQL
suporta o truque conf.d
. Primeiro, gostaria de verificar se shared_preload_libraries
pode ser especificado várias vezes. Eu não encontrei nenhuma dica na documentação que possa, mas eu ainda tentaria. Se não puder ser especificado várias vezes, eu explicaria meu problema para os PostgreSQL
, caso eles tenham ideias; Este é um problema de PostgreSQL
e não um problema de Ansible
. Se não houver solução e realmente não conseguir mesclar os diferentes papéis em um, eu implementaria um sistema para compilar a configuração no host gerenciado. Nesse caso, provavelmente criaria um script /usr/local/sbin/update_postgresql_config
que compilaria /etc/postgresql/postgresql.conf.jinja
em /etc/postgresql/9.x/main/postgresql.conf
. O script leria as bibliotecas de pré-carregamento compartilhadas de /etc/postgresql/shared_preload_libraries.txt
, uma biblioteca por linha, e as forneceria ao jinja.
Não é incomum que os sistemas de automação façam isso. Um exemplo é o pacote Debian exim4
.