3.2. 参数
Red Hat Satellite 参数定义置备主机时要使用的键值对。它们类似于 Puppet 的默认范围参数的概念。您可以在使用 Puppet 设置主机时定义参数。
参数的类型
Red Hat Satellite 有两个参数:
- 简单参数
 - 定义键值对之间的关系的字符串参数。它们不能被用户配置覆盖,但它们会根据 Satellite 的参数层次结构覆盖。以下参数是 Red Hat Satellite 中的简单参数:全局、组织级、位置级、域级、子网级别、操作系统级别、主机组和主机参数。
 - 智能类参数
 - 为键定义值的复杂参数,但为特定对象类型允许条件参数、验证和覆盖。智能类参数使 Puppet 类能够获取外部数据。它们在 Puppet 类中使用,在 Puppet 术语中称为参数化类。这些参数的层次结构可以在 Web UI 中配置。
 
以下参数层次结构适用于简单参数:
- 全局参数
 适用于 Satellite 中的每个主机的默认参数。在 Configure > Global parameters 中配置。要使用 Hammer CLI 设置全局参数,请输入以下命令:
hammer global-parameter set --name parameter_name --value parameter_value
# hammer global-parameter set --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 机构级参数
 影响给定机构中的所有主机的参数。机构级参数覆盖全局参数。在 Administer > Organizations > Edit > Parameters 中进行配置。要使用 Hammer CLI 设置机构级参数,请输入以下命令:
hammer organization set-parameter --organization "Your Organization" \ --name parameter_name --value parameter_value
# hammer organization set-parameter --organization "Your Organization" \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 位置级别参数
 影响给定位置中的所有主机的参数。位置级别参数覆盖机构级别和全局参数。在 Administer > Locations > Edit > Parameters 中进行配置。要使用 Hammer CLI 设置位置级参数,请输入以下命令:
hammer location set-parameter --location "Your_Location" \ --name parameter_name --value parameter_value
# hammer location set-parameter --location "Your_Location" \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 域参数
 影响给定域中的所有主机的参数。域参数覆盖位置级别或更高参数。在 Infrastructure > Domains > [choose_a_domain] > Parameters.要使用 Hammer CLI 设置域参数,请输入以下命令:
hammer domain set-parameter --domain domain_name \ --name parameter_name --value parameter_value
# hammer domain set-parameter --domain domain_name \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 子网参数
 影响给定子网中有主接口的所有主机的参数。子网参数覆盖主机组系统级别和更高的参数。在 Infrastructure > Subnets > [choose_a_subnet] > Parameters.要使用 Hammer CLI 设置子网参数,请输入以下命令:
hammer subnet set-parameter --subnet subnet_name \ --name parameter_name --value parameter_value
# hammer subnet set-parameter --subnet subnet_name \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 操作系统级别参数
 影响给定操作系统所有主机的参数。操作系统级别的参数覆盖域或更高参数。在 Hosts > Operating system > [choose_an_ operating_system] > Parameters.要使用 Hammer CLI 设置操作系统参数,请输入以下命令:
hammer os set-parameter --operatingsystem os_name \ --name parameter_name --value parameter_value
# hammer os set-parameter --operatingsystem os_name \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 主机组参数
 影响给定主机组中的所有主机的参数。主机组参数覆盖操作系统级别或更高参数。在 Configure > Host Groups > [choose_a_host_group] > Parameters.要使用 Hammer CLI 设置主机组参数,请输入以下命令:
hammer hostgroup set-parameter --hostgroup hostgroup_name \ --name parameter_name --value parameter_value
# hammer hostgroup set-parameter --hostgroup hostgroup_name \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 主机参数
 影响特定主机的参数。所有之前继承的参数在参数子选项卡中可见,并可被覆盖。在 Hosts > All hosts > Edit > Parameters.要使用 Hammer CLI 设置主机参数,请输入以下命令:
hammer host set-parameter --host host_name \ --name parameter_name --value parameter_value
# hammer host set-parameter --host host_name \ --name parameter_name --value parameter_valueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 
将参数用于 Puppet 类
Red Hat Satellite 有两种方法可以为要用于 Puppet 类的 Puppet master 提供值:
- 智能变量
 - 为不含智能类参数的类,为 Puppet 宿主提供全局参数的工具,格式为 key-value 形式。它们启用覆盖 Puppet 清单中的参数值。当类没有智能类参数或者需要全局参数时,它们被设计为使用。它们可以有多个可能的值,它们都取决于用户可以应用的分层上下文或各种条件。Puppet 在 Puppet 具有参数化类前存在,并且现在保持向后兼容性,或者用于需要验证的全局参数,仅用于与特定 Puppet 类使用,以及用于字符串以外的类型(因为您可以仅使用简单参数)。
 - 参数化类
 - 
							包含智能类参数的 Puppet 类。类从 Puppet 宿主导入,参数的名称(如 
$::名称(首选)或$name由编写该类且无法更改的人员定义。它们允许您决定特定类而非全局的变量值。 
				配置的参数包含在每个主机的对应 YAML 文件中,并发送到 Puppet 宿主。YAML 文件可在特定主机的页面中的 Web UI 中查看。您不应该手动更改 /etc/foreman/settings.yaml 配置文件,因为它们在下次运行 satellite-installer 命令时被覆盖。
			
卫星中默认启用参数化类支持。要确认它已启用,请导航到 Administer > Settings,选择 Puppet 选项卡,并确保 ENC 中的 Parameterized Classes 设置为 True。