Um gerenciador de pacotes não substitui o gerenciamento de configurações. Um sistema de gerenciamento de configuração pode manipular interações com o gerenciador de pacotes nativo. No que diz respeito a configurações de assados em pacotes, isso seria suficiente apenas se a) todos os servidores tivessem configurações idênticas eb) Nenhum dado externo fosse necessário para suas configurações.
Vamos analisar uma infraestrutura básica. Você tem um aplicativo da Web interno, mas também usa um servidor da web para executar o software de rastreamento de tickets (digamos, Redmine). Seu aplicativo da web interno é escrito em PHP, mas o Redmine é um aplicativo ruby. Esses dois aplicativos da Web diferentes teriam configurações diferentes do apache. Se você estiver assando configurações em pacotes, isso exigiria que você construísse dois pacotes apache que conflitem entre si, por exemplo, apache-internal e apache-redmine. É fácil ver como isso pode se tornar incontrolável muito rapidamente.
Vamos ver como isso ficaria em um manifesto de marionetes:
# internal PHP application
class { apache: }
# uses your OS package manager to install PHP
class {'::apache::mod::php':
package_name => "php54-php",
path => "${::apache::params::lib_path}/libphp54-php5.so",
}
# redmine
class { apache: }
# uses your OS package manager to install mod_passenger
class { apache::mod::passenger: }
apache::vhost { $::fqdn:
docroot => '/path/to/directory',
directories => [
{ path => '/path/to/directory',
passenger_enabled => 'on',
},
],
}
Outro exemplo básico é ter diferentes ambientes em sua infraestrutura. Algo que você não pode fazer com configurações estáticas em um gerenciador de pacotes é um arquivo de configuração de modelo. Se você tiver um ambiente de desenvolvimento e produção, os modelos permitem que você escreva configurações que instruam seus aplicativos a se conectarem à fonte de dados correta (por exemplo, um banco de dados) ou a um ambiente específico.
Por fim, quem adicionará seus repos personalizados e instalará os pacotes corretos em cada host? Esta é uma manutenção mais desnecessária que é resolvida pelo gerenciamento de configuração.