Para a primeira pergunta: sim, puppet
pode fazer isso usando templates juntamente com hiera
e / ou < href="http://projects.puppetlabs.com/projects/facter"> facter
. Este processo é totalmente abstraído do software usando o arquivo modelo.
Por exemplo, você pode ter um modelo para server.xml
com uma seção como esta:
<Connector address="<%= @ipaddress_eth0 %>"
executor="tomcatThreadPool"
port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
A parte <%= @ipaddress_eth0 %>
é o que você chama atualmente de 'token', e o fantoche sabe como substituí-la por qualquer host usando facter
:
# facter ipaddress_eth0
10.0.0.2
Você pode ter fatos personalizados se precisar deles também.
O tópico de dados hierárquicos é um pouco mais complexo e exige que você leia alguma documentação para ver como ele pode ajudá-lo com suas implantações. Este é uma ótima apresentação de suas possibilidades.
Basicamente, sua finalidade é fornecer os meios para separar código e dados (seus 'tokens') e armazenar esses dados em um formato familiar e fácil de manter (YAML ou JSON). O caso de uso que você descreve acima (definindo uma porta personalizada para tomcat
) é o padrão de uso clássico de hiera
:
No módulo tomcat
, você tem algo como:
class tomcat (
$port
){
#rest of the module
}
Em um modelo (digamos, server.xml.erb
):
<Ajp12Connector port="<%= port %>" ajpidFile="conf/ajp12_2.id" />
E a parte dos seus dados hierárquicos que correspondem a esse código seria parecida com:
tomcat::port = 8080
Para a segunda pergunta, a resposta também é sim, até certo ponto. Você pode usar o coletivo de marionetes (na verdade, uma parte da oferta da puppetlabs) para enviar as alterações para um farm sem agente de servidores. Você precisaria instalar os clientes, embora (não exatamente o mesmo, pois esses clientes são passivos, diferentemente dos agentes puppet
, que são proativos em solicitar seus catálogos para o puppetmaster
). Novamente, é necessário que você leia a documentação para entender melhor os detalhes de sua funcionalidade.