首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >傀儡角色/配置文件,多个配置文件实例的角色-参数是如何工作的?

傀儡角色/配置文件,多个配置文件实例的角色-参数是如何工作的?
EN

Stack Overflow用户
提问于 2017-11-24 08:22:00
回答 2查看 815关注 0票数 3

我只是在学习木偶(我们本地有木偶企业)。我试图理解“角色和配置文件”模式。请原谅任何术语上的错误。

如何使用配置文件的多个实例创建一个角色,其中配置文件实例仅通过参数不同?我猜希拉在什么地方能参与其中,但我不太清楚。

例如:

木偶档案:

代码语言:javascript
复制
mod 'puppetlabs-apache', '2.3.0'

apache.pp配置文件

代码语言:javascript
复制
class profile::apache (
    String $port = '80',
) {

  class { 'apache':
    listen => $port,
  }

}

twoapaches.pp角色

代码语言:javascript
复制
class role::twoapaches {
  include profile::apache
  include profile::apache
}

我希望在端口90和100上有一个两个apache角色的实例--我如何做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-24 08:55:10

实际上,不能在木偶中使用这样的类;类只能在每个节点声明一次。

您可能需要一些定义类型化蛹实验室/阿帕奇模块中。当您需要在单个节点上多次声明用户定义的“资源”时,将使用定义的类型。

例如,简介可以是:

代码语言:javascript
复制
class profile::two_vhosts {
  apache::vhost { 'ip1.example.com':
    ip      => ['127.0.0.1','169.254.1.1'],
    port    => '80',
    docroot => '/var/www/ip',
  }
  apache::vhost { 'ip2.example.com':
    ip      => ['127.0.0.1'],
    port    => '8080',
    docroot => '/var/www/ip',
  }
} 

其作用可能是:

代码语言:javascript
复制
class role::two_vhosts {
  include profile::two_vhosts
  include profile::other_stuff
  ...
}

如果需要将端口传入其中,则可能有:

代码语言:javascript
复制
class profile::two_vhosts (
  String $ip1_port,
  String $ip2_port, 
) {
  apache::vhost { 'ip1.example.com':
    ip      => ['127.0.0.1','169.254.1.1'],
    port    => $ip1_port,
    docroot => '/var/www/ip',
  }
  apache::vhost { 'ip2.example.com':
    ip      => ['127.0.0.1'],
    port    => $ip2_port,
    docroot => '/var/www/ip',
  }
} 

这样,你就可以扮演以下角色:

代码语言:javascript
复制
class role::two_vhosts {
  class { 'profile::two_vhosts':
    ip1_port => '80',
    ip2_port => '8080',
  } 
  include profile::other_stuff
  ...
}

但是在实践中,人们在这里结合Hiera (参考)使用自动参数查找功能。

票数 4
EN

Stack Overflow用户

发布于 2018-03-16 21:03:05

我也会用Hiera作为参数。通过这种方式,您可以在需要时轻松地更改端口,并且遵守不放置角色内部的类的规则。

代码语言:javascript
复制
class role::two_vhosts {
  include profile::two_vhosts
  include profile::other_stuff
  ...
}

当包含角色时,Hiera配置如下所示:

代码语言:javascript
复制
profile::two_vhosts::ip1_port: '80'
profile::two_vhosts::ip2_port: '8080'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47469073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档