Red Hat Training

A Red Hat training course is available for RHEL 8

第 1 章 RHEL 系统角色入门

本节介绍 RHEL 系统角色是什么。另外,它介绍了如何通过 Ansible playbook 应用特定角色来执行各种系统管理任务。

1.1. RHEL 系统角色简介

RHEL 系统角色是 Ansible 角色和模块的集合。RHEL 系统角色提供了一个配置界面,用于远程管理多个 RHEL 系统。这个界面允许在多个 RHEL 版本间管理系统配置,以及处理新的主发行版本。

在 Red Hat Enterprise Linux 8 中,该接口目前由以下角色组成:

  • kdump
  • network
  • selinux
  • storage
  • certificate
  • kernel_settings
  • logging
  • metrics
  • nbde_client 和 nbde_server
  • timesync
  • tlog

所有这些角色都由 AppStream 存储库中可用的 rhel-system-roles 软件包提供。

1.2. RHEL 系统角色术语

您可以在本文档中找到以下术语:

系统角色术语

Ansible playbook
Playbook 是 Ansible 的配置、部署和编配语言。它们可以描述您希望远程系统强制使用的策略,或者在一般的 IT 进程中选择一组步骤。
控制节点
安装了 Ansible 的任何机器。您可以从任何控制节点运行命令和 playbook,调用 /usr/bin/ansible 或 /usr/bin/ansible-playbook。您可以使用任意安装了 Python 的计算机作为控制节点 - 笔记本电脑、共享桌面和服务器都可以运行 Ansible。但是,您不能使用 Windows 机器作为控制节点。您可以拥有多个控制节点。
清单(Inventory)
受管节点列表。清单文件有时也称为"hostfile"。您的清单可以为每个受管节点指定像 IP 地址等信息。清单也可以管理受管节点,创建并嵌套组以更轻松地进行扩展。如需了解更多有关清单的信息,请参阅使用清单一 节。
受管节点
使用 Ansible 管理的网络设备、服务器或两者。受管节点有时也称为 "hosts(主机)"。Ansible 未安装到受管节点上。

1.3. 应用一个角色

以下流程描述了如何应用特定角色。

先决条件

  • 确定在您要用作控制节点的系统中安装了 rhel-system-roles 软件包:

    # yum install rhel-system-roles
  • 您需要 ansible 软件包来运行使用 RHEL 系统角色的 playbook。确保启用了 Ansible Engine 软件仓库,且 ansible 软件包安装在您要用作控制节点的系统中。

    • 如果您没有 Red Hat Ansible Engine 订阅,可以使用 Red Hat Enterprise Linux 订阅提供的有限版本的 Red Hat Ansible Engine。在这种情况下,请按照以下步骤操作:

      1. 启用 RHEL Ansible Engine 存储库:

        # subscription-manager refresh
        # subscription-manager repos --enable ansible-2-for-rhel-8-x86_64-rpms
      2. 安装 Ansible Engine:

        # yum install ansible
    • 如果您有 Red Hat Ansible Engine 订阅,请按照以下所述步骤操作 如何下载和安装 Red Hat Ansible Engine?
  • 确保您可以创建 Ansible 清单。

    清单代表 Ansible playbook 使用的主机、主机组以及一些配置参数。

    playbook 通常是人类可读的,并使用 iniyamljson 和其他文件格式定义。

  • 确保您可以创建一个 Ansible playbook。

    Playbook 代表 Ansible 的配置、部署和编配语言。通过使用 playbook,您可以声明和管理远程机器的配置,部署多个远程机器,编配任何手动排序进程的步骤。

    playbook 是一个或多个 plays 的列表。每个 play 都可以包括 Ansible 变量、任务或角色。

    playbook 是人类可读的,以 yaml 格式定义。

流程

  1. 创建包含您要管理的主机和组所需的 Ansible 清单。下面是一个示例,它使用了名为 webservers 的一组主机的名为 inventory.ini 的文件:

    [webservers]
    host1
    host2
    host3
  2. 创建一个 Ansible playbook,包括所需角色。以下示例演示了如何通过 playbook 的 roles: 选项使用角色:

    以下示例演示了如何通过给定 roles: 选项使用角色 play:

    ---
    - hosts: webservers
      roles:
         - rhel-system-roles.network
         - rhel-system-roles.timesync
    注意

    每个角色都包括 README 文件,该文件记录如何使用角色和支持的参数值。您还可以在角色的文档目录中找到特定角色的示例 playbook。这些文档目录默认由 rhel-system-roles 软件包提供,并可在以下位置找到:

    /usr/share/doc/rhel-system-roles/SUBSYSTEM/

    SUBSYSTEM 替换为所需角色的名称,如 selinuxkdumpnetworktimesyncstorage

  3. 要在特定主机上执行 playbook,您必须执行以下任一操作:

    • 编辑 playbook 以使用 hosts: host1[,host2,…]hosts: all 并执行命令:

      # ansible-playbook name.of.the.playbook
    • 编辑清单,以确保要在组中定义要使用的主机,并执行以下命令:

      # ansible-playbook -i name.of.the.inventory name.of.the.playbook
    • 指定执行 ansible-playbook 命令时的所有主机:

      # ansible-playbook -i host1,host2,... name.of.the.playbook
      重要

      请注意, -i 标志指定所有可用主机的清单。如果您有多个目标主机,但要选择要针对其运行 playbook 的主机,您可以在 playbook 中添加变量以能够选择主机。例如:

      Ansible Playbook | example-playbook.yml:
      
      - hosts: "{{ target_host }}"
        roles:
           - rhel-system-roles.network
           - rhel-system-roles.timesync

      playbook 执行命令:

      # ansible-playbook -i host1,..hostn -e target_host=host5 example-playbook.yml

1.4. 其它资源



[1] 本文档会随 rhel-system-roles 软件包自动安装。