array múltiplo em def

1

Eu tenho dois arquivos

class hadoopfile::file {

$diskname  = [aaa,bbb,ccc,ddd,eee,']

$filename  = [02,03,04,05,06]

hadoopfile::diskcreate_def { '$diskname:','$filename:' }
#hadoopfile::diskcreate_def { $filename: }
}



 define hadoopfile::diskcreate_def (
  $diskname,$filename = $title)
  {
  physical_volume {["/dev/$diskname"]:
    ensure  => present,
  }

  file { 'opt/db/$filename':
    ensure  => directory,
  }

  mount { filemount:
    ensure  => mounted,
    name    => "opt/db/$filename",
    fstype  => 'ext4',
    options => 'defaults',
    atboot  => true,
    dump    => '1',
    pass    => '2',
    require => File["/opt/hd/db/data/$filename"]
    }
   }

quando eu compilo acima eu tenho

Syntax error at '}'; expected '}' at /etc/hadoopfile/manifests/file.pp:15 on node Minha dúvida é, podemos criar passar duas variáveis em define.

    
por Olive 16.11.2014 / 19:20

2 respostas

0

Tente remover a citação única ' da primeira definição da matriz. Isso deve compilar.

$diskname  = [aaa,bbb,ccc,ddd,eee]

Então, de acordo com a documentação, é possível passar uma lista de parâmetros para uma classe ou um tipo definido . Use isto para referenciar seu tipo definido

hadoopfile::diskcreate_def { "${diskname}":, "${filename}": }
    
por 16.11.2014 / 23:22
0

Parece que você está procurando por um mapeamento drivename to filename . Os mapeamentos não são expressos por pares de matrizes - eles são representados por hashes .

$disks = {
    '02' => { diskname => 'aaa', },
    '03' => { diskname => 'bbb', },
    '04' => { diskname => 'ccc', },
    '05' => { diskname => 'ddd', },
    '06' => { diskname => 'eee', },
}

Você pode traduzir isso em recursos por meio da função create_resources .

create_resources('hadoopfile::diskcreate_def', $disks)

Cada chave em seu hash se torna um título de recurso, e o hash de valor contém os pares de atributo / valor.

Observação geral : não nomeie suas definições dessa maneira. O nome define deve ser descritivo do que cada recurso representa em seus sistemas, como hadoopfile::mounted_volume .

    
por 17.11.2014 / 18:54