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.