0

我正在尝试使用该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}", },
    ],
}
4

1 回答 1

1

在已定义类型的主体中,特殊变量$name表示已定义类型实例的名称/标题。但是您没有提供定义类型的主体——相反,您提供了定义类型实例的声明,并且出现在顶级范围内。该声明并没有创建一个范围$name来表示任何与它没有不同的东西。

我在查找$name定义类型主体范围之外的含义的文档时遇到了麻烦,但我从经验中知道,在类内部它代表类名。我想您看到的是顶级作用域的名称,其中“main”是一个合理的值。

最重要的是,$name它不提供您尝试使用它的那种快捷方式。您可以改为创建自己的定义类型包装器 around apache::vhost,并在那里进行快捷方式。或者,您可以创建自己的变量来使用,而不是$name.

于 2015-12-26T02:45:48.830 回答