我正在尝试创建一个依赖关系,以便在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': }
}
如果我明确包含phpwebserver
中的所有类,则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::install
contain ::silex::service
}
现在我需要contain
所有子类,对我来说,似乎不对。有没有更好的方法来实现这一点,或者这是确保设置依赖性的标准方法吗?
答案 0 :(得分:1)
你搞乱了资源声明。您不应混合resources-like and include-like声明。因此,如果您使用contain
,请再次通过class
关键字声明课程。
在我看来,class roles::dev
已正确定义。您应该从个人资料中删除双重声明:
silex_api个人资料:
class profiles::silex_api{
contain composer
contain silex
}
phpwebserver个人资料:
class profiles::phpwebserver{
contain apache
contain apache::mod::php
}
要为包含的类提供参数,请使用hiera。
答案 1 :(得分:0)
我认为这是正确的方式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
}