A maneira como fiz isso é escrever um fato personalizado para o servidor identificar sua função a partir dos dados do usuário, que podem ser acessados em 169.254.169.254, ver seus próprios dados do usuário . .
Documentação de dados do usuário da AWS
curl http://169.254.169.254/latest/
então, quando eu digito facter role
ill get 'dbserver', 'webserver', use isso para definir um nó, é importante não ter grupos de autoescala preocupados com o nome do servidor.
/etc/puppet/manifests/nodes.pp
node default{
include nodes::type
}
/etc/puppet/modules/nodes/manifests/init.pp
import “type.pp”
/etc/puppet/modules/nodes/manifests/type.pp
class nodes::type{
case $role {
“dbserver” : {
include mysql
}
}
case $role {
“webserver” : {
include httpd
}
}
}
/etc/puppet/manifests/modules.pp
import nodes
Eu não quero dizer exatamente como fazer no seu caso, mas aqui vou mostrar como criar um fato personalizado para relatar o ID da instância do EC2.
Facter, curl, estão instalados.
mkdir -p /home/ec2-user/lib/ruby/facter
export FACTERLIB=/home/ec2-user/lib/ruby/facter
cat > /home/ec2-user/lib/ruby/facter/instance_id < EOF
# instance_id.rb
#
require 'facter'
Facter.add("instance_id") do
setcode "/usr/bin/curl -s http://169.254.169.254/latest/meta-data/instance-id"
end
EOF
E eis que um fato personalizado foi escrito.
Agora posso usá-lo para obter o ID da instância ec2:
$ facter instance_id
i-a1c0ffee
Eu não tenho fantoche instalado nesta máquina, mas se eu queria que ele fosse disponível para fantoche, id colocar nele / var / lib / puppet / lib / facter, e distribuí-lo para os clientes id garantir pluginsync = true no fantoche. conf.
Lembre-se, tudo o que eu disse é altamente subjetivo, é como eu faço, se há uma maneira melhor, eu estaria interessado.