Red Hat Training

A Red Hat training course is available for RHEL 8

11.18. nbde_client RHEL システムロールを使用した複数の Clevis クライアントのセットアップ

nbde_client RHEL システムロールを使用すると、Clevis クライアント設定を含む Ansible Playbook を複数のシステムで準備および適用できます。

注記

nbde_client システムロールは、Tang バインディングのみをサポートします。これは、現時点では TPM2 バインディングに使用できないことを意味します。

前提条件

  • 制御ノードと管理ノードを準備している
  • 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
  • 管理対象ノードへの接続に使用するアカウントには、そのノードに対する sudo 権限がある。
  • この Playbook を実行する管理対象ノードまたは管理対象ノードのグループが、Ansible インベントリーファイルにリストされている。

手順

  1. Clevis クライアントの設定を含む Playbook を準備します。ゼロから開始するか、/usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/ ディレクトリーにある Playbook のいずれかのサンプルを使用することができます。

    # cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ~/my-clevis-playbook.yml
  2. 選択したテキストエディターで Playbook を編集します。以下に例を示します。

    # vi ~/my-clevis-playbook.yml
  3. 必要なパラメーターを追加します。以下の Playbook の例では、2 つの Tang サーバーのうち少なくとも 1 台が利用可能な場合に、LUKS で暗号化した 2 つのボリュームを自動的にアンロックするように Clevis クライアントを設定します。

    ---
    - hosts: all
    
      vars:
        nbde_client_bindings:
          - device: /dev/rhel/root
            encryption_key_src: /etc/luks/keyfile
            servers:
              - http://server1.example.com
              - http://server2.example.com
          - device: /dev/rhel/swap
            encryption_key_src: /etc/luks/keyfile
            servers:
              - http://server1.example.com
              - http://server2.example.com
    
      roles:
        - rhel-system-roles.nbde_client
  4. Playbook の構文を検証します。

    # ansible-playbook ~/my-clevis-playbook.yml --syntax-check

    このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。

  5. 終了した Playbook を適用します。

    # ansible-playbook ~/my-clevis-playbook.yml
重要

現在の nbde_client システムロールは、動的ホスト設定プロトコル (DHCP) を使用する場合のみをサポートします。静的 IP 設定のクライアントに NBDE を使用するには、次のいずれかのアクションを実行します。

  • ネットワーク設定を dracut コマンドに渡します。次に例を示します。

    # dracut -fv --regenerate-all --kernel-cmdline "ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none"
  • あるいは、静的ネットワーク情報を含む .conf ファイルを /etc/dracut.conf.d/ ディレクトリーに作成します。次に例を示します。

    # cat /etc/dracut.conf.d/static_ip.conf
    kernel_cmdline="ip=192.0.2.10::192.0.2.1:255.255.255.0::ens3:none"

    次に、初期 RAM ディスクイメージを再生成します。

  • 次のスニペットを Playbook に追加することもできます。

      tasks:
      - name: Configure a client with a static IP address during early boot
        ansible.builtin.command:
          cmd: grubby --update-kernel=ALL --args='GRUB_CMDLINE_LINUX_DEFAULT="ip={{ <ansible_default_ipv4.address> }}::{{ <ansible_default_ipv4.gateway> }}:{{ <ansible_default_ipv4.netmask> }}::{{ <ansible_default_ipv4.alias> }}:none"'

    上記のスニペットで、文字列 <ansible_default_ipv4.*> をネットワークの IP アドレスに置き換えます (例: ip={{ 192.0.2.10 }}::{{ 192.0.2.1 }}:{{ 255.255.255.0 }}::{{ ens3 }}:none)。

関連情報

  • パラメーターの詳細と、NBDE Client システムロールに関する追加情報は、rhel-system-roles パッケージをインストールし、/usr/share/doc/rhel-system-roles/nbde_client/ および /usr/share/ansible/roles/rhel-system-roles.nbde_client/ ディレクトリーを参照してください。
  • Red Hat Enable Sysadmin の記事 Looking forward to Linux network configuration in the initial ramdisk (initrd)