Red Hat Training

A Red Hat training course is available for RHEL 8

1.3. ロールの適用

以下の手順では、特定のロールを適用する方法を説明します。

前提条件

  • rhel-system-roles パッケージが、コントロールノードとして使用するシステムにインストールされていることを確認します。

    # yum install rhel-system-roles
  • RHEL システムロールを使用する Playbook を実行するには、ansible パッケージが必要です。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 は、1 つ以上の play の一覧です。すべての play には、Ansible の変数、タスク、またはロールが含まれます。

    Playbook は人が判読でき、yaml 形式で定義されます。

手順

  1. 管理するホストおよびグループを含む必要な Ansible インベントリーを作成します。以下の例は、webservers と呼ばれるホストのグループの inventory.ini というファイルを使用します。

    [webservers]
    host1
    host2
    host3
  2. 必要なロールを含む Ansible Playbook を作成します。以下の例では、Playbook の roles: オプションを使用してロールを使用する方法を示しています。

    以下の例は、特定の playroles: オプションを使用してロールを使用する方法を示しています。

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

    すべてのロールには README ファイルが含まれます。このファイルには、ロールや、サポートされるパラメーター値の使用方法が記載されています。ロールのドキュメントディレクトリーで、特定ロール用の Playbook のサンプルを見つけることもできます。このようなドキュメンテーションディレクトリーは、rhel-system-roles パッケージでデフォルトで提供され、以下の場所に置かれます。

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

    SUBSYSTEM は、selinuxkdumpnetworktimesync、または storage などの必要なロールの名前に置き換えます。

  3. 特定のホストで Playbook を実行するには、以下のいずれかを実行する必要があります。

    • hosts: host1[,host2,…​] または hosts: all を使用するように Playbook を編集して、以下のコマンドを実行します。

      # 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