gpt4 book ai didi

Puppet 角色/配置文件,具有多个配置文件实例的角色 - 参数如何工作?

转载 作者:行者123 更新时间:2023-12-01 11:18:21 24 4
gpt4 key购买 nike

我刚刚学习 Puppet(我们在本地有 Puppet Enterprise)。我试图理解“角色和配置文件”模式。请原谅任何命名错误。

如何创建具有多个配置文件实例的角色,其中配置文件实例仅参数不同?我猜 Hiera 在某个地方适合这个,但我不确定如何。

例如:

puppet 文件:

mod 'puppetlabs-apache', '2.3.0'

apache.pp 配置文件

class profile::apache (
String $port = '80',
) {

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

}

twoapaches.pp 角色

class role::twoapaches {
include profile::apache
include profile::apache
}

我想要一个 twoapaches 角色的实例在端口 90 和 100 上有一个 apache - 我该怎么做?

最佳答案

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

您可能需要一些 defined typespuppetlabs/apache模块。当您需要在单个节点上多次声明用户定义的“资源”时,使用定义的类型。

例如个人资料可能是:

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',
}
}

角色可能是:

class role::two_vhosts {
include profile::two_vhosts
include profile::other_stuff
...
}

如果您需要然后传递端口,您可能有:

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',
}
}

然后您可以扮演以下角色:

class role::two_vhosts {
class { 'profile::two_vhosts':
ip1_port => '80',
ip2_port => '8080',
}
include profile::other_stuff
...
}

但实际上,人们在这里将自动参数查找功能与 Hiera (ref) 结合使用。

关于Puppet 角色/配置文件,具有多个配置文件实例的角色 - 参数如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com