12.2. 配置并运行远程命令
您要在远程主机上执行的命令都必须定义为作业模板。在定义了作业模板后,您可以多次执行它。
12.2.1. 设置作业模板 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
Satellite 提供了多个默认作业模板,供您用于执行作业,在 下找到它们。如果您找到一个模板适合默认模板,请继续 第 12.2.2 节 “执行作业”。
您还可以使用默认模板作为自行开发的基础。默认作业模板被锁定以进行编辑,因此您必须首先克隆模板才能修改它。
过程 12.1. 要创建作业模板,请执行以下操作:
- 前往
。 - 单击 。作为替代方案,您可以在 Actions 列中修改现有模板 -,从下拉菜单中选择 Clone。
- 配置作业模板:
- 在 Template 选项卡中,为您的作业模板输入一个唯一名称。选择 Default 以使模板适用于所有机构和位置。您可以使用 Template 编辑器 手动插入模板,或通过单击 从文本文件上传模板。模板使用嵌入式 Ruby (ERB)模板语法,如需更多信息,请参阅 第 12.2.4 节 “创建高级模板”。需要高级模板,例如执行执行电源操作的作业;有关如何在自定义模板中包含 Power Action - SSH 默认模板 的信息,请参阅 例 12.4 “模板中包含电源操作”。
- 在 Job 选项卡中,您可以定义作业类别(定义您自己的作业类别,或从 表 12.1 “默认作业模板目录”中列出的默认类别中选择)以及有效用户;这些设置也可以在调用作业时配置这些设置(请参阅 过程 12.2, “执行远程作业:”)。您还可以为模板命令定义输入参数。然后,在执行作业时请求这些参数。
- 剩余的选项卡支持设置模板类型、机构和位置,以及查看模板历史记录。
- 单击 。当页面刷新时,您的新模板应当会显示在作业模板列表中。
重要
请注意,只有主机编辑页面中的 Parameters 选项卡中可见的参数才能用作作业模板的输入参数。
|
作业模板类别
|
Description
|
|---|---|
| 软件包 | 执行与软件包相关的操作的模板。默认情况下,包括安装、更新和删除操作。 |
| puppet | 用于在目标主机上运行 Puppet 的模板。 |
| power | 执行电源相关操作的模板。默认包括重启和关闭操作。 |
| 命令 | 用于在远程主机上执行自定义命令的模板。 |
| 服务 | 执行服务相关操作的模板。默认包括 start、stop、restart 和 status 操作。 |
| Katello | 执行内容相关操作的模板。这些模板主要用于 Satellite Web UI 的不同部分(例如,用于内容主机的批量操作 UI),但可以单独用来执行勘误表安装等操作。 |
例 12.1. 创建 restorecon 模板
本例演示了如何创建一个名为 Run Command - restorecon 的模板,该模板将为目标主机上所选目录中所有文件恢复默认
SELinux 上下文。
- 前往
。单击 。 - 在 Name 字段中插入 Run Command - restorecon。选择 Default 以使模板可供所有机构使用。将以下文本添加到 Template 编辑器 :
restorecon -RvF <%= input("directory") %>restorecon -RvF <%= input("directory") %>Copy to Clipboard Copied! Toggle word wrap Toggle overflow <%= input ("directory")%> 字符串将在作业调用期间被用户定义的目录替代。 - 在 Job 选项卡中,执行以下操作:
- 将 Job category 设置为
commands。 - 单击 以允许作业自定义。
将目录插入到 Name 字段中。输入名称必须与 Template 编辑器 指定的值匹配。 - 点 Required,以便在没有用户指定参数的情况下无法执行命令。
- 从 Input type 下拉列表中选择
User input。另外,提供在作业调用期间要显示的 描述,如 Target directory for restorecon。
- 单击 。
有关如何根据此模板执行作业的详情,请参考 例 12.2 “在多个主机上执行 restorecon 模板”。
12.2.2. 执行作业 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
本节演示了如何根据一个或多个主机根据作业模板运行作业。
过程 12.2. 执行远程作业:
- 导航到
,再为您的作业选择目标主机。您可以使用搜索字段缩小主机列表范围。 - 在屏幕右上角的 Select Action 菜单中,选择 Run Job。这将把您带到 Job invocation 页面。或者,如果您只以一个主机为目标,点其名称并点主机信息页面上的 。请注意,您也可以使用 按钮从 Job Templates 页面中调用作业。
- 在 Job invocation 页面中,定义主要的作业设置:
- 选择要使用的 Job category 和 Job template。需要这些设置。
- (可选)在 Bookmark 列表中选择存储的搜索字符串来指定目标主机。
- (可选)通过插入搜索查询 来进一步限制目标主机。Resolves to 行显示受查询影响的主机数量。在更改查询后,使用刷新按钮重新计算数字。preview 图标将列出目标主机。
- 剩余的设置取决于所选作业模板。有关在模板中添加自定义参数的详情,请参考 过程 12.1, “要创建作业模板,请执行以下操作:”。
- 单击 Display advanced fields 将显示该作业的高级设置。有些高级设置取决于作业模板,以下设置是常规的:
- 有效的 用户定义用于执行作业的用户,默认为 SSH 用户。
- 并发级别 定义一次执行的最大作业数,这可防止在大量主机上执行作业时防止系统资源的过载。
- 时间范围 定义作业应终止的时间间隔(以秒为单位)。在定义的时间间隔中无法启动的任务,例如,如果上一个任务需要很长时间才能完成,则会取消。
- 查询 类型定义何时评估搜索查询。这有助于保留对调度任务的最新查询。
并发级别 和时间范围 设置允许您定制作业执行,以适应基础架构硬件和需求。 - 如果要立即执行作业,请确保 Schedule 设置为
Execute now。您还可以定义一个一次性的未来作业,或者设置周期性作业。对于周期性任务,您可以定义开始和结束日期、运行的数目和频率。您还可以使用 cron 语法来定义重复性。有关 cron 的更多信息,请参阅 Red Hat Enterprise Linux 7 系统管理员指南中的 自动化 系统任务部分。 - 单击 。这将显示 Job Overview 页面,作业完成时也会显示作业的状态。
例 12.2. 在多个主机上执行 restorecon 模板
本例演示了如何根据在多个主机 例 12.1 “创建 restorecon 模板” 中创建的模板执行作业。该作业将在
/home/ 目录下的所有文件中恢复 SELinux 上下文。
- 导航到
并选择目标主机。从 Select Action 下拉列表中选择 Run Job。 - 在 Job invocation 页面中,选择
Commandsjob 类别和Run Command - restorecon作业模板。 - 在 目录 字段中键入
/home。 - 将 Schedule 设置为
Execute now。 - 单击 。您会进入 Job invocation 页面,您可以在其中监控作业执行的状态。
12.2.3. 监控作业 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
您可以在作业运行时监控作业的进度。这可帮助进行可能需要的任何故障排除。
过程 12.3. 监控作业:
- 导航到 Job 页面。如果您使用
Execute now设置触发作业,则会自动显示此页面。要监控调度的作业,请导航到,再选择要检查的作业运行。 - 在 Job 页面上,单击 Hosts 选项卡。这将显示其上运行作业的主机的列表。
- 在 Host 列中,单击要检查的主机的名称。这将显示 Commands 页面的 Details,您可以在其中实时监控作业执行。
- 随时单击 ,以返回到 Job Details 页面。
12.2.4. 创建高级模板 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在创建作业模板时,您可以在 Template 编辑器 字段中导入现有模板 - 这称为 渲染。这样,您可以组合模板,或者从一般创建更具体的模板。
以下模板组合了默认模板,以在 Red Hat Enterprise Linux 系统上安装和启动
httpd 服务:
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'httpd' %> <%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'httpd' %>
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => 'httpd' %>
<%= render_template 'Service Action - SSH Default', :action => 'start', :service_name => 'httpd' %>
以上模板直接指定渲染模板的参数值。也可以使用
input() 方法允许用户在作业执行中为渲染的模板定义输入。例如,您可以使用以下语法:
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>
<%= render_template 'Package Action - SSH Default', :action => 'install', :package => input("package") %>
使用上述模板,您必须从渲染的模板导入参数定义。为此,请导航到 Jobs 选项卡,单击 ,然后从 Target template 下拉列表中选择呈现的模板。您可以导入所有参数,或者指定一个以逗号分隔的列表。
例 12.3. 渲染 restorecon 模板
本例演示了如何创建从 例 12.1 “创建 restorecon 模板” 中创建的 Run command - restorecon 模板派生的模板。此模板不需要在作业执行时输入用户,它将在目标主机上的
/home/ 目录下的所有文件中恢复 SELinux 上下文。
按照 第 12.2.1 节 “设置作业模板” 所述创建新模板,并在 Template 编辑器 屏幕中指定以下字符串:
<%= render_template("Run Command - restorecon", :directory => "/home") %>
<%= render_template("Run Command - restorecon", :directory => "/home") %>
例 12.4. 模板中包含电源操作
本例演示了如何为执行电源操作(如重启)设置作业模板。此流程可防止 Satellite 在重启时将断开连接异常解释为错误,因此远程执行作业可以正常工作。
按照 第 12.2.1 节 “设置作业模板” 所述创建新模板,并在 Template 编辑器 屏幕中指定以下字符串:
<%= render_template("Power Action - SSH Default", :action => "restart") %>
<%= render_template("Power Action - SSH Default", :action => "restart") %>