如果 class 已在伪造模块中声明,在 Puppet 中如何覆盖 class 变量
In puppet how to override a class variable if the class is already declared in a forged module
我正在使用来自 puppetlabs 的 jenkins puppet 模块,并想在我的 jenkins 机器上安装一个特定的 java 包。我的人偶模块中伪造的 java 模块的 jenkins puppet module uses java puppet module for java installation. I want to install a particular java package in my jenkins node. So I think I need to override the java::package 变量。像这样 -
class {'java':
package => $my_jdk_package,
}
但是 java::init class 已经在 jenkins::init.pp 中被覆盖。因此我不能在我的人偶模块中重新声明 java class。
知道怎么做吗?
你可以在 jenkins class:
中将 install_java 参数设置为 false
class { 'jenkins':
install_java => false,
require => Class['java'],
}
require参数是为了保证在jenkins之前安装java。通过将 install_java 参数设置为 false,jenkins 模块将不再包含 java class。然后,这将允许您在您认为合适的时候在您的 jenkins 节点中声明 java class:
class { 'java':
package => $my_jdk_package,
}
如果您使用的是 hiera,那么您可以像这样覆盖参数:
---
java::package: 'packageyouwant'
这样您就不需要将 install_java 设置为 false,也不需要在您的 jenkins 节点中定义 java class。
我正在使用来自 puppetlabs 的 jenkins puppet 模块,并想在我的 jenkins 机器上安装一个特定的 java 包。我的人偶模块中伪造的 java 模块的 jenkins puppet module uses java puppet module for java installation. I want to install a particular java package in my jenkins node. So I think I need to override the java::package 变量。像这样 -
class {'java':
package => $my_jdk_package,
}
但是 java::init class 已经在 jenkins::init.pp 中被覆盖。因此我不能在我的人偶模块中重新声明 java class。 知道怎么做吗?
你可以在 jenkins class:
中将 install_java 参数设置为 falseclass { 'jenkins':
install_java => false,
require => Class['java'],
}
require参数是为了保证在jenkins之前安装java。通过将 install_java 参数设置为 false,jenkins 模块将不再包含 java class。然后,这将允许您在您认为合适的时候在您的 jenkins 节点中声明 java class:
class { 'java':
package => $my_jdk_package,
}
如果您使用的是 hiera,那么您可以像这样覆盖参数:
---
java::package: 'packageyouwant'
这样您就不需要将 install_java 设置为 false,也不需要在您的 jenkins 节点中定义 java class。