Dependencies 我是否正确使用了puppet contain?
我正在尝试创建依赖关系,以便在Dependencies 我是否正确使用了puppet contain?,dependencies,puppet,contain,Dependencies,Puppet,Contain,我正在尝试创建依赖关系,以便在silex_api配置文件之前运行phpwebserver配置文件 角色: class roles::dev{ include profiles::phpwebserver include profiles::silex_api Class ['profiles::phpwebserver'] -> Class ['profiles::silex_api'] } class profiles::silex_api{
silex_api
配置文件之前运行phpwebserver
配置文件
角色:
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 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配置文件:
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 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配置文件:
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 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': }
}
课程:
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 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
,请不要通过class
关键字再次声明类
我认为您的类角色::dev
定义正确。您应该从配置文件中删除双重声明:
silex_api简介:
class profiles::silex_api{
contain composer
contain silex
}
phpwebserver配置文件:
class profiles::phpwebserver{
contain apache
contain apache::mod::php
}
要为包含的类提供参数,请使用
您也可以考虑使用函数而不是. 根据这一点,我认为这是正确的方法
角色: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
}
配置文件:
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
}
模块:
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
}
谢谢,但我不知道自动数据绑定将如何解决这里的依赖性问题?RE:“如果您使用contain,请不要再次声明类”-《puppet初学者指南》正是这样做的: