我是否正确使用木偶包含?
Am I using puppet contain correctly?
我正在尝试创建依赖关系,以便 phpwebserver
配置文件在 silex_api
配置文件之前 运行。
角色:
class roles::dev{
include profiles::phpwebserver
include profiles::silex_api
Class ['profiles::phpwebserver'] ->
Class ['profiles::silex_api']
}
silex_api个人资料:
class profiles::silex_api{
class { '::silex' :
package_version => '1.6.2',
}
class {'::composer' :
command_name => 'composer.phar',
target_dir => '/var',
user => 'root'
}
contain ::composer
contain ::silex
}
phpwebserver 配置文件:
class profiles::phpwebserver{
class { '::apache':
default_vhost => false,
conf_template => "apache/httpd.silex.conf.erb",
service_name => "httpd",
package_ensure => "2.2.15-39.el6",
service_enable => true,
service_ensure => "running",
}
class {'::apache::mod::php':
package_name => "php",
path => "${::apache::params::lib_path}/libphp54-php5.so",
}
contain ::apache
contain ::apache::mod::php
}
类:
class silex{
class { 'silex::install': }
class { 'silex::service': }
}
如果我在 silex_api
中明确包含所有 类,则 phpwebserver
首先配置文件成功 运行,如下所示:
class profiles::silex_api{
class { '::silex' :
package_version => '1.6.2',
}
class {'::composer' :
command_name => 'composer.phar',
target_dir => '/var',
user => 'root'
}
contain ::composer
contain ::silex::install
contain ::silex::service
}
现在我需要 contain
all sub类 对我来说似乎不正确。有没有更好的方法来完成这个,或者这是确保设置依赖关系的标准方法?
你搞砸了资源声明。您不应该 混合resources-like and include-like 声明。因此,如果您使用 contain
,请不要 通过 class
关键字再次声明 class。
我认为您的 class roles::dev
定义正确。您应该从个人资料中删除双重声明:
silex_api个人资料:
class profiles::silex_api{
contain composer
contain silex
}
phpwebserver 配置文件:
class profiles::phpwebserver{
contain apache
contain apache::mod::php
}
要为包含的 classes 提供参数,请使用 hiera。
我相信这是正确的方法 article.
角色:
class roles::dev{
include profiles::phpwebserver
include profiles::silex_api
Class ['profiles::phpwebserver'] ->
Class ['profiles::silex_api']
}
个人资料:
class profiles::silex_api{
class { '::silex' :
package_version => '1.6.2',
}
class {'::composer' :
command_name => 'composer.phar',
target_dir => '/var',
user => 'root'
}
contain ::composer
contain ::silex
}
模块:
class silex (
$package_name = $::silex::params::silex_package_name,
$package_version,
$release_version = "1",
) inherits ::silex::params
{
class { 'silex::install' :
package_name => $package_name,
package_version => $package_version,
release_version => $release_version,
}
contain silex::install
contain silex::config
}
我正在尝试创建依赖关系,以便 phpwebserver
配置文件在 silex_api
配置文件之前 运行。
角色:
class roles::dev{
include profiles::phpwebserver
include profiles::silex_api
Class ['profiles::phpwebserver'] ->
Class ['profiles::silex_api']
}
silex_api个人资料:
class profiles::silex_api{
class { '::silex' :
package_version => '1.6.2',
}
class {'::composer' :
command_name => 'composer.phar',
target_dir => '/var',
user => 'root'
}
contain ::composer
contain ::silex
}
phpwebserver 配置文件:
class profiles::phpwebserver{
class { '::apache':
default_vhost => false,
conf_template => "apache/httpd.silex.conf.erb",
service_name => "httpd",
package_ensure => "2.2.15-39.el6",
service_enable => true,
service_ensure => "running",
}
class {'::apache::mod::php':
package_name => "php",
path => "${::apache::params::lib_path}/libphp54-php5.so",
}
contain ::apache
contain ::apache::mod::php
}
类:
class silex{
class { 'silex::install': }
class { 'silex::service': }
}
如果我在 silex_api
中明确包含所有 类,则 phpwebserver
首先配置文件成功 运行,如下所示:
class profiles::silex_api{
class { '::silex' :
package_version => '1.6.2',
}
class {'::composer' :
command_name => 'composer.phar',
target_dir => '/var',
user => 'root'
}
contain ::composer
contain ::silex::install
contain ::silex::service
}
现在我需要 contain
all sub类 对我来说似乎不正确。有没有更好的方法来完成这个,或者这是确保设置依赖关系的标准方法?
你搞砸了资源声明。您不应该 混合resources-like and include-like 声明。因此,如果您使用 contain
,请不要 通过 class
关键字再次声明 class。
我认为您的 class roles::dev
定义正确。您应该从个人资料中删除双重声明:
silex_api个人资料:
class profiles::silex_api{
contain composer
contain silex
}
phpwebserver 配置文件:
class profiles::phpwebserver{
contain apache
contain apache::mod::php
}
要为包含的 classes 提供参数,请使用 hiera。
我相信这是正确的方法 article.
角色:
class roles::dev{
include profiles::phpwebserver
include profiles::silex_api
Class ['profiles::phpwebserver'] ->
Class ['profiles::silex_api']
}
个人资料:
class profiles::silex_api{
class { '::silex' :
package_version => '1.6.2',
}
class {'::composer' :
command_name => 'composer.phar',
target_dir => '/var',
user => 'root'
}
contain ::composer
contain ::silex
}
模块:
class silex (
$package_name = $::silex::params::silex_package_name,
$package_version,
$release_version = "1",
) inherits ::silex::params
{
class { 'silex::install' :
package_name => $package_name,
package_version => $package_version,
release_version => $release_version,
}
contain silex::install
contain silex::config
}