Puppet和Apache:$ {name}给出了' main'而不是类名

时间:2015-12-25 18:38:13

标签: apache puppet puppetlabs-apache

我尝试使用puppetlabs/apache模块配置一些Apache虚拟主机。我的问题是${name}变量。我希望DocumentRoot设置为/var/www/atoms.one,但设置为/var/www/main

我做错了什么?

我的清单:

class { apache: }

apache::vhost { 'atoms.one':
    port          => '80',
    serveraliases => [ "*.${name}" ],
    docroot       => "/var/www/${name}",
    directories   => [
        { path => "/var/www/${name}", },
    ],
}

1 个答案:

答案 0 :(得分:1)

在已定义类型的正文中,特殊变量$name表示已定义类型实例的名称/标题。但是你还没有提出一个定义类型的主体 - 相反,你已经提出了一个定义类型实例的声明,以及一个出现在顶部范围的声明。该声明并没有为$name创建一个范围,意味着与其没有任何不同的内容。

我无法在定义类型主体范围之外找到$name含义的文档,但我从经验中知道,在类中它代表类名。我想你正在看顶级范围的名称,其中“main”是合理的值。

底线是$name没有提供您尝试使用它的那种快捷方式。您可以在apache::vhost周围创建自己定义的类型包装器,并在那里执行快捷方式。或者,您可以创建自己的变量来代替$name