Puppet: mais de um array passou para uma definição?

1

Eu posso entender de acordo com o link que eu posso passar um array para uma definição.

define php::pear() {
        package { "'php-${name}": ensure => installed }
}

php::pear { ['ldap', 'mysql', 'ps', 'snmp', 'sqlite', 'tidy', 'xmlrpc']: }

No entanto, existe uma maneira que eu possa passar mais de um array para fazer a mesma coisa? Por exemplo, se eu quisesse algumas bibliotecas de pêras instaladas e algumas ausentes, eu poderia fazer isso?

define php::pear($ensure) {
    package { "'php-${name}": ensure => $ensure }
}

php::pear { ['ldap', 'mysql', 'ps', 'snmp', 'sqlite', 'tidy', 'xmlrpc']: 
    ensure => ['installed', 'installed', 'absent', 'absent', 'installed', 'installed', 'installed']
}

Em primeiro lugar, é algo assim possível, ou existem maneiras melhores de fazer algo assim com matrizes multidimensionais ou algo assim?

Qualquer ajuda seria apreciada, eu estou achando a documentação de fantoches que falta um pouco nesta área.

Felicidades

    
por bobinabottle 02.04.2011 / 05:07

2 respostas

3

Eu não acho que você possa realmente fazer o que está falando. Você acabaria passando o mesmo array grande para as duas coisas e, no seu exemplo, parece que você quer iterar mais de dois arrays de uma só vez.

E ainda mais importante, mesmo se você puder, é muito feio e difícil de ler. É preciso uma leitura cuidadosa para descobrir quais coisas devem estar ausentes ou presentes.

A sintaxe a seguir funciona com fantoches, é muito mais fácil de ler sem confusão, é muito mais fácil fazer alterações posteriormente e, na verdade, tem menos caracteres:

php::pear {
  ['ldap', 'mysql', 'sqlite', 'tidy', 'xmlrpc']: 
    ensure => 'installed';
  ['ps','snmp']:
    ensure => 'absent';
}
    
por 02.04.2011 / 08:58
1

Sim, você pode conseguir isso aninhando matrizes ( [ ['ldap', 'installed'], ['mysql', 'installed'],... ) e aprimorando as funções.

Mas, na verdade, isso só servirá para tornar sua configuração confusa e difícil de ler. Basta definir uma classe que coloque os pacotes como você deseja e inclua a classe.

    
por 02.04.2011 / 05:25

Tags