
Pessoas
Temos uma ferramenta de implantação personalizada em funcionamento no momento e estamos avaliando substituí-la por algo não proprietário, como o fantoche.
Uma das principais coisas que isso faz por nós no momento é a tokenização. Por exemplo, em um arquivo server.xml em uma implantação do Tomcat, podemos implantar um arquivo chamado server.xml.tokenzenized
com uma linha como a abaixo
<Ajp12Connector port="@@TOMCAT.AJP.PORT@@" ajpidFile="conf/ajp12_2.id" />
e então ter um tokens.xml
arquivo que teria uma linha como
<TOKEN NAME='TOMCAT.AJP.PORT' value = '8080/>
nosso processo de implantação verifica server.xml.tokenized e substitui os tokens, gravando o arquivo em server.xml.
O fantoche pode fazer isso para um arquivo arbitrário - ou para algo como o Tomcat, eu teria que baixar um plugin que entendesse como o Tomcat funcionava?
Em segundo lugar, pela leitura que fiz até agora, parece que a maioria das pessoas usa o agente puppet para recuperar arquivos do mestre - tem que ser esse o caso - você pode ter um script que use a modelagem e infraestrutura do puppet e em seguida, faça login nos hosts para implantar o software? - a justificativa é que, por diversas razões, temos uma tendência contra os agentes do nosso ambiente.
Saúde
Responder1
Para a primeira pergunta: sim,puppet
pode fazer isso usandomodelosacompanhado dehiera
e/oufacter
. Este processo é absolutamente abstraído do software usando o arquivo de modelo.
Por exemplo, você pode ter um modelo 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 <%= @ipaddress_eth0 %>
parte é o que você atualmente chama de 'token', e o fantoche sabe como substituí-lo para qualquer host usando facter
:
# facter ipaddress_eth0
10.0.0.2
Você pode terfatos personalizadosse você precisar deles também.
O tópico de dados hierárquicos é um pouco mais complexo e exigiria a leitura de alguma documentação para ver como ela pode ajudá-lo em suas implantações.Esseé uma bela apresentação de suas possibilidades. Basicamente, seu objetivo é fornecer 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 tomcat
módulo você teria 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 corresponde a esse código seria algo como:
tomcat::port = 8080
Para a segunda pergunta, a resposta também é sim, até certo ponto. Você pode usarcoletivo de marionetes(na verdade, uma parte da oferta do puppetlabs), para enviar alterações para um farm de servidores sem agente. Você precisaria instalar os clientes (não exatamente o mesmo, pois esses clientes são passivos, ao contrário dos puppet
agentes, que são proativos na solicitação de seuscatálogospara o puppetmaster
). Novamente, é necessário que vocêleia a documentaçãopara entender melhor os detalhes de sua funcionalidade.