2016-09-24 9 views
0

мне интересно, если можно положить переменные имена ресурсов, например:Могу ли я использовать переменные и объединяться в имена ресурсов Puppet?

$c6release = $::operatingsystemmajrelease 
    ## [EPEL(5, 6, or 7)-x86_64] 
yumrepo { 'EPEL' + $c6release + '-x86_64': ## This is the part I'm asking about. 
    baseurl => "http://repo.centos.com/cobbler/repo_mirror/EPEL" + $c6release + "-x86_64/", 
    gpgcheck => false, 
    enabled => true, 
    priority => '2'; 
} 

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

Я нашел следующее в своем исследовании:

http://www.nico.schottelius.org/blog/puppet-name-is-not-as-expected-but-classname/ (Это для кукол 2.7, хотя)

https://ask.puppet.com/question/13266/trying-to-use-namevar-list-with-name-or-title-variable/

https://docs.puppet.com/puppet/latest/reference/lang_resources.html

Можно ли использовать определенный тип ресурса позаботься об этом?

https://docs.puppet.com/puppet/latest/reference/lang_defined_types.html

Во всяком случае, выше, кажется, указывают, что я могу использовать переменные для имен ресурсов кукол, но я не могу показаться, чтобы заставить их работать.

Можно ли использовать переменные в именах ресурсов?

ответ

2

Да, язык кукол поддерживает интерполяцию внутри имен ресурсов. См. Документацию here.

Что вам нужно:

$c6release = $::operatingsystemmajrelease 
    yumrepo { "EPEL${c6release}-x86_64": 
    baseurl => "http://repo.centos.com/cobbler/repo_mirror/EPEL${c6release}-x86_64/", 
    gpgcheck => false, 
    enabled => true, 
    priority => '2', 
    } 
+0

Кроме того, он должен действительно просто использовать '$ :: operatingsystemmajrelease' в интерполяции. –

+0

// Да, я, скорее всего, буду. Это всего лишь пример. Кроме того, я начал уделять немного больше внимания этому ограничению кукол-литов на 80 колок. –

+0

//, Говоря о марионетке, наверное, я задал еще один вопрос. Использует ли такая интерполяция хороший стиль марионеток? –