Criando um arquivo com Puppet com fatos de múltiplos hosts

2

Estou tentando fazer um fantoche criar um arquivo de configuração com esta aparência:

[All]
Hosts=apt-dater@puppetmaster;apt-dater@blaster; (etc...)

Basicamente, esse arquivo precisa de uma entrada para cada nó que inclua a classe apt-dater. Eu tenho experimentado com recursos exportados, mas não consigo encontrar uma maneira limpa de colocá-lo juntos. Como devo proceder para criar este arquivo?

    
por Belly 16.06.2010 / 20:12

1 resposta

2

Suponho que você já entende os princípios de exportação e coleta de recursos de tipo individuais. Só não como traduzir esses recursos individuais em um único arquivo. O Puppet tem dois métodos para fazer isso:

Augeas é uma ferramenta muito inteligente, mas pode ser complexa se você tiver que começar a escrever e distribuir suas próprias lentes. No entanto puppet-concat é muito simples de entender. Não testei o seguinte para a sintaxe, mas isso deve colocá-lo no caminho certo:

# apt-dater/manifests/server.pp
class apt-dater::server {
    file { "/somepath/apt-dater/hosts.conf": }
    concat::fragment{ "apt-dater_hosts_header":
        content => "[All]\nHosts=",
        order   => 1,
    }
    Apt-dater::Client <<| |>>
}

# apt-dater/manifests/defines/register.pp
define apt-dater::register($order=10) {
    concat::fragment{ "apt-dater_hosts_$name":
        target  => "/somepath/apt-dater/hosts.conf",
        content => "apt-dater@${name};",
    }
}

# apt-dater/manifests/client.pp
class apt-dater::client {
    @apt-dater::register{ "$hostname": }
}

Em seguida, configure os nós:

# On the central server.
include apt-dater::server

# On each of the client nodes.
include apt-dater::client
    
por 20.06.2010 / 12:54

Tags