Menu Close

4.4. 应用一个角色

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

先决条件

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

    # dnf install rhel-system-roles
    1. 安装 Ansible Core 软件包:

      # dnf install ansible-core

      Ansible Core 软件包提供了 ansible-playbook CLI、Ansible Vault 功能以及 RHEL Ansible 内容所需的基本模块和过滤器。

  • 确保您能够创建 Ansible 清单。

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

    playbook 通常为人类可读,并以 iniyamljson 和其他文件格式定义。

  • 确保您能够创建 Ansible playbook。

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

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

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

流程

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

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

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

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

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

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

    SUBSYSTEM 替换为所需角色的名称,如 postfix, metrics, network, tlog, 或 ssh

  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.postfix

      Playbook 执行命令:

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