несколько выстраивают в определении

У меня есть два файла

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"]
    }
   }

когда я компилирую вышеупомянутое, я добрался

Syntax error at '}'; expected '}' at /etc/hadoopfile/manifests/file.pp:15 on node Мое сомнение, можем мы создавать передачу, которую определяет две переменная в.

1
задан 16 November 2014 в 20:20
2 ответа

Попробуйте удалить одинарную кавычку ' из первого определения массива. Это должно заставить его скомпилировать.

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

Затем, согласно документации, можно передать список параметров в класс или в определенный тип . Используйте его для ссылки на ваш определенный тип

hadoopfile::diskcreate_def { "${diskname}":, "${filename}": }
0
ответ дан 4 December 2019 в 08:23

Похоже, вы ищете сопоставление Drivename с filename . Сопоставления не выражаются парами массивов - они представлены хэшами .

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

Вы можете перевести это в ресурсы с помощью функции create_resources .

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

Каждый ключ в вашем хеш-коде становится заголовок ресурса, а хэш значения содержит пары атрибут / значение.

Общее замечание : Не называйте свои определения таким образом. Имя определения должно описывать то, что каждый ресурс представляет в вашей системе, например hadoopfile :: mount_volume .

0
ответ дан 4 December 2019 в 08:23

Теги

Похожие вопросы