Почему мой определенный ресурс отказывается копировать исходные файлы, перечисленные в массиве?

Следующее работало на меня:

  • комната-rf/var/lib/dpkg/info/openqrm.*
  • комната-rf/usr/share/openqrm
  • комната-rf/etc/default/openqrm
  • комната-rf/etc/init.d/openqrm
  • склонный - получают чистку openqrm
1
задан 9 August 2012 в 18:54
1 ответ

$ file является атрибутом. Если вы хотите использовать имя экземпляра определения (один из элементов в массиве, который вы используете при объявлении aptfile), вы должны использовать $ name.

Итак, если бы вы сохранили все как есть, вы бы сделайте что-нибудь вроде этого:

aptfile {'somename':
  file => ['apt.conf', 'sources.list'],
}

Однако то, что вы, вероятно, ищете, будет примерно таким:

define aptfile(
  $base_path = '/etc/apt',
) {
  file {"${base_path}/${name}":
    source => "puppet:///modules/${module_name}/files/${name}",
  }
}

Обратите внимание, что $ name происходит от заголовка / имени ресурса (define, по сути, является своего рода настраиваемым ресурсом), когда вы объявить это. Применяется ко всем ресурсам. Когда вы используете массив при объявлении файла ресурсов {['f1.txt', 'f2.txt']:}, вы просто уплотняете объявление нескольких файловых ресурсов ... file {'f1.txt':}, file {'f2.txt':}. $ name внутри тела - это имя объявления ресурса в игре, пока оно анализируется / обрабатывается.

Затем назовите его, как вы:

aptfile {['apt.conf', 'sources.list']: }

Я просто использую шаблоны с content => template ('modulename / somefile.erb'), даже если мне не нужны функциональные возможности шаблона только потому, что путь более разумный (с минимальными дополнительными накладными расходами, как мне кажется). С нетерпением жду source => принятия того же более разумного использования пути.

Марк

2
ответ дан 3 December 2019 в 21:44

Теги

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