RHEL システムロールを使用したシステム管理の自動化
Red Hat Ansible Automation Platform Playbook を使用して複数のホストに RHEL をデプロイするための一貫性および反復性のある設定
概要
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
Jira からのフィードバック送信 (アカウントが必要)
- Jira の Web サイトにログインします。
- 上部のナビゲーションバーで Create をクリックします。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- ダイアログの下部にある Create をクリックします。
第1章 RHEL システムロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールを使用すると、複数の RHEL メジャーバージョンにわたる複数の RHEL システムのシステム設定をリモートで管理できます。
重要な用語と概念
以下では、Ansible 環境における重要な用語と概念を説明します。
- コントロールノード
- コントロールノードは、Ansible コマンドと Playbook を実行するシステムです。コントロールノードには、Ansible Automation Platform、Red Hat Satellite、または RHEL 9、8、または 7 ホストを使用できます。詳細は、Preparing a control node on RHEL 9 を参照してください。
- 管理対象ノード
- 管理対象ノードは、Ansible で管理するサーバーとネットワークデバイスです。管理対象ノードは、ホストと呼ばれることもあります。管理対象ノードに Ansible をインストールする必要はありません。詳細は、管理対象ノードの準備 を参照してください。
- Ansible Playbook
- Playbook では、管理対象ノード上で実現したい設定、または管理対象ノード上のシステムが実行する一連の手順を定義します。Playbook は、Ansible の設定、デプロイメント、およびオーケストレーションの言語です。
- インベントリー
- インベントリーファイルでは、管理対象ノードをリストし、各管理対象ノードの IP アドレスなどの情報を指定します。インベントリーでは、管理対象ノードを整理し、グループを作成およびネストして、スケーリングを容易にすることもできます。インベントリーファイルは、ホストファイルと呼ばれることもあります。
Red Hat Enterprise Linux 9 コントロールノードで利用可能なロールとモジュール
rhel-system-roles パッケージによって提供されるロール:
-
ad_integration: Active Directory 統合 -
aide: Advanced Intrusion Detection Environment -
bootloader: GRUB ブートローダーの管理 -
certificate: 証明書の発行と更新 -
cockpit: Web コンソールのインストールと設定 -
crypto_policies: システム全体の暗号化ポリシー -
fapolicy: ファイルアクセスポリシーデーモンの設定 -
firewall: firewalld の管理 -
ha_cluster: HA クラスターの管理 -
journald: systemd journald の管理 -
kdump: カーネルダンプの管理 -
kernel_settings: カーネル設定の管理 -
logging: ロギングの設定 -
metrics: パフォーマンス監視とメトリクス -
nbde_client: Network Bound Disk Encryption クライアント -
nbde_server: Network Bound Disk Encryption サーバー -
network: ネットワーク設定 -
podman: Podman コンテナーの管理 -
postfix: Postfix の設定 -
postgresql: PostgreSQL の設定 -
rhc: RHEL のサブスクライブと Insights クライアントの設定 -
selinux: SELinux の管理 -
ssh: SSH クライアントの設定 -
sshd: SSH サーバーの設定 -
storage: ストレージの管理 -
systemd: systemd ユニットの管理 -
timesync: 時刻同期 -
tlog: ターミナルセッションの記録 -
vpn: IPsec VPN の設定
ansible-collection-microsoft-sql パッケージによって提供されるロール:
-
microsoft.sql.server: Microsoft SQL Server
ansible-collection-redhat-rhel_mgmt パッケージによって提供されるモジュール:
-
rhel_mgmt.ipmi_boot: ブートデバイスの設定 -
rhel_mgmt.ipmi_power: システムの電源状態の設定 -
rhel_mgmt.redfish_command: アウトオブバンド管理用 (OOB) コントローラーの管理 -
rhel_mgmt.redfish_command: OOB コントローラーからの情報の照会 -
rhel_mgmt.redfish_command: BIOS、UEFI、および OOB コントローラーの管理
第2章 RHEL システムロールを使用するためのコントロールノードと管理対象ノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
個々の RHEL システムロールを使用してサービスと設定を管理するには、その前に、コントロールノードと管理対象ノードを準備する必要があります。
2.1. RHEL 9 でのコントロールノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールを使用する前に、コントロールノードを設定する必要があります。次に、このシステムは、Playbook に従ってインベントリーから管理対象ホストを設定します。
前提条件
- システムはカスタマーポータルに登録されます。
-
Red Hat Enterprise Linux Serverサブスクリプションがシステムにアタッチされている。 -
オプション:
Ansible Automation Platformサブスクリプションがシステムにアタッチされている。
手順
Playbook を管理および実行するための
ansibleという名前のユーザーを作成します。useradd ansible
[root@control-node]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 新しく作成した
ansibleユーザーに切り替えます。su - ansible
[root@control-node]# su - ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow このユーザーとして残りの手順を実行します。
SSH の公開鍵と秘密鍵を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow キーファイルの推奨されるデフォルトの場所を使用します。
- オプション: 接続を確立するたびに Ansible が SSH キーのパスワードを要求しないように、SSH エージェントを設定します。
~/.ansible.cfgファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記~/.ansible.cfgファイルの設定は優先度が高く、グローバルな/etc/ansible/ansible.cfgファイルの設定をオーバーライドします。これらの設定を使用して、Ansible は次のアクションを実行します。
- 指定されたインベントリーファイルでホストを管理します。
-
管理対象ノードへの SSH 接続を確立するときに、
remote_userパラメーターで設定されたアカウントを使用します。 -
sudoユーティリティーを使用して、rootユーザーとして管理対象ノードでタスクを実行します。 - Playbook を適用するたびに、リモートユーザーの root パスワードの入力を求められます。これは、セキュリティー上の理由から推奨されます。
管理対象ホストのホスト名をリストする
~/inventoryファイルを INI または YAML 形式で作成します。インベントリーファイルでホストのグループを定義することもできます。たとえば、以下は、3 つのホストとUSという名前の 1 つのホストグループを含む INI 形式のインベントリーファイルです。managed-node-01.example.com [US] managed-node-02.example.com ansible_host=192.0.2.100 managed-node-03.example.com
managed-node-01.example.com [US] managed-node-02.example.com ansible_host=192.0.2.100 managed-node-03.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールノードはホスト名を解決できる必要があることに注意してください。DNS サーバーが特定のホスト名を解決できない場合は、ホストエントリーの横に
ansible_hostパラメーターを追加して、その IP アドレスを指定します。RHEL システムロールをインストールします。
Ansible Automation Platform のない RHEL ホストに、
rhel-system-rolesパッケージをインストールします。dnf install rhel-system-roles
[root@control-node]# dnf install rhel-system-rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
/usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/ディレクトリーにコレクションをインストールし、依存関係としてansible-coreパッケージをインストールします。Ansible Automation Platform で、
ansibleユーザーとして次の手順を実行します。-
~/.ansible.cfgファイルで コンテンツのプライマリーソースとして Red Hat Automation Hub を定義します。 Red Hat Automation Hub から
redhat.rhel_system_rolesコレクションをインストールします。ansible-galaxy collection install redhat.rhel_system_roles
[ansible@control-node]$ ansible-galaxy collection install redhat.rhel_system_rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、コレクションを
~/.ansible/collections/ansible_collections/redhat/rhel_system_roles/ディレクトリーにインストールします。
-
次のステップ
- 管理対象ノードを準備します。詳細は、管理対象ノードの準備 を参照してください。
2.2. 管理対象ノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
管理対象ノードはインベントリーにリストされているシステムであり、Playbook に従ってコントロールノードによって設定されます。管理対象ホストに Ansible をインストールする必要はありません。
前提条件
- コントロールノードを準備している。詳細は、Preparing a control node on RHEL 9 を参照してください。
コントロールノードから SSH アクセスできる。
重要rootユーザーとしての直接 SSH アクセスはセキュリティーリスクを引き起こします。このリスクを軽減するには、管理対象ノードを準備するときに、このノード上にローカルユーザーを作成し、sudoポリシーを設定します。続いて、コントロールノードの Ansible は、ローカルユーザーアカウントを使用して管理対象ノードにログインし、rootなどの別のユーザーとして Playbook を実行できます。
手順
ansibleという名前のユーザーを作成します。useradd ansible
[root@managed-node-01]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールノードは後でこのユーザーを使用して、このホストへの SSH 接続を確立します。
ansibleユーザーのパスワードを設定します。passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.
[root@managed-node-01]# passwd ansible Changing password for user ansible. New password: <password> Retype new password: <password> passwd: all authentication tokens updated successfully.Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible が
sudoを使用してrootユーザーとしてタスクを実行する場合は、このパスワードを入力する必要があります。ansibleユーザーの SSH 公開鍵を管理対象ノードにインストールします。ansibleユーザーとしてコントロールノードにログインし、SSH 公開鍵を管理対象ノードにコピーします。ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.
[ansible@control-node]$ ssh-copy-id managed-node-01.example.com /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'managed-node-01.example.com (192.0.2.100)' can't be established. ECDSA key fingerprint is SHA256:9bZ33GJNODK3zbNhybokN/6Mq7hu3vpBXDrCxe7NAvo.Copy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、
yesと入力して接続します。Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keysCopy to Clipboard Copied! Toggle word wrap Toggle overflow プロンプトが表示されたら、パスワードを入力します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コントロールノードでコマンドをリモートで実行して、SSH 接続を確認します。
ssh managed-node-01.example.com whoami ansible
[ansible@control-node]$ ssh managed-node-01.example.com whoami ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ansibleユーザーのsudo設定を作成します。visudoコマンドを使用して、/etc/sudoers.d/ansibleファイルを作成および編集します。visudo /etc/sudoers.d/ansible
[root@managed-node-01]# visudo /etc/sudoers.d/ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通常のエディターではなく
visudoを使用する利点は、このユーティリティーがファイルをインストールする前に解析エラーなどの基本的なチェックを提供する点にあります。/etc/sudoers.d/ansibleファイルで、要件に応じたsudoersポリシーを設定します。次に例を示します。ansibleユーザーのパスワードを入力した後、このホスト上で任意のユーザーおよびグループとしてすべてのコマンドを実行する権限をansibleユーザーに付与するには、以下を使用します。ansible ALL=(ALL) ALL
ansible ALL=(ALL) ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansibleユーザーのパスワードを入力せずに、このホスト上で任意のユーザーおよびグループとしてすべてのコマンドを実行する権限をansibleユーザーに付与するには、以下を使用します。ansible ALL=(ALL) NOPASSWD: ALL
ansible ALL=(ALL) NOPASSWD: ALLCopy to Clipboard Copied! Toggle word wrap Toggle overflow
または、セキュリティー要件に合わせてより細かいポリシーを設定します。
sudoersポリシーの詳細は、sudoers(5)man ページを参照してください。
検証
すべての管理対象ノード上のコントロールノードからコマンドを実行できることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ハードコーディングされたすべてのホストグループには、インベントリーファイルにリストされているすべてのホストが動的に含まれます。
Ansible
commandモジュールを使用して管理対象ノードでwhoamiユーティリティーを実行し、権限昇格が正しく機能することを確認します。ansible all -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root ...
[ansible@control-node]$ ansible all -m command -a whoami BECOME password: <password> managed-node-01.example.com | CHANGED | rc=0 >> root ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが root を返した場合、管理対象ノード上で
sudoが正しく設定されています。
第3章 Ansible vault リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、Playbook で、管理対象ホストを設定するために、パスワード、API キー、その他のシークレットなどの機密データを使用する必要があります。この情報を変数またはその他の Ansible 互換ファイルにプレーンテキストで保存すると、それらのファイルにアクセスできるすべてのユーザーが機密データを読み取ることができるため、セキュリティー上のリスクが生じます。
Ansible Vault を使用すると、機密情報を暗号化、復号、表示、および編集できます。それらは次のように含めることができます。
- Ansible Playbook に挿入した変数ファイル
- ホスト変数とグループ変数
- Playbook を実行するときに引数として渡される変数ファイル
- Ansible ロールで定義された変数
Ansible Vault を使用すると、個々の変数、ファイル全体、さらには YAML ファイルなどの構造化データを安全に管理できます。このデータはバージョン管理システムに安全に保存したり、機密情報を公開することなくチームメンバーと共有したりできます。
ファイルは、Advanced Encryption Standard (AES256) の対称暗号化によって保護されており、データの暗号化と復号の両方に単一のパスワードまたはパスフレーズが使用されます。この方法は第三者によって正式に監査されていないことに注意してください。
管理を簡素化するには、機密変数とその他のすべての変数が別々のファイルまたはディレクトリーに保存されるように Ansible プロジェクトを設定するのが合理的です。次に、ansible-vault コマンドを使用して機密変数を含むファイルを保護できます。
暗号化されたファイルの作成
次のコマンドは、新しい Vault パスワードの入力を求めます。次に、デフォルトのエディターを使用して機密変数を保存するためのファイルを開きます。
ansible-vault create vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
# ansible-vault create vault.yml
New Vault password: <vault_password>
Confirm New Vault password: <vault_password>
暗号化されたファイルの表示
次のコマンドは、既存の Vault パスワードの入力を求めます。次に、すでに暗号化されたファイルの機密コンテンツを表示します。
ansible-vault view vault.yml Vault password: <vault_password> my_secret: "yJJvPqhsiusmmPPZdnjndkdnYNDjdj782meUZcw"
# ansible-vault view vault.yml
Vault password: <vault_password>
my_secret: "yJJvPqhsiusmmPPZdnjndkdnYNDjdj782meUZcw"
暗号化ファイルの編集
次のコマンドは、既存の Vault パスワードの入力を求めます。次に、すでに暗号化されたファイルを開き、デフォルトのエディターを使用して機密変数を更新します。
ansible-vault edit vault.yml Vault password: <vault_password>
# ansible-vault edit vault.yml
Vault password: <vault_password>
既存のファイルの暗号化
次のコマンドは、新しい Vault パスワードの入力を求めます。次に、既存の暗号化されていないファイルを暗号化します。
ansible-vault encrypt vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password> Encryption successful
# ansible-vault encrypt vault.yml
New Vault password: <vault_password>
Confirm New Vault password: <vault_password>
Encryption successful
既存のファイルの復号
次のコマンドは、既存の Vault パスワードの入力を求めます。次に、既存の暗号化されたファイルを復号します。
ansible-vault decrypt vault.yml Vault password: <vault_password> Decryption successful
# ansible-vault decrypt vault.yml
Vault password: <vault_password>
Decryption successful
暗号化されたファイルのパスワードを変更する
次のコマンドは、元の Vault パスワードの入力を求め、次に新しい Vault パスワードの入力を求めます。
ansible-vault rekey vault.yml Vault password: <vault_password> New Vault password: <vault_password> Confirm New Vault password: <vault_password> Rekey successful
# ansible-vault rekey vault.yml
Vault password: <vault_password>
New Vault password: <vault_password>
Confirm New Vault password: <vault_password>
Rekey successful
Playbook での Ansible vault 変数の基本的な適用
Ansible Playbook の vars_files セクションに変数を含むファイル (vault.yml) を読み込み、通常の変数と同じように中括弧を使用します。次に、ansible-playbook --ask-vault-pass コマンドを使用して Playbook を実行し、パスワードを手動で入力します。または、パスワードを別のファイルに保存し、ansible-playbook --vault-password-file /path/to/my/vault-password-file コマンドを使用して Playbook を実行します。
第4章 RHEL システムロールを使用した Active Directory への RHEL システムの参加 リンクのコピーリンクがクリップボードにコピーされました!
組織で Microsoft Active Directory (AD) を使用してユーザー、グループ、およびその他のリソースを集中管理している場合は、Red Hat Enterprise Linux (RHEL) ホストを Microsoft AD に参加させることができます。たとえば、AD ユーザーが RHEL にログインできるようになり、認証された AD ユーザーが RHEL ホスト上のサービスを利用できるようになります。ad_integration RHEL システムロールを使用すると、Red Hat Enterprise Linux システムの Active Directory (AD) ドメインへの統合を自動化できます。
ad_integration ロールは、Identity Management (IdM) 環境を使用せずに直接 AD 統合を使用するデプロイメント用です。IdM 環境の場合は、ansible-freeipa ロールを使用します。
4.1. ad_integration RHEL システムロールを使用した Active Directory への RHEL システムの参加 リンクのコピーリンクがクリップボードにコピーされました!
ad_integration RHEL システムロールを使用すると、RHEL を Active Directory (AD) ドメインに参加させるプロセスを自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードが、AD の DNS エントリーを解決できる DNS サーバーを使用している。
- コンピューターをドメインに参加させる権限を持つ AD アカウントの認証情報がある。
必要なポートが開いていることを確認する。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。usr: administrator pwd: <password>
usr: administrator pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ad_integration_allow_rc4_crypto: <true|false>ロールが管理対象ノードで
AD-SUPPORT暗号化ポリシーを有効にするかどうかを設定します。デフォルトでは、RHEL は脆弱な RC4 暗号化をサポートしていませんが、それでも AD 内の Kerberos で RC4 が必要な場合は、ad_integration_allow_rc4_crypto: trueを設定することでこの暗号化タイプを有効にできます。Kerberos が AES 暗号化を使用する場合は、この変数を省略するか、
falseに設定します。ad_integration_timesync_source: <time_server>-
時刻同期に使用する NTP サーバーを指定します。Kerberos は、リプレイ攻撃を防ぐために、AD のドメインコントローラーとドメインメンバー間の時刻同期を必要とします。この変数を省略すると、
ad_integrationロールは、管理対象ノードで時刻同期を設定するためにtimesyncRHEL システムロールを使用しません。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ad_integration/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
administratorなどの AD ユーザーが管理対象ノードでローカルに使用可能かどうかを確認します。ansible managed-node-01.example.com -m command -a 'getent passwd administrator@ad.example.com' administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bash
$ ansible managed-node-01.example.com -m command -a 'getent passwd administrator@ad.example.com' administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bashCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第5章 RHEL システムロールを使用した GRUB ブートローダーの設定 リンクのコピーリンクがクリップボードにコピーされました!
bootloader RHEL システムロールを使用すると、GRUB ブートローダーに関連する設定および管理タスクを自動化できます。
このロールは、現在、次の CPU アーキテクチャーで実行される GRUB ブートローダーの設定をサポートしています。
- AMD および Intel 64 ビットアーキテクチャー (x86-64)
- 64 ビット ARM アーキテクチャー (ARMv8.0)
- IBM Power Systems、リトルエンディアン (POWER9)
5.1. bootloader RHEL システムロールを使用した既存のブートローダーエントリーの更新 リンクのコピーリンクがクリップボードにコピーされました!
bootloader RHEL システムロールを使用して、GRUB ブートメニュー内の既存のエントリーを自動的に更新できます。この方法により、システムのパフォーマンスや動作を最適化できる特定のカーネルコマンドラインパラメーターを効率的に渡すことができます。
たとえば、カーネルや init システムからの詳細なブートメッセージが必要ないシステムを活用する場合は、bootloader を使用して管理対象ノード上の既存のブートローダーエントリーに quiet パラメーターを適用すると、よりクリーンで簡潔かつユーザーフレンドリーなブートエクスペリエンスを実現できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 更新するブートローダーエントリーに対応するカーネルを特定した。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
kernel- 更新するブートローダーエントリーに関連するカーネルを指定します。
options- 選択したブートローダーエントリー (カーネル) の更新するカーネルコマンドラインパラメーターを指定します。
bootloader_reboot_ok: true- 変更を有効にするために再起動が必要であることをロールが検出し、管理対象ノードの再起動を実行します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.bootloader/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
指定したブートローダーエントリーのカーネルコマンドラインパラメーターが更新されていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4. bootloader RHEL システムロールを使用したブートローダー設定情報の収集 リンクのコピーリンクがクリップボードにコピーされました!
bootloader RHEL システムロールを使用して、GRUB ブートローダーエントリーに関する情報を自動的に収集できます。この情報を使用して、カーネルや初期 RAM ディスクイメージパスなど、システムブートパラメーターの正しい設定を確認できます。
その結果、たとえば次のことが可能になります。
- ブートの失敗を防止する。
- トラブルシューティング時に既知の正常な状態に戻す。
- セキュリティー関連のカーネルコマンドラインパラメーターを確実に正しく設定する。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.bootloader/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コントロールノードで前述の Playbook を実行すると、次の例のようなコマンドライン出力が表示されます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドライン出力には、ブートエントリーに関する次の重要な設定情報が表示されます。
args- 起動プロセス中に GRUB2 ブートローダーによってカーネルに渡されるコマンドラインパラメーター。このパラメーターは、カーネル、initramfs、その他のブート時コンポーネントのさまざまな設定と動作を設定します。
id- ブートローダーメニュー内の各ブートエントリーに割り当てられる一意の識別子。マシン ID とカーネルバージョンで構成されています。
root- カーネルがマウントし、ブート中にプライマリーファイルシステムとして使用するルートファイルシステム。
第6章 RHEL システムロールを使用した CA からの証明書の要求および自己署名証明書の作成 リンクのコピーリンクがクリップボードにコピーされました!
Web サーバーなどの多くのサービスは、TLS を使用してクライアントとの接続を暗号化します。これらのサービスには、秘密鍵と証明書、および証明書に署名する信頼できる認証局 (CA) が必要です。
certificate RHEL システムロールを使用すると、管理対象ノードでの秘密鍵の生成を自動化できます。さらに、このロールは、証明書署名要求 (CSR) を CA に送信するように certmonger サービスを設定し、証明書が期限切れになる前にサービスが自動的に証明書を更新します。
テスト目的の場合は、certificate ロールを使用して、CA から署名済み証明書を要求する代わりに、自己署名証明書を作成できます。
6.1. certificate RHEL システムロールを使用した IdM CA からの新しい証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux ホストが RHEL Identity Management (IdM) 環境のメンバーである場合、IdM 認証局 (CA) から TLS 証明書を要求し、このホストで実行されるサービスでその証明書を使用できます。certificate RHEL システムロールを使用すると、秘密鍵を作成するプロセスと、certmonger サービスが CA から証明書を要求するプロセスを自動化できます。また、certmonger は、デフォルトで証明書の有効期限が切れる前に更新を行います。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードが IdM ドメインのメンバーであり、そのドメインで IdM 統合 CA を使用している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
name: <path_or_file_name>生成される秘密鍵と証明書ファイルの名前またはパスを定義します。
-
変数を
web-serverに設定すると、ロールによって秘密鍵が/etc/pki/tls/private/web-server.keyに保存され、証明書が/etc/pki/tls/certs/web-server.crtファイルに保存されます。 変数を
/tmp/web-serverなどのパスに設定すると、ロールによって秘密鍵が/tmp/web-server.keyに保存され、証明書が/tmp/web-server.crtファイルに保存されます。使用するディレクトリーに
cert_tSELinux コンテキストが設定されている必要があることに注意してください。SELinux コンテキストは、selinuxRHEL システムロールを使用して管理できます。
-
変数を
ca: ipa- ロールが IdM CA から証明書を要求することを指定します。
dns: <hostname_or_list_of_hostnames>-
発行された証明書のサブジェクト代替名 (SAN) フィールドに含まれるホスト名を設定します。ワイルドカード (
*) を使用することも、YAML リスト形式で複数の名前を指定することもできます。 principal: <kerberos_principal>- オプション: 証明書に含める Kerberos プリンシパルを設定します。
run_before: <command>-
オプション: CA から証明書を要求する前に
certmongerが実行するコマンドを定義します。 run_after: <command>-
オプション: CA から発行された証明書を受け取った後に
certmongerが実行するコマンドを定義します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.certificate/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
certmongerサービスが管理する証明書をリスト表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.2. certificate RHEL システムロールを使用した新しい自己署名証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
テスト環境に TLS 証明書が必要な場合は、自己署名証明書を使用できます。certificate RHEL システムロールを使用すると、秘密鍵を作成するプロセスと、certmonger サービスで自己署名証明書を作成するプロセスを自動化できます。また、certmonger は、デフォルトで証明書の有効期限が切れる前に更新を行います。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
name: <path_or_file_name>生成される秘密鍵と証明書ファイルの名前またはパスを定義します。
-
変数を
web-serverに設定すると、ロールによって秘密鍵が/etc/pki/tls/private/web-server.keyに保存され、証明書が/etc/pki/tls/certs/web-server.crtファイルに保存されます。 変数を
/tmp/web-serverなどのパスに設定すると、ロールによって秘密鍵が/tmp/web-server.keyに保存され、証明書が/tmp/web-server.crtファイルに保存されます。使用するディレクトリーに
cert_tSELinux コンテキストが設定されている必要があることに注意してください。SELinux コンテキストは、selinuxRHEL システムロールを使用して管理できます。
-
変数を
ca: self-sign- ロールで自己署名証明書を作成することを指定します。
dns: <hostname_or_list_of_hostnames>-
発行された証明書のサブジェクト代替名 (SAN) フィールドに含まれるホスト名を設定します。ワイルドカード (
*) を使用することも、YAML リスト形式で複数の名前を指定することもできます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.certificate/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
certmongerサービスが管理する証明書をリスト表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第7章 RHEL システムロールを使用した Web コンソールのインストールおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
cockpit RHEL システムロールを使用すると、複数の RHEL システムに Web コンソールを自動的にデプロイして有効にできます。
7.1. cockpit RHEL システムロールを使用した Web コンソールのインストール リンクのコピーリンクがクリップボードにコピーされました!
cockpit システムロールを使用すると、複数のシステムで RHEL Web コンソールのインストールと有効化を自動化できます。
この例では、cockpit システムロールを使用して次のことを行います。
- RHEL Web コンソールをインストールする
-
新しいポートを開くためにシステムを設定できるように、
firewalldおよびselinuxシステムロールを許可します。 -
自己署名証明書を使用する代わりに、
ipaの信頼された認証局からの証明書を使用するように Web コンソールを設定する
ファイアウォールを管理したり証明書を作成したりするために、Playbook で firewall または certificate システムロールを呼び出す必要はありません。cockpit システムロールが、必要に応じてそれらを自動的に呼び出します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
cockpit_manage_selinux: true-
selinuxシステムロールを使用して、websm_port_tSELinux タイプで正しいポート権限を設定するように SELinux を設定できるようにします。 cockpit_manage_firewall: true-
cockpitシステムロールがfirewalldシステムロールを使用してポートを追加できるようにします。 cockpit_certificates: <YAML_dictionary>デフォルトでは、RHEL Web コンソールは自己署名証明書を使用します。または、
cockpit_certificates変数を Playbook に追加し、IdM 認証局 (CA) から証明書を要求するか、管理対象ノードで使用可能な既存の証明書と秘密鍵を使用するようにロールを設定することもできます。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.cockpit/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第8章 RHEL システムロールを使用したカスタム暗号化ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
カスタム暗号化ポリシーは、暗号化アルゴリズムとプロトコルの使用を管理する一連のルールと設定です。このポリシーは、複数のシステムとアプリケーションにまたがるセキュリティー環境の保護、一貫性、管理性を確保するのに役立ちます。
crypto_policies RHEL システムロールを使用すると、多くのオペレーティングシステムにわたってカスタム暗号化ポリシーを自動化された方法で迅速かつ一貫して設定できます。
8.1. crypto_policies RHEL システムロールを使用した FUTURE 暗号化ポリシーによるセキュリティーの強化 リンクのコピーリンクがクリップボードにコピーされました!
crypto_policies RHEL システムロールを使用して、管理対象ノードで FUTURE ポリシーを設定できます。このポリシーは、たとえば次のことを実現するのに役立ちます。
- 将来の新たな脅威への対応: 計算能力の向上を予測します。
- セキュリティーの強化: 強力な暗号化標準により、より長い鍵長とよりセキュアなアルゴリズムを必須にします。
- 高度なセキュリティー標準への準拠: 医療、通信、金融などの分野ではデータの機密性が高く、強力な暗号化を利用できることが重要です。
通常、FUTURE は、機密性の高いデータを扱う環境、将来の規制に備える環境、長期的なセキュリティーストラテジーを採用する環境に適しています。
レガシーのシステムやソフトウェアでは、FUTURE ポリシーによって強制される、より最新しく厳格なアルゴリズムやプロトコルをサポートする必要はありません。たとえば、古いシステムでは TLS 1.3 以上の鍵サイズがサポートされていない可能性があります。これにより互換性の問題が発生する可能性があります。
また、強力なアルゴリズムを使用すると、通常、計算負荷が増加し、システムのパフォーマンスに悪影響が及ぶ可能性があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
crypto_policies_policy: FUTURE-
管理対象ノードで必要な暗号化ポリシー (
FUTURE) を設定します。これは、基本ポリシー、またはいくつかのサブポリシーを含む基本ポリシーのどちらかです。指定した基本ポリシーとサブポリシーが、管理対象ノードで使用可能である必要があります。デフォルト値はnullです。つまり、設定は変更されず、crypto_policiesRHEL システムロールは Ansible fact のみを収集します。 crypto_policies_reboot_ok: true-
すべてのサービスとアプリケーションが新しい設定ファイルを読み取るように、暗号化ポリシーの変更後にシステムを再起動します。デフォルト値は
falseです。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.crypto_policies/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
システム全体のサブポリシー FIPS:OSPP には、Common Criteria (CC) 認定に必要な暗号化アルゴリズムに関する追加の制限が含まれています。そのため、このサブポリシーを設定すると、システムの相互運用性が低下します。たとえば、3072 ビットより短い RSA 鍵と DH 鍵、追加の SSH アルゴリズム、および複数の TLS グループを使用できません。また、FIPS:OSPP を設定すると、Red Hat コンテンツ配信ネットワーク (CDN) 構造への接続が防止されます。さらに、FIPS:OSPP を使用する IdM デプロイメントには Active Directory (AD) を統合できません。FIPS:OSPP を使用する RHEL ホストと AD ドメイン間の通信が機能しないか、一部の AD アカウントが認証できない可能性があります。
FIPS:OSPP 暗号化サブポリシーを設定すると、システムが CC 非準拠になる ことに注意してください。RHEL システムを CC 標準に準拠させる唯一の正しい方法は、cc-config パッケージで提供されているガイダンスに従うことです。認定された RHEL バージョン、検証レポート、および National Information Assurance Partnership (NIAP) の Web サイトでホストされる CC ガイドへのリンクのリストは、Red Hat カスタマーポータルページの Product compliance の Common Criteria セクションを参照してください。
検証
コントロールノードで、たとえば
verify_playbook.ymlという名前の別の Playbook を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
crypto_policies_active-
crypto_policies_policy変数で受け入れられる形式の現在アクティブなポリシー名が含まれているエクスポートされた Ansible fact。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/verify_playbook.yml
$ ansible-playbook --syntax-check ~/verify_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/verify_playbook.yml TASK [debug] ************************** ok: [host] => { "crypto_policies_active": "FUTURE" }$ ansible-playbook ~/verify_playbook.yml TASK [debug] ************************** ok: [host] => { "crypto_policies_active": "FUTURE" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow crypto_policies_active変数は、管理対象ノード上のアクティブなポリシーを示します。
第9章 fapolicyd RHEL システムロールを使用したアプリケーションの実行の制限 リンクのコピーリンクがクリップボードにコピーされました!
fapolicyd ソフトウェアフレームワークを使用すると、ユーザー定義のポリシーに基づいてアプリケーションの実行を制限できます。このフレームワークは、実行前にアプリケーションの整合性を検証します。これは、悪意のある可能性のある信頼できないアプリケーションの実行を防ぐ効率的な方法です。fapolicyd RHEL システムロールを使用すると、fapolicyd のインストールと設定を自動化できます。
fapolicyd サービスは、root としてではなく、通常のユーザーとして実行される不正なアプリケーションの実行のみを防止します。
9.1. fapolicyd RHEL システムロールを使用してユーザーによる信頼できないコードの実行を防止する リンクのコピーリンクがクリップボードにコピーされました!
fapolicyd RHEL システムロールを使用すると、fapolicyd サービスのインストールと設定を自動化できます。このロールを使用すると、RPM データベースや許可リストに指定されているアプリケーションなど、信頼できるアプリケーションのみをユーザーが実行できるようにサービスをリモートで設定できます。さらに、サービスは許可されたアプリケーションを実行する前に整合性チェックを実行できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
fapolicyd_setup_permissive: <true|false>-
ポリシーの決定をカーネルに送信して適用することを有効または無効にします。デバッグおよびテスト目的の場合、この変数を
falseに設定します。 fapolicyd_setup_integrity: <type_type>整合性チェック方法を定義します。次のいずれかの値を設定できます。
-
none(デフォルト): 整合性チェックを無効にします。 -
size: サービスにより、許可されたアプリケーションのファイルサイズのみを比較します。 -
ima: サービスにより、カーネルの Integrity Measurement Architecture (IMA) がファイルの拡張属性に保存した SHA-256 ハッシュをチェックします。さらに、サイズチェックも実行します。ロールは IMA カーネルサブシステムを設定しないことに注意してください。このオプションを使用するには、IMA サブシステムを手動で設定する必要があります。 -
sha256: サービスにより、許可されたアプリケーションの SHA-256 ハッシュを比較します。
-
fapolicyd_setup_trust: <trust_backends>-
信頼バックエンドのリストを定義します。
fileバックエンドを含める場合は、fapolicyd_add_trusted_fileリストで許可されている実行可能ファイルを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.fapolicyd.README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook ~/playbook.yml --syntax-check
$ ansible-playbook ~/playbook.yml --syntax-checkCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
許可リストにないバイナリーアプリケーションをユーザーとして実行します。
ansible managed-node-01.example.com -m command -a 'su -c "/bin/not_authorized_application " <user_name>' bash: line 1: /bin/not_authorized_application: Operation not permitted non-zero return code
$ ansible managed-node-01.example.com -m command -a 'su -c "/bin/not_authorized_application " <user_name>' bash: line 1: /bin/not_authorized_application: Operation not permitted non-zero return codeCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第10章 RHEL システムロールを使用した firewalld の設定 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、Ansible 自動化ユーティリティーのコンテンツセットです。このコンテンツを、Ansible Automation ユーティリティーと組み合わせることで、複数のシステムを同時にリモートで管理するための一貫した設定インターフェイスが実現します。
rhel-system-roles パッケージには、rhel-system-roles.firewall RHEL システムロールが含まれています。このロールは、firewalld サービスの自動設定のために導入されました。
firewall RHEL システムロールを使用すると、次のようなさまざまな firewalld パラメーターを設定できます。
- ゾーン
- パケットを許可すべきサービス
- ポートへのトラフィックアクセスの許可、拒否、またはドロップ
- ゾーンのポートまたはポート範囲の転送
10.1. firewall RHEL システムロールを使用した firewalld 設定のリセット リンクのコピーリンクがクリップボードにコピーされました!
時間が経つにつれて、ファイアウォール設定の更新が累積し、予想外のセキュリティーリスクが発生する可能性があります。firewall RHEL システムロールを使用すると、firewalld 設定を自動的にデフォルト状態にリセットできます。これにより、意図しない、またはセキュアでないファイアウォールルールを効率的に削除し、管理を簡素化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
previous: replaced既存のユーザー定義設定をすべて削除し、
firewalld設定をデフォルトにリセットします。previous:replacedパラメーターを他の設定と組み合わせると、firewallロールは新しい設定を適用する前に既存の設定をすべて削除します。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.firewall/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コントロールノードでこのコマンドを実行して、管理対象ノードのすべてのファイアウォール設定がデフォルト値にリセットされたことをリモートで確認します。
ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-all-zones'
# ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-all-zones'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.2. firewall RHEL システムロールを使用して、firewalld の着信トラフィックをあるローカルポートから別のローカルポートに転送する リンクのコピーリンクがクリップボードにコピーされました!
firewall RHEL システムロールを使用して、あるローカルポートから別のローカルポートへの着信トラフィックの転送をリモートで設定できます。
たとえば、同じマシン上に複数のサービスが共存し、同じデフォルトポートが必要な環境の場合、ポートの競合が発生する可能性があります。この競合によりサービスが中断され、ダウンタイムが発生する可能性があります。firewall RHEL システムロールを使用すると、トラフィックを効率的に別のポートに転送して、サービスの設定を変更せずにサービスを同時に実行できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
forward_port: 8080/tcp;443- TCP プロトコルを使用してローカルポート 8080 に送信されるトラフィックが、ポート 443 に転送されます。
runtime: trueランタイム設定の変更を有効にします。デフォルトは
trueに設定されています。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.firewall/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コントロールノードで次のコマンドを実行して、管理対象ノードの転送ポートをリモートで確認します。
ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-forward-ports' managed-node-01.example.com | CHANGED | rc=0 >> port=8080:proto=tcp:toport=443:toaddr=
# ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --list-forward-ports' managed-node-01.example.com | CHANGED | rc=0 >> port=8080:proto=tcp:toport=443:toaddr=Copy to Clipboard Copied! Toggle word wrap Toggle overflow
10.3. firewall RHEL システムロールを使用した firewalld DMZ ゾーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、firewall RHEL システムロールを使用して、enp1s0 インターフェイス上に dmz ゾーンを設定し、ゾーンへの HTTPS トラフィックを許可できます。これにより、外部ユーザーが Web サーバーにアクセスできるようにします。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.firewall/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コントロールノードで次のコマンドを実行して、管理対象ノードの
dmzゾーンに関する情報をリモートで確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第11章 RHEL システムロールを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster システムロールを使用すると、Pacemaker の高可用性クラスターリソースマネージャーを使用する高可用性クラスターを設定し、管理できます。
11.1. ha_cluster RHEL システムロールの変数 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster システムロール Playbook では、クラスターデプロイメントの要件に従って、高可用性クラスターの変数を定義します。
ha_cluster RHEL システムロールに設定できる変数は次のとおりです。
ha_cluster_enable_repos-
ha_clusterRHEL システムロールに必要なパッケージを含むリポジトリーを有効にするブール値フラグ。この変数がデフォルト値のtrueに設定されている場合、クラスターメンバーとして使用するシステムに RHEL および RHEL High Availability Add-On の有効なサブスクリプションが必要です。サブスクリプションがない場合、システムロールは失敗します。 ha_cluster_enable_repos_resilient_storage-
(RHEL 9.4 以降)
dlmやgfs2などの耐障害性ストレージパッケージを含むリポジトリーを有効にするブールフラグ。このオプションを有効にするには、ha_cluster_enable_reposをtrueに設定する必要があります。この変数のデフォルト値はfalseです。 ha_cluster_manage_firewall(RHEL 9.2 以降)
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定するブール値フラグ。ha_cluster_manage_firewallがtrueに設定されている場合、ファイアウォールの高可用性サービスとfence-virtポートが有効になります。ha_cluster_manage_firewallがfalseに設定されている場合、ha_clusterRHEL システムロールはファイアウォールを管理しません。システムがfirewalldサービスを実行している場合は、Playbook でパラメーターをtrueに設定する必要があります。ha_cluster_manage_firewallパラメーターを使用してポートを追加することはできますが、このパラメーターを使用してポートを削除することはできません。ポートを削除するには、firewallシステムロールを直接使用します。RHEL 9.2 以降、ファイアウォールはデフォルトでは設定されなくなりました。これは、ファイアウォールが設定されるのは、
ha_cluster_manage_firewallがtrueに設定されている場合のみであるためです。ha_cluster_manage_selinux(RHEL 9.2 以降)
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスに属するポートを管理するかどうかを決定するブール値フラグ。ha_cluster_manage_selinuxがtrueに設定されている場合、ファイアウォール高可用性サービスに属するポートは、SELinux ポートタイプcluster_port_tに関連付けられます。ha_cluster_manage_selinuxがfalseに設定されている場合、ha_clusterRHEL システムロールは SELinux を管理しません。システムが
selinuxサービスを実行している場合は、Playbook でこのパラメーターをtrueに設定する必要があります。ファイアウォール設定は、SELinux を管理するための前提条件です。ファイアウォールがインストールされていない場合、SELinux ポリシーの管理はスキップされます。ha_cluster_manage_selinuxパラメーターを使用してポリシーを追加することはできますが、このパラメーターを使用してポリシーを削除することはできません。ポリシーを削除するには、selinuxRHEL システムロールを直接使用します。ha_cluster_cluster_presenttrueに設定すると、ロールに渡された変数に従って HA クラスターがホスト上で設定されることを決定するブール型フラグ。Playbook に指定されておらず、ロールでサポートされていないクラスター設定は失われます。ha_cluster_cluster_presentをfalseに設定すると、すべての HA クラスター設定がターゲットホストから削除されます。この変数のデフォルト値は
trueです。以下の Playbook の例では、
node1およびnode2のすべてのクラスター設定を削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_start_on_boot-
起動時にクラスターサービスが起動するように設定されるかどうかを決定するブール値フラグ。この変数のデフォルト値は
trueです。 ha_cluster_install_cloud_agents-
(RHEL 9.5 以降) クラウド環境のリソースエージェントとフェンスエージェントをインストールするかどうかを決定するブール値フラグ。これらのエージェントはデフォルトではインストールされません。または、
ha_cluster_fence_agent_packagesおよびha_cluster_extra_packages変数を使用して、クラウド環境のパッケージを指定することもできます。この変数のデフォルト値はfalseです。 ha_cluster_fence_agent_packages-
インストールするフェンスエージェントパッケージのリストこの変数のデフォルト値は
fence-agents-all,fence-virtです。 ha_cluster_extra_packagesインストールする追加パッケージのリストこの変数のデフォルト値はパッケージではありません。
この変数は、ロールによって自動的にインストールされていない追加パッケージをインストールするために使用できます (例: カスタムリソースエージェント)。
フェンスエージェントをこのリストのメンバーとして追加できます。ただし、
ha_cluster_fence_agent_packagesは、フェンスエージェントの指定に使用する推奨されるロール変数であるため、デフォルト値が上書きされます。ha_cluster_hacluster_password-
haclusterユーザーのパスワードを指定する文字列の値。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。機密データを保護するには、Encrypting content with Ansible Vault で説明されているように、パスワードを vault で暗号化します。デフォルトのパスワード値がないため、この変数を指定する必要があります。 ha_cluster_hacluster_qdevice_password-
(RHEL 9.3 以降) クォーラムデバイスの
haclusterユーザーのパスワードを指定する文字列の値。このパラメーターが必要になるのは、ha_cluster_quorumパラメーターがタイプnetのクォーラムデバイスを使用するように設定されており、クォーラムデバイス上のhaclusterユーザーのパスワードがha_cluster_hacluster_passwordパラメーターで指定されたhaclusterユーザーのパスワードと異なる場合のみです。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。機密データを保護するには、Encrypting content with Ansible Vault で説明されているように、パスワードを vault で暗号化します。このパスワードにデフォルト値はありません。 ha_cluster_corosync_key_srcCorosync
authkeyファイルへのパス。これは、Corosync 通信の認証および暗号鍵です。各クラスターに一意のauthkey値を指定することが強く推奨されます。キーは、ランダムなデータの 256 バイトでなければなりません。この変数の鍵を指定する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、鍵を vault 暗号化することが推奨されます。
鍵が指定されていない場合は、ノードにすでに存在するキーが使用されます。ノードに同じ鍵がない場合、あるノードの鍵が他のノードに分散され、すべてのノードが同じキーを持つようにします。ノードに鍵がない場合は、新しい鍵が生成され、ノードに分散されます。
この変数が設定されている場合は、このキーで
ha_cluster_regenerate_keysが無視されます。この変数のデフォルト値は null です。
ha_cluster_pacemaker_key_srcPacemaker の
authkeyファイルへのパスです。これは、Pacemaker 通信の認証および暗号鍵です。各クラスターに一意のauthkey値を指定することが強く推奨されます。キーは、ランダムなデータの 256 バイトでなければなりません。この変数の鍵を指定する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、鍵を vault 暗号化することが推奨されます。
鍵が指定されていない場合は、ノードにすでに存在するキーが使用されます。ノードに同じ鍵がない場合、あるノードの鍵が他のノードに分散され、すべてのノードが同じキーを持つようにします。ノードに鍵がない場合は、新しい鍵が生成され、ノードに分散されます。
この変数が設定されている場合は、このキーで
ha_cluster_regenerate_keysが無視されます。この変数のデフォルト値は null です。
ha_cluster_fence_virt_key_srcfence-virtまたはfence-xvmの事前共有鍵ファイルへのパス。これは、fence-virtまたはfence-xvmフェンスエージェントの認証キーの場所になります。この変数の鍵を指定する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、鍵を vault 暗号化することが推奨されます。
鍵が指定されていない場合は、ノードにすでに存在するキーが使用されます。ノードに同じ鍵がない場合、あるノードの鍵が他のノードに分散され、すべてのノードが同じキーを持つようにします。ノードに鍵がない場合は、新しい鍵が生成され、ノードに分散されます。この方法で
ha_clusterRHEL システムロールが新しい鍵を生成する場合は、鍵をノードのハイパーバイザーにコピーして、フェンシングが機能するようにする必要があります。この変数が設定されている場合は、このキーで
ha_cluster_regenerate_keysが無視されます。この変数のデフォルト値は null です。
ha_cluster_pcsd_public_key_srcr、ha_cluster_pcsd_private_key_srcpcsdTLS 証明書および秘密鍵へのパス。これが指定されていない場合は、ノード上にすでに証明書キーのペアが使用されます。証明書キーペアが存在しない場合は、無作為に新しいキーが生成されます。この変数に秘密鍵の値を指定した場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、鍵を暗号化することが推奨されます。
これらの変数が設定されている場合は、この証明書と鍵のペアで
ha_cluster_regenerate_keysは無視されます。これらの変数のデフォルト値は null です。
ha_cluster_pcsd_certificates(RHEL 9.2 以降)
certificateRHEL システムロールを使用してpcsd秘密鍵と証明書を作成します。システムに
pcsd秘密鍵と証明書が設定されていない場合は、次の 2 つの方法のいずれかで作成できます。-
ha_cluster_pcsd_certificates変数を設定します。ha_cluster_pcsd_certificates変数を設定すると、certificateRHEL システムロールが内部的に使用され、定義どおりにpcsdの秘密鍵と証明書が作成されます。 -
ha_cluster_pcsd_public_key_src、ha_cluster_pcsd_private_key_src、またはha_cluster_pcsd_certificates変数を設定しないでください。これらの変数をいずれも設定しなかった場合、ha_clusterRHEL システムロールがpcsd自体を使用してpcsd証明書を作成します。ha_cluster_pcsd_certificatesの値は、certificateRHEL システムロールで指定された変数certificate_requestsの値に設定されます。certificateRHEL システムロールの詳細は、RHEL システムロールを使用した証明書の要求 を参照してください。
-
ha_cluster_pcsd_certificate変数の使用には、次の運用上の考慮事項が適用されます。-
IPA を使用しており、システムを IPA ドメインに参加させていない限り、
certificateRHEL システムロールによって自己署名証明書が作成されます。この場合、RHEL システムロールのコンテキスト外で信頼設定を明示的に設定する必要があります。システムロールは、信頼設定をサポートしていません。 -
ha_cluster_pcsd_certificates変数を設定する場合は、ha_cluster_pcsd_public_key_src変数とha_cluster_pcsd_private_key_src変数を設定しないでください。 -
ha_cluster_pcsd_certificates変数を設定すると、この証明書とキーのペアではha_cluster_regenerate_keysが無視されます。
-
IPA を使用しており、システムを IPA ドメインに参加させていない限り、
この変数のデフォルト値は
[]です。高可用性クラスターで TLS 証明書とキーファイルを作成する
ha_clusterRHEL システムロール Playbook の例については、高可用性クラスターの pcsd TLS 証明書とキーファイルの作成 を参照してください。ha_cluster_regenerate_keys-
ブール値のフラグ。
trueに設定すると、事前共有鍵と TLS 証明書が再生成されます。鍵と証明書が再生成されるタイミングの詳細は、ha_cluster_corosync_key_src、ha_cluster_pacemaker_key_src、ha_cluster_fence_virt_key_src、ha_cluster_pcsd_public_key_src、およびha_cluster_pcsd_private_key_src変数の説明を参照してください。 -
この変数のデフォルト値は
falseです。 ha_cluster_pcs_permission_listpcsdを使用してクラスターを管理するパーミッションを設定します。この変数を使用して設定するアイテムは以下のとおりです。-
type-userまたはgroup -
name- ユーザーまたはグループの名前 allow_list- 指定されたユーザーまたはグループの許可されるアクション:-
read- クラスターのステータスおよび設定の表示 -
write- パーミッションおよび ACL を除くクラスター設定の変更 -
grant- クラスターパーミッションおよび ACL の変更 -
full- ノードの追加および削除、キーおよび証明書へのアクセスなど、クラスターへの無制限アクセス
-
-
ha_cluster_pcs_permission_list変数の構造とデフォルト値は以下のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_cluster_name-
クラスターの名前。これは、デフォルトが
my-clusterの文字列値です。 ha_cluster_transport(RHEL 9.1 以降) クラスターのトランスポート方式を設定します。この変数を使用して設定するアイテムは以下のとおりです。
-
type(オプション) - トランスポートタイプ:knet、udp、またはudpu。udpおよびudpuトランスポートタイプは、1 つのリンクのみをサポートします。udpとudpuの暗号化は常に無効になっています。指定しない場合、デフォルトでknetになります。 -
options(オプション) - トランスポートオプションを含む名前と値のディクショナリーのリスト。 -
links(オプション) - 名前と値のディクショナリーのリスト。名前値ディクショナリーの各リストには、1 つの Corosync リンクのオプションが含まれています。リンクごとにlinknumber値を設定することを推奨します。それ以外の場合、ディクショナリーの最初のリストはデフォルトで最初のリンクに割り当てられ、2 番目のリストは 2 番目のリンクに割り当てられます。 -
compression(オプション) - トランスポート圧縮を設定する名前と値のディクショナリーのリスト。knetトランスポートタイプでのみサポートされます。 -
crypto(オプション) - トランスポートの暗号化を設定する名前と値のディクショナリーのリスト。デフォルトでは、暗号化は有効になっています。knetトランスポートタイプでのみサポートされます。
-
許可されているオプションのリストについては、
pcs -h cluster setupのヘルプページ、またはpcs(8) man ページのclusterセクションにあるsetupの説明を参照してください。詳細な説明については、corosync.conf(5) の man ページを参照してください。ha_cluster_transport変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow トランスポート方式を設定する
ha_clusterRHEL システムロール Playbook の例については、高可用性クラスターでの Corosync 値の設定 を参照してください。ha_cluster_totem(RHEL 9.1 以降) Corosync トーテムを設定します。許可されているオプションのリストについては、
pcs -h cluster setupのヘルプページ、またはpcs(8) man ページのclusterセクションにあるsetupの説明を参照してください。詳細な説明については、corosync.conf(5) の man ページを参照してください。ha_cluster_totem変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Corosync トーテムを設定する
ha_clusterRHEL システムロール Playbook の例については、高可用性クラスターでの Corosync 値の設定 を参照してください。ha_cluster_quorum(RHEL 9.1 以降) クラスタークォーラムを設定します。クラスタークォーラムには、次の項目を設定できます。
-
options(オプション) - クォーラムを設定する名前と値のディクショナリーのリスト。許可されるオプションは、auto_tie_breaker、last_man_standing、last_man_standing_window、およびwait_for_allです。クォーラムオプションの詳細は、votequorum(5) の man ページを参照してください。 device(オプション) - (RHEL 9.2 以降) クォーラムデバイスを使用するようにクラスターを設定します。デフォルトでは、クォーラムデバイスは使用されません。-
model(必須) - クォーラムデバイスモデルを指定します。netのみがサポートされています。 model_options(オプション) - 指定されたクォーラムデバイスモデルを設定する名前と値のディクショナリーのリスト。モデルnetの場合、hostおよびalgorithmオプションを指定する必要があります。pcs-addressオプションを使用して、qnetdホストに接続するためのカスタムpcsdアドレスとポートを設定します。このオプションを指定しない場合、ロールはhost上のデフォルトのpcsdポートに接続します。-
generic_options(オプション) - モデル固有ではないクォーラムデバイスオプションを設定する名前と値のディクショナリーのリスト。 heuristics_options(オプション) - クォーラムデバイスのヒューリスティックを設定する名前と値のディクショナリーのリスト。クォーラムデバイスオプションの詳細は、
corosync-qdevice(8) の man ページを参照してください。一般的なオプションはsync_timeoutとtimeoutです。モデルnetオプションについては、quorum.device.netセクションを参照してください。ヒューリスティックオプションについては、quorum.device.heuristicsセクションを参照してください。クォーラムデバイスの TLS 証明書を再生成するには、
ha_cluster_regenerate_keys変数をtrueに設定します。
-
-
ha_cluster_quorum変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスタークォーラムを設定する
ha_clusterRHEL システムロール Playbook の例については、高可用性クラスターでの Corosync 値の設定 を参照してください。クォーラムデバイスを使用してクラスターを設定するha_clusterRHEL システムロール Playbook の例については、クォーラムデバイスを使用した高可用性クラスターの設定 を参照してください。ha_cluster_sbd_enabled-
(RHEL 9.1 以降) クラスターが SBD ノードフェンシングメカニズムを使用できるかどうかを決定するブールフラグ。この変数のデフォルト値は
falseです。たとえば、SBD を有効にするha_clusterシステムロール Playbook については、ha_cluster_node_options 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する および ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。 ha_cluster_sbd_options(RHEL 9.1 以降) SBD オプションを指定する名前と値のディクショナリーのリスト。これらのオプションの詳細は、
sbd(8) man ページのConfiguration via environmentセクションを参照してください。サポートされているオプションは次のとおりです。
-
delay-start- デフォルトはfalse。SBD_DELAY_STARTとしてドキュメントに記載されています。 -
startmode- デフォルトはalways。SBD_START_MODEとしてドキュメントに記載されています。 -
timeout-action- デフォルトはflush,reboot。SBD_TIMEOUT_ACTIONとしてドキュメントに記載されています。 -
watchdog-timeout- デフォルトは5。SBD_WATCHDOG_TIMEOUTとしてドキュメントに記載されています。
-
ウォッチドッグおよび SBD デバイスは、次のどちらかの変数を使用してノードごとに設定できます。
-
ha_cluster_node_options: Playbook ファイルで定義します (RHEL 9.5 以降)。ha_cluster_node_options変数を使用してノードごとに SBD オプションを設定するha_clusterRHEL システムロール Playbook の例については、ha_cluster_node_options 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。 -
ha_cluster: インベントリーファイルで定義します。インベントリーファイルでノードごとの SBD オプションを設定する手順の例については、ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。
-
ha_cluster_cluster_propertiesPacemaker クラスター全体の設定のクラスタープロパティーのセットのリスト。クラスタープロパティーのセットは 1 つだけサポートされます。
クラスタープロパティーのセットの構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、プロパティーは設定されません。
次のサンプル Playbook は、
node1とnode2で構成されるクラスターを設定し、stonith-enabledおよびno-quorum-policyクラスタープロパティーを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_node_options(RHEL 9.4 以降) この変数は、クラスターノードごとに異なる設定を定義します。指定されたノードのオプションを設定しますが、どのノードがクラスターを形成するかは指定しません。インベントリーまたは Playbook の
hostsパラメーターを使用して、クラスターを設定するノードを指定します。この変数を使用して設定するアイテムは以下のとおりです。
-
node_name(必須) - Pacemaker ノード属性を定義するノードの名前。ノードに定義された名前と一致する必要があります。 -
pcs_address(任意) - (RHEL 9.5 以降)pcsがノードと通信するために使用するアドレス。名前、FQDN、または IP アドレスを指定できます。ポートも指定できます。 -
corosync_addresses(任意) - (RHEL 9.5 以降) Corosync で使用されるアドレスのリスト。アドレスの数がすべてのノードで同じである必要があります。特定のリンクに属するアドレスがすべてのノードで同じ位置に指定されるように、アドレスの順序がすべてのノードで同じである必要があります。 -
sbd_watchdog_modules(任意) - (RHEL 9.5 以降)/dev/watchdog*デバイスを作成するためにロードするウォッチドッグカーネルモジュール。設定されていない場合、デフォルトで空のリストになります。 -
sbd_watchdog_modules_blocklist(任意) - (RHEL 9.5 以降) アンロードおよびブロックするウォッチドッグカーネルモジュール。設定されていない場合、デフォルトで空のリストになります。 -
sbd_watchdog(任意) - (RHEL 9.5 以降) SBD が使用するウォッチドッグデバイス。設定されていない場合、デフォルトは/dev/watchdogです。 -
sbd_devices(任意) - (RHEL 9.5 以降) SBD メッセージの交換と監視に使用するデバイス。設定されていない場合、デフォルトで空のリストになります。一定の長いデバイス名 (/dev/disk/by-id/) を常に使用してデバイスを参照します。 -
attributes(任意) - ノードの Pacemaker ノード属性セットのリスト。現在、1 つのセットのみがサポートされています。最初のセットが使用され、残りは無視されます。 -
utilization(任意) - (RHEL 9.5 以降) ノードの使用率セットのリスト。フィールド値は整数である必要があります。現在、1 つのセットのみがサポートされています。最初のセットが使用され、残りは無視されます。
-
ha_cluster_node_options変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、ノードオプションは定義されていません。
ノードオプション設定を含む
ha_clusterRHEL システムロール Playbook の例は、ノード属性を使用した高可用性クラスターの設定 を参照してください。ha_cluster_resource_primitivesこの変数は、フェンシングリソースを含む、RHEL システムロールによって設定される Pacemaker リソースを定義します。リソースごとに次の項目を設定できます。
-
id(必須) - リソースの ID。 -
agent(必須) - リソースまたはフェンスエージェントの名前 (例:ocf:pacemaker:Dummyまたはstonith:fence_xvm)。STONITH エージェントには、stonith:を指定する必要があります。リソースエージェントの場合は、ocf:pacemaker:Dummyではなく、Dummyなどの短縮名を使用することができます。ただし、同じ名前の複数のエージェントがインストールされていると、使用するエージェントを決定できないため、ロールは失敗します。そのため、リソースエージェントを指定する場合はフルネームを使用することが推奨されます。 -
instance_attrs(オプション): リソースのインスタンス属性のセットのリスト。現在、1 つのセットのみがサポートされています。属性の名前と値、必須かどうか、およびリソースまたはフェンスエージェントによって異なります。 -
meta_attrs(オプション): リソースのメタ属性のセットのリスト。現在、1 つのセットのみがサポートされています。 -
copy_operations_from_agent(オプション) - (RHEL 9.3 以降) リソースエージェントは通常、特定のエージェント向けに最適化された、intervalやtimeoutなどのリソース操作のデフォルト設定を定義します。この変数がtrueに設定されている場合、それらの設定がリソース設定にコピーされます。そうでない場合、クラスター全体のデフォルトがリソースに適用されます。ha_cluster_resource_operation_defaultsロール変数を使用してリソースのリソース操作のデフォルトも定義する場合は、これをfalseに設定できます。この変数のデフォルト値はtrueです。 operations(任意): リソースの操作のリスト。-
action(必須): pacemaker と、リソースまたはフェンスエージェントで定義されている操作アクション。 -
attrs(必須): 少なくとも 1 つのオプションを指定する必要があります。(RHEL 9.5 以降)
-
-
utilization(任意) - リソースの使用率セットのリスト。valueフィールドは整数である必要があります。サポートされるセットは 1 つだけであるため、最初のセットが使用され、残りは無視されます。
-
ha_clusterRHEL システムロールで設定するリソース定義の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、リソースは定義されません。
リソース設定を含む
ha_clusterRHEL システムロール Playbook の例は、フェンシングおよびリソースを使用した高可用性クラスターの設定 を参照してください。ha_cluster_resource_groupsこの変数は、システムロールによって設定される Pacemaker リソースグループを定義します。リソースグループごとに次の項目を設定できます。
-
id(必須): グループの ID。 -
resources(必須): グループのリソースのリスト。各リソースは ID によって参照され、リソースはha_cluster_resource_primitives変数に定義する必要があります。1 つ以上のリソースをリスト表示する必要があります。 -
meta_attrs(オプション): グループのメタ属性のセットのリスト。現在、1 つのセットのみがサポートされています。
-
ha_clusterRHEL システムロールで設定するリソースグループ定義の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、リソースグループが定義されていません。
リソースグループ設定を含む
ha_clusterRHEL システムロール Playbook の例は、フェンシングおよびリソースを使用した高可用性クラスターの設定 を参照してください。ha_cluster_resource_clonesこの変数は、システムロールによって設定された Pacemaker リソースクローンを定義します。リソースクローンに対して次の項目を設定できます。
-
resource_id(必須): クローンを作成するリソース。リソースはha_cluster_resource_primitives変数またはha_cluster_resource_groups変数に定義する必要があります。 -
promotable(オプション): 作成するリソースクローンが昇格可能なクローンであるかどうかを示します。これは、trueまたはfalseと示されます。 -
id(任意): クローンのカスタム ID。ID が指定されていない場合は、生成されます。このオプションがクラスターでサポートされない場合は、警告が表示されます。 -
meta_attrs(任意): クローンのメタ属性のセットのリスト。現在、1 つのセットのみがサポートされています。
-
ha_clusterRHEL システムロールで設定するリソースクローン定義の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、リソースのクローンが定義されていません。
リソースクローン設定を含む
ha_clusterRHEL システムロール Playbook の例は、フェンシングおよびリソースを使用した高可用性クラスターの設定 を参照してください。ha_cluster_resource_defaults(RHEL 9.3 以降) この変数は、リソースのデフォルトのセットを定義します。複数のデフォルトのセットを定義し、ルールを使用してそれらを特定のエージェントのリソースに適用できます。
ha_cluster_resource_defaults変数で指定したデフォルトは、独自に定義した値で当該デフォルトをオーバーライドするリソースには適用されません。デフォルトとして指定できるのはメタ属性のみです。
デフォルトセットごとに次の項目を設定できます。
-
id(オプション) - デフォルトセットの ID。指定しない場合は自動生成されます。 -
rule(オプション) - いつ、どのリソースにセットを適用するかを定義するpcs構文を使用して記述されたルール。ルールの指定については、pcs(8)man ページのresource defaults set createセクションを参照してください。 -
score(オプション) - デフォルトセットの重み。 -
attrs(オプション) - デフォルトとしてリソースに適用されるメタ属性。
-
ha_cluster_resource_defaults変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースのデフォルトを設定する
ha_clusterRHEL システムロール Playbook の例については、リソースおよびリソース操作のデフォルトを使用した高可用性クラスターの設定 を参照してください。ha_cluster_resource_operation_defaults(RHEL 9.3 以降) この変数は、リソース操作のデフォルトのセットを定義します。複数のデフォルトのセットを定義し、ルールを使用してそれらを特定のエージェントのリソースおよび特定のリソース操作に適用できます。
ha_cluster_resource_operation_defaults変数で指定したデフォルトは、独自に定義した値で当該デフォルトをオーバーライドするリソース操作には適用されません。デフォルトでは、ha_clusterRHEL システムロールは、リソース操作用の独自の値を定義するようにリソースを設定します。これらのデフォルトをha_cluster_resource_operations_defaults変数でオーバーライドする方法については、ha_cluster_resource_primitivesのcopy_operations_from_agentの項目の説明を参照してください。デフォルトとして指定できるのはメタ属性のみです。
ha_cluster_resource_operations_defaults変数の構造は、ルールの指定方法を除き、ha_cluster_resource_defaults変数の構造と同じです。セットが適用されるリソース操作を記述するルールの指定については、pcs(8)man ページのresource op defaults set createセクションを参照してください。ha_cluster_stonith_levels(RHEL 9.4 以降) この変数は、フェンシングトポロジーとも呼ばれる STONITH レベルを定義します。フェンシングレベルは、複数のデバイスを使用してノードをフェンスするようにクラスターを設定します。1 つのデバイスに障害が発生した場合に備えて代替デバイスを定義し、ノードが正常にフェンスされたと見なすために複数のデバイスをすべて正常に実行することを要求できます。フェンシングレベルの詳細は、高可用性クラスターの設定と管理 の フェンシングレベルの設定 を参照してください。
フェンシングレベルを定義するときに、次の項目を設定できます。
-
level(必須) - フェンシングレベルを試行する順序。Pacemaker は、成功するまでレベルを昇順に試します。 -
target(オプション) - このレベルが適用されるノードの名前。 次の 3 つの選択肢のいずれかを指定する必要があります。
-
target_pattern- このレベルが適用されるノードの名前に一致する POSIX 拡張正規表現。 -
target_attribute- このレベルが適用されるノードに設定されているノード属性の名前。 -
target_attributeおよびtarget_value- このレベルが適用されるノードに設定されているノード属性の名前と値。
-
resouce_ids(必須) - このレベルで試行する必要があるフェンシングリソースのリスト。デフォルトでは、フェンシングレベルは定義されていません。
-
ha_clusterRHEL システムロールで設定するフェンシングレベル定義の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow フェンシングのデフォルトを設定する
ha_clusterRHEL システムロール Playbook の例は、フェンシングレベルを使用した高可用性クラスターの設定 を参照してください。ha_cluster_constraints_locationこの変数は、リソースの場所の制約を定義します。リソースの場所の制約は、リソースを実行できるノードを示します。複数のリソースに一致する可能性のあるリソース ID またはパターンで指定されたリソースを指定できます。ノード名またはルールでノードを指定できます。
リソースの場所の制約に対して次の項目を設定できます。
-
resource(必須) - 制約が適用されるリソースの仕様。 -
node(必須) - リソースが優先または回避する必要があるノードの名前。 -
id(オプション) - 制約の ID。指定しない場合、自動生成されます。 options(オプション) - 名前と値のディクショナリーリスト。score- 制約の重みを設定します。-
正の
score値は、リソースがノードでの実行を優先することを意味します。 -
負の
score値は、リソースがノードで実行されないようにする必要があることを意味します。 -
-INFINITYのscore値は、リソースがノードで実行されないようにする必要があることを意味します。 -
scoreが指定されていない場合、スコア値はデフォルトでINFINITYになります。
-
正の
-
デフォルトでは、リソースの場所の制約は定義されていません。
リソース ID とノード名を指定するリソースの場所に対する制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースパターンを指定するリソースの場所の制約に対して設定する項目は、リソース ID を指定するリソースの場所の制約に対して設定する項目と同じです。ただし、リソース仕様そのものは除きます。リソース仕様に指定する項目は次のとおりです。
-
pattern(必須) - POSIX 拡張正規表現リソース ID が照合されます。
-
リソースパターンとノード名を指定するリソースの場所に対する制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソース ID とルールを指定するリソースの場所の制約に対して、次の項目を設定できます。
resource(必須) - 制約が適用されるリソースの仕様。-
id(必須) - リソース ID。 -
role(オプション) - 制約が制限されるリソースのロール。Started、Unpromoted、Promoted。
-
-
rule(必須) -pcs構文を使用して記述された制約ルール。詳細は、pcs(8) の man ページでconstraint locationセクションを参照してください。 - 指定するその他の項目は、ルールを指定しないリソース制約と同じ意味を持ちます。
リソース ID とルールを指定するリソースの場所に対する制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースパターンとルールを指定するリソースの場所の制約に対して設定する項目は、リソース ID とルールを指定するリソースの場所の制約に対して設定する項目と同じです。ただし、リソース仕様そのものは除きます。リソース仕様に指定する項目は次のとおりです。
-
pattern(必須) - POSIX 拡張正規表現リソース ID が照合されます。
-
リソースパターンとルールを指定するリソースの場所に対する制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースに制約のあるクラスターを作成する
ha_clusterRHEL システムロール Playbook の例は、リソースに制約のある高可用性クラスターの設定 を参照してください。ha_cluster_constraints_colocationこの変数は、リソースコロケーションの制約を定義します。リソースコロケーションの制約は、あるリソースの場所が別のリソースの場所に依存することを示しています。コロケーション制約には、2 つのリソースに対する単純なコロケーション制約と、複数のリソースに対するセットコロケーション制約の 2 種類があります。
単純なリソースコロケーション制約に対して次の項目を設定できます。
resource_follower(必須) -resource_leaderに関連して配置する必要があるリソース。-
id(必須) - リソース ID。 -
role(オプション) - 制約が制限されるリソースのロール。Started、Unpromoted、Promoted。
-
resource_leader(必須) - クラスターは、最初にこのリソースを配置する場所を決定してから、resource_followerを配置する場所を決定します。-
id(必須) - リソース ID。 -
role(オプション) - 制約が制限されるリソースのロール。Started、Unpromoted、Promoted。
-
-
id(オプション) - 制約の ID。指定しない場合、自動生成されます。 options(オプション) - 名前と値のディクショナリーリスト。score- 制約の重みを設定します。-
正の
score値は、リソースが同じノードで実行される必要があることを示します。 -
負の
score値は、リソースが異なるノードで実行される必要があることを示します。 -
+ INFINITYのscore値は、リソースが同じノードで実行される必要があることを示します。 -
-INFINITYのscore値は、リソースが異なるノードで実行される必要があることを示します。 -
scoreが指定されていない場合、スコア値はデフォルトでINFINITYになります。
-
正の
デフォルトでは、リソースコロケーション制約は定義されていません。
単純なリソースコロケーション制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースセットのコロケーション制約に対して次の項目を設定できます。
resource_sets(必須) - リソースセットのリスト。-
resource_ids(必須) - セット内のリソースのリスト。 -
options(オプション) - セット内のリソースが制約によってどのように扱われるかを微調整する名前と値のディクショナリーリスト。
-
-
id(オプション) - 単純なコロケーション制約の場合と同じ値。 -
options(オプション) - 単純なコロケーション制約の場合と同じ値。
リソースセットに対するコロケーション制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースに制約のあるクラスターを作成する
ha_clusterRHEL システムロール Playbook の例は、リソースに制約のある高可用性クラスターの設定 を参照してください。ha_cluster_constraints_orderこの変数は、リソースの順序に対する制約を定義します。リソース順序の制約は、特定のリソースアクションが発生する順序を示します。リソース順序の制約には、2 つのリソースに対する単純な順序制約と、複数のリソースに対するセット順序制約の 2 種類があります。
単純なリソース順序制約に対して次の項目を設定できます。
resource_first(必須) -resource_thenリソースが依存するリソース。-
id(必須) - リソース ID。 -
action(オプション) -resource_thenリソースに対してアクションを開始する前に完了する必要のあるアクション。許可される値:start、stop、promote、demote。
-
resource_then(必須) - 依存リソース。-
id(必須) - リソース ID。 -
action(オプション) -resource_firstリソースに対するアクションが完了した後にのみリソースが実行できるアクション。許可される値:start、stop、promote、demote。
-
-
id(オプション) - 制約の ID。指定しない場合、自動生成されます。 -
options(オプション) - 名前と値のディクショナリーリスト。
デフォルトでは、リソース順序の制約は定義されていません。
単純なリソース順序の制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースセットの順序制約に対して次の項目を設定できます。
resource_sets(必須) - リソースセットのリスト。-
resource_ids(必須) - セット内のリソースのリスト。 -
options(オプション) - セット内のリソースが制約によってどのように扱われるかを微調整する名前と値のディクショナリーリスト。
-
-
id(オプション) - 単純な順序制約の場合と同じ値。 -
options(オプション) - 単純な順序制約の場合と同じ値。
リソースセットの順序制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースに制約のあるクラスターを作成する
ha_clusterRHEL システムロール Playbook の例は、リソースに制約のある高可用性クラスターの設定 を参照してください。ha_cluster_constraints_ticketこの変数は、リソースチケットの制約を定義します。リソースチケットの制約は、特定のチケットに依存するリソースを示します。リソースチケット制約には、1 つのリソースに対する単純なチケット制約と、複数のリソースに対するチケット順序の制約の 2 種類があります。
単純なリソースチケット制約に対して次の項目を設定できます。
resource(必須) - 制約が適用されるリソースの仕様。-
id(必須) - リソース ID。 -
role(オプション) - 制約が制限されるリソースのロール。Started、Unpromoted、Promoted。
-
-
ticket(必須) - リソースが依存するチケットの名前。 -
id(オプション) - 制約の ID。指定しない場合、自動生成されます。 options(オプション) - 名前と値のディクショナリーリスト。-
loss-policy(オプション) - チケットが取り消された場合にリソースに対して実行するアクション。
-
デフォルトでは、リソースチケットの制約は定義されていません。
単純なリソースチケット制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースセットチケット制約に対して次の項目を設定できます。
resource_sets(必須) - リソースセットのリスト。-
resource_ids(必須) - セット内のリソースのリスト。 -
options(オプション) - セット内のリソースが制約によってどのように扱われるかを微調整する名前と値のディクショナリーリスト。
-
-
ticket(必須) - 単純なチケット制約の場合と同じ値。 -
id(オプション) - 単純なチケット制約の場合と同じ値。 -
options(オプション) - 単純なチケット制約の場合と同じ値。
リソースセットのチケット制約の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow リソースに制約のあるクラスターを作成する
ha_clusterRHEL システムロール Playbook の例は、リソースに制約のある高可用性クラスターの設定 を参照してください。ha_cluster_acls(RHEL 9.5 以降) この変数は、ACL ロール、ユーザー、およびグループを定義します。
acl_rolesには次の項目を設定できます。-
id(必須) - ACL ロールの ID。 -
description(任意) - ACL ロールの説明。 permissions(任意) - ACL ロール権限のリスト。-
kind(必須) - 付与するアクセス権。許可される値は、read、write、およびdenyです。 -
xpath(任意) - 権限を適用する CIB 内の XML 要素を選択する XPath 仕様。xpathまたはreferenceのどちらかを正確に指定する必要があります。 -
reference(任意) - 権限を適用する CIB 内の XML 要素の ID。xpath または reference のどちらかを正確に指定する必要があります。ID が存在する必要があります。
-
-
acl_usersには次の項目を設定できます。-
id(必須) - ACL ユーザーの ID。 -
roles(任意) - ユーザーに割り当てられた ACL ロール ID のリスト。
-
acl_groupには次の項目を設定できます。-
id(必須) - ACL グループの ID。 -
roles(任意) - グループに割り当てられた ACL ロール ID のリスト。
-
ACL 定義の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターで ACLS を有効にするには、
enable-aclクラスタープロパティーを設定する必要があります。ha_cluster_cluster_properties: - attrs: - name: enable-acl value: 'true'ha_cluster_cluster_properties: - attrs: - name: enable-acl value: 'true'Copy to Clipboard Copied! Toggle word wrap Toggle overflow ACL ロール、ユーザー、およびグループを使用してクラスターを作成する
ha_clusterRHEL システムロール Playbook の例については、RHEL システムロールを使用してアクセス制御リスト (ACL) を実装する高可用性クラスターの設定 を参照してください。ha_cluster_alerts(RHEL 9.5 以降) この変数は Pacemaker アラートを定義します。
注記ha_clusterロールは、アラートを処理する外部プログラムを呼び出すようにクラスターを設定します。このプログラムは管理者が提供し、クラスターノードに配布する必要があります。alertsには次の項目を設定できます。-
id(必須) - アラートの ID。 -
ipath(必須) - アラートエージェント実行可能ファイルへのパス。 -
description(任意) - アラートの説明。 -
instance_attrs(任意) - アラートのインスタンス属性のセットのリスト。サポートされるセットは 1 つだけです。最初のセットが使用され、残りは無視されます。 -
meta_attrs(任意) - アラートのメタ属性セットのリスト。サポートされるセットは 1 つだけです。最初のセットが使用され、残りは無視されます。*recipients(任意) - アラートの受信者のリスト。
-
recipientsには次の項目を設定できます。-
value(必須) - 受信者の値。 -
id(任意) - 受信者の ID。 -
description(任意) - 受信者の説明。 -
instance_attrs(任意) - 受信者のインスタンス属性セットのリスト。サポートされるセットは 1 つだけです。最初のセットが使用され、残りは無視されます。 -
meta_attrs(任意) - 受信者のメタ属性セットのリスト。サポートされるセットは 1 つだけです。最初のセットが使用され、残りは無視されます。
-
アラート定義の構造は次のとおりです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow アラートを使用してクラスターを設定する
ha_clusterRHEL システムロール Playbook の例については、ha_cluster RHEL システムロールを使用した高可用性クラスターのアラートの設定 を参照してください。ha_cluster_qnetd(RHEL 9.2 以降) この変数は、クラスターの外部クォーラムデバイスとして機能できる
qnetdホストを設定します。qnetdホストに対して次の項目を設定できます。-
present(オプション) -trueの場合、ホスト上にqnetdインスタンスを設定します。falseの場合、ホストからqnetd設定を削除します。デフォルト値はfalseです。これをtrueに設定する場合は、ha_cluster_cluster_presentをfalseに設定する必要があります。 -
start_on_boot(オプション) - ブート時にqnetdインスタンスを自動的に開始するかどうかを設定します。デフォルト値はtrueです。 -
regenerate_keys(オプション) -qnetdTLS 証明書を再生成するには、この変数をtrueに設定します。証明書を再生成する場合は、各クラスターのロールを再実行してqnetdホストに再度接続するか、手動でpcsを実行する必要があります。
-
フェンシングにより
qnetd操作が中断されるため、クラスターノード上でqnetdを実行することはできません。クォーラムデバイスを使用してクラスターを設定する
ha_clusterRHEL システムロール Playbook の例については、クォーラムデバイスを使用したクラスターの設定 を参照してください。
11.2. ha_cluster RHEL システムロールにインベントリーの指定 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster RHEL システムロール Playbook を使用して HA クラスターを設定する場合は、インベントリー内のクラスターの名前とアドレスを設定します。
インベントリー内の各ノードには、必要に応じて以下の項目を指定することができます。
-
node_name- クラスター内のノードの名前。 -
pcs_address- ノードと通信するためにpcsが使用するアドレス。名前、FQDN、または IP アドレスを指定でき、ポート番号を含めることができます。 -
corosync_addresses: Corosync が使用するアドレスのリスト。特定のクラスターを形成するすべてのノードに、同じ数のアドレスが必要です。特定のリンクに属するアドレスがすべてのノードで同じ位置に指定されるように、アドレスの順序がすべてのノードで同じである必要があります。
以下の例は、ターゲット node1 および node2 を持つインベントリーを示しています。node1 および node2 は完全修飾ドメイン名のいずれかである必要があります。そうでないと、たとえば、名前が /etc/hosts ファイルで解決可能である場合などに、ノードに接続できる必要があります。
RHEL 9.1 以降では、必要に応じて、インベントリー内の各ノードのウォッチドッグデバイスと SBD デバイスを設定できます。すべての SBD デバイスは、すべてのノードで共有され、すべてのノードからアクセスできる必要があります。ウォッチドッグデバイスもノードごとに異なる場合があります。インベントリーファイルで SBD ノードフェンシングを設定する手順の例については、ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。
11.3. 高可用性クラスターの pcsd TLS 証明書とキーファイルの作成 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.2 以降) クラスターノード間の接続は、Transport Layer Security (TLS) 暗号化を使用して保護されます。デフォルトでは、pcsd デーモンが自己署名証明書を生成します。ただし、多くのデプロイメントでは、デフォルトの証明書を会社の認証局によって発行された証明書に置き換え、pcsd 用の会社の証明書ポリシーを適用する必要がある場合があります。
ha_cluster RHEL システムロールを使用して、高可用性クラスターに TLS 証明書とキーファイルを作成できます。この Playbook を実行すると、ha_cluster RHEL システムロールが certificate RHEL システムロールを内部的に使用して TLS 証明書を管理します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_pcsd_certificates: <certificate_properties>-
自己署名された
pcsd証明書と秘密鍵ファイルを/var/lib/pcsdに作成する変数。この例では、pcsd証明書のファイル名はFILENAME.crtで、鍵ファイルの名前はFILENAME.keyです。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.4. リソースを実行していない高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster システムロールを使用すると、基本的なクラスターをシンプルかつ自動的に設定できます。基本的なクラスターを作成したら、pcs コマンドラインインターフェイスを使用して、リソースごとに他のクラスターコンポーネントと動作を設定できます。次の手順の例では、必要最小限のパラメーターを使用して、フェンシングが設定されていない基本的な 2 ノードクラスターを設定します。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.5. フェンシングおよびリソースを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスター設定の具体的なコンポーネントは、サイトごとに異なる個々のニーズによって異なります。次の手順の例は、ha_cluster RHEL システムロールを使用してさまざまなクラスターコンポーネントを設定するための形式を示しています。設定されるクラスターには、フェンシングデバイス、クラスターリソース、リソースグループ、および複製されたリソースが含まれています。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_resource_primitives: <cluster_resources>- ha_cluster RHEL システムロールによって設定される Pacemaker リソース (フェンシングを含む) のリソース定義のリスト。
ha_cluster_resource_groups: <resource_groups>-
ha_clusterRHEL システムロールによって設定されるリソースグループ定義のリスト。 ha_cluster_resource_clones: <resource_clones>-
ha_clusterRHEL システムロールによって設定されるリソースクローン定義のリスト。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.6. リソースおよびリソース操作のデフォルトを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.3 以降) クラスター設定では、全リソースのリソースオプションの Pacemaker デフォルト値を変更できます。クラスター内の全リソース操作のデフォルト値を変更することもできます。
リソースオプションのデフォルト値を変更する方法については、リソースオプションのデフォルト値の変更 を参照してください。グローバルリソース操作のデフォルトについては、グローバルリソース操作のデフォルトの設定 を参照してください。
次の手順の例では、ha_cluster RHEL システムロールを使用して、リソースとリソース操作のデフォルトを定義する高可用性クラスターを作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_resource_defaults: <resource_defaults>- リソースのデフォルトのセットを定義する変数。
ha_cluster_resource_operation_defaults: <resource_operation_defaults>- リソース操作のデフォルトのセットを定義する変数。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.7. フェンシングレベルを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.4 以降) ノードに複数のフェンシングデバイスを設定する場合、Pacemaker がデバイスを使用してノードをフェンシングしようとする順序を決定するために、それらのデバイスのフェンシングレベルを定義する必要があります。フェンシングレベルの詳細は、フェンシングレベルの設定 を参照してください。
次の手順の例では、ha_cluster RHEL システムロールを使用して、フェンシングレベルを定義する高可用性クラスターを作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password> fence1_password: <fence1_password> fence2_password: <fence2_password>
cluster_password: <cluster_password> fence1_password: <fence1_password> fence2_password: <fence2_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
Playbook ファイルを作成します(例:
~/playbook.yml)。このサンプル Playbook ファイルは、firewalldおよびselinuxサービスを実行するクラスターを設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_resource_primitives: <cluster_resources>- ha_cluster RHEL システムロールによって設定される Pacemaker リソース (フェンシングを含む) のリソース定義のリスト。
ha_cluster_stonith_levels: <stonith_levels>- フェンシングトポロジーとも呼ばれる STONITH レベルを定義する変数。複数のデバイスを使用してノードをフェンスするようにクラスターを設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.8. リソースに制約のある高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターを設定するときに、アプリケーションの要件に合わせてクラスターリソースの動作を指定できます。リソース制約を設定することで、クラスターリソースの動作を制御できます。
次のカテゴリーのリソース制約を定義できます。
- 場所の制約: リソースがどのノードで実行できるかを決定します。場所の制約の詳細は、リソースを実行するノードの決定 を参照してください。
- 順序の制約: リソースが実行される順序を決定します。順序の制約の詳細は、クラスターリソースの実行順序の決定 を参照してください。
- コロケーションの制約。1 つのリソースの場所が別のリソースの場所に依存することを指定します。コロケーションの制約の詳細は、クラスターリソースのコロケーション を参照してください。
- チケットの制約。特定の Booth チケットに依存するリソースを示します。Booth チケットの制約の詳細は、マルチサイト Pacemaker クラスター を参照してください。
次の手順の例では、ha_cluster RHEL システムロールを使用して、リソースの場所の制約、リソースコロケーションの制約、リソース順序の制約、およびリソースチケットの制約を含む高可用性クラスターを作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_resource_primitives: <cluster_resources>- ha_cluster RHEL システムロールによって設定される Pacemaker リソース (フェンシングを含む) のリソース定義のリスト。
ha_cluster_constraints_location: <location_constraints>- リソースの場所の制約を定義する変数。
ha_cluster_constraints_colocation: <colocation_constraints>- リソースのコロケーションの制約を定義する変数。
ha_cluster_constraints_order: <order_constraints>- リソースの順序の制約を定義する変数。
ha_cluster_constraints_ticket: <ticket_constraints>- Booth チケットの制約を定義する変数。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.9. 高可用性クラスターでの Corosync 値の設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.1 以降) corosync.conf ファイルは、Pacemaker の基盤となるクラスターメンバーシップおよびメッセージングレイヤーである Corosync によって使用されるクラスターパラメーターを提供します。corosync.conf ファイル内のいくつかのデフォルトパラメーターは、ご使用のシステムの設定に合わせて変更できます。一般的に、corosync.conf ファイルを直接編集することは推奨されません。ただし、ha_cluster RHEL システムロールを使用して Corosync 値を設定することはできます。
次の手順の例では、ha_cluster RHEL システムロールを使用して、Corosync 値を設定する高可用性クラスターを作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_transport: <transport_method>- クラスターの転送方法を設定する変数。
ha_cluster_totem: <totem_options>- Corosync トーテムオプションを設定する変数。
ha_cluster_quorum: <quorum_options>- クラスタークォーラムオプションを設定する変数。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.10. クラスター設定をエクスポートして RHEL システムロール Playbook を作成する リンクのコピーリンクがクリップボードにコピーされました!
RHEL 9.6 以降では、ha_cluster RHEL システムロールを使用して、クラスターの Corosync 設定を ha_cluster 変数にエクスポートし、その設定をロールに再度渡すことで、同じクラスターを再作成できるようになりました。クラスターの作成に ha_cluster を使用しなかった場合、またはクラスターの元の Playbook にアクセスできない場合は、この機能を使用して、クラスターを作成するための新しい Playbook を構築できます。
ha_cluster RHEL システムロールを使用してクラスターの設定をエクスポートしても、すべての変数がエクスポートされるわけではありません。これらの変数を考慮して、設定を手動で変更する必要があります。
エクスポートには次の変数が存在します。
-
ha_cluster_cluster_present -
ha_cluster_start_on_boot -
ha_cluster_cluster_name -
ha_cluster_transport -
ha_cluster_totem -
ha_cluster_quorum -
ha_cluster_node_options-node_name、corosync_addresses、およびpcs_addressオプションのみが存在します。
次の変数はエクスポートに存在しません。
-
ha_cluster_hacluster_password- これはロールの必須変数ですが、既存のクラスターから抽出することはできません。 -
ha_cluster_corosync_key_src、ha_cluster_pacemaker_key_src、およびha_cluster_fence_virt_key_src- これらの変数には、Corosync キーと Pacemaker キーを含むファイルへのパスが含まれています。キー自体はエクスポートされないため、これらの変数もエクスポートには存在しません。これらのキーはクラスターごとに一意である必要があります。 -
ha_cluster_regenerate_keys- 既存のキーを使用するか、新しいキーを生成するかを決定する必要があります。
現在のクラスター設定をエクスポートするには、ha_cluster RHEL システムロールを実行し、ha_cluster_export_configuration: true を設定します。これを行うと、ロールがクラスターまたは qnetd ホストの設定を完了し、その設定を ha_cluster_facts 変数に格納したときに、エクスポートがトリガーされます。
デフォルトでは、ha_cluster_cluster_present は true に設定され、ha_cluster_qnetd.present は false に設定されています。これらの設定により、指定ホスト上のクラスターが再設定され、指定ホストから qnetd 設定が削除され、設定がエクスポートされます。既存の設定を変更せずにエクスポートをトリガーするには、次の設定を使用してロールを実行します。
次の手順:
-
クラスターノード
node1からクラスター設定をha_cluster_facts変数にエクスポートします。 -
この Playbook を実行しても既存のクラスター設定が変更されないように、
ha_cluster_cluster_presentおよびha_cluster_qnetd変数を null に設定します。 -
Ansible デバッグモジュールを使用して、
ha_cluster_factsの内容を表示します。 -
ha_cluster_factsの内容を YAML 形式でコントロールノード上のファイルに保存し、それを基に Playbook を作成できるようにします。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - エクスポートする設定を使用して、以前に高可用性クラスターを設定した。
- RHEL 9 でのコントロールノードの準備 の説明に従って、コントロールノードにインベントリーファイルを作成した。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
hosts: node1- エクスポートするクラスター情報を含むノード。
ha_cluster_cluster_present: null- 指定ホスト上のクラスター設定を変更しないことを示すための設定。
ha_cluster_qnetd: null- 指定ホスト上の qnetd ホスト設定を変更しないことを示すための設定。
ha_cluster_export_configuration: true-
現在のクラスター設定をエクスポートし、
ha_cluster_infoモジュールによって生成されるha_cluster_facts変数に格納するかどうかを決定する変数。 ha_cluster_facts- エクスポートされたクラスター設定を格納する変数。
delegate_to: localhost- エクスポートされた設定ファイルの場所としてコントロールノードを指定します。
content: "{{ ha_cluster_facts | to_nice_yaml(sort_keys=false) }"},dest: /path/to/file,mode: "0640"- YAML 形式の設定ファイルを /path/to/file にコピーし、ファイルの権限を 0640 に設定します。
コントロールノードの /path/to/file にエクスポートした変数を使用して、ご使用のシステム用の Playbook を作成します。
ha_cluster_hacluster_password変数を追加する必要があります。この変数は必須の変数ですが、エクスポートには存在しないためです。システムで必要な場合は、ha_cluster_corosync_key_src、ha_cluster_pacemaker_key_src、ha_cluster_fence_virt_key_src、およびha_cluster_regenerate_keys変数を追加します。これらの変数はエクスポートされません。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.11. ha_cluster RHEL システムロールを使用したアクセス制御リスト (ACL) を実装する高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.5 以降) クラスターの pcs 管理アカウントは hacluster です。アクセス制御リスト (ACL) を使用すると、hacluster ユーザー以外の特定のローカルユーザーに Pacemaker クラスターを管理する権限を付与できます。この機能は、承認されていないユーザーによるビジネス上の機密情報へのアクセスを制限するのによく使用されます。
デフォルトでは、ACL は有効になっていません。そのため、全ノード上のグループ haclient の全メンバーに、クラスター設定への完全な読み取りおよび書き込みローカルアクセス権が付与されます。haclient のメンバーでないユーザーにアクセス権利は付与されません。ただし、ACL が有効になっている場合は、haclient グループのメンバーであっても、ACL からそのユーザーに付与されたものにしかアクセスできません。ACL が有効な場合でも、root および hacluster ユーザーアカウントには、常にクラスター設定へのフルアクセス権が付与されます。
ACL を使用してローカルユーザーの権限を設定する場合は、そのロールの権限を定義するロールを作成します。さらに、そのロールをユーザーに割り当てます。同じユーザーに複数のロールを割り当てた場合、拒否権限、書き込み権限、読み取り権限の順に優先されます。
次の手順の例では、ha_cluster RHEL システムロールを使用して、クラスター設定へのアクセスを制御する ACL を実装する高可用性クラスターを自動的に作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_resource_primitives: <cluster resources>-
ha_clusterRHEL システムロールによって設定される Pacemaker リソース (フェンシングリソースを含む) のリソース定義のリスト ha_cluster_cluster_properties: <cluster properties>- Pacemaker クラスター全体を対象とした設定のクラスタープロパティーセットのリスト。
ha_cluster_acls: <dictionary>- ACL ロール、ユーザー、およびグループ値のディクショナリー。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.12. ha_cluster_node_options 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する リンクのコピーリンクがクリップボードにコピーされました!
クラスター内の 1 つのノードに問題が発生した場合でも、クラスターが提供するサービスを引き続き利用可能にするには、1 つの以上フェンスデバイスを使用して Red Hat 高可用性クラスターを設定する必要があります。ご使用の環境で、リモートアクセス可能な電源スイッチによりクラスターノードをフェンスできない場合は、STONITH ブロックデバイス (SBD) を使用してフェンシングを設定できます。このデバイスは、共有ブロックストレージによるメッセージの交換を通じて、Pacemaker ベースのクラスターにノードフェンシングメカニズムを提供します。SBD は、Pacemaker、ウォッチドッグデバイス、および必要に応じて共有ストレージと統合し、フェンシングが必要なときにノードが確実に自己終了するように調整します。
ha_cluster RHEL システムロールを使用すると、SBD フェンシングを自動的に設定できます。ha_cluster では、次のどちらかの変数を使用して、ノードごとにウォッチドッグおよび SBD デバイスを設定できます。
-
ha_cluster_node_options: (RHEL 9.5 以降) これは Playbook ファイルで定義する単一の変数です。これはディクショナリーのリストです。各ディクショナリーで 1 つのノードのオプションを定義します。 -
ha_cluster: (RHEL 9.1 以降) 1 つのノードのみのオプションを定義するディクショナリー。ha_cluster変数はインベントリーファイルで設定します。各ノードに異なる値を設定するには、各ノードに変数を個別に定義します。
ha_cluster_node_options 変数と ha_cluster 変数の両方に SBD オプションが含まれている場合、ha_cluster_node_options のオプションが優先されます。
この手順の例では、Playbook ファイル内の ha_cluster_node_options 変数を使用して、ノードごとにノードアドレスと SBD オプションを設定します。インベントリーファイルで ha_cluster 変数を使用する手順の例については、ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_sbd_enabled: true- クラスターが SBD ノードフェンシングメカニズムを使用できるかどうかを決定する変数。
ha_cluster_sbd_options: <sbd options>-
SBD オプションを指定する名前と値のディクショナリーのリスト。これらのオプションの詳細は、システム上の
sbd(8) man ページのConfiguration via environmentセクションを参照してください。 ha_cluster_node_options: <node options>クラスターノードごとに異なる設定を定義する変数。次の SBD およびウォッチドッグ項目を設定できます。
-
sbd_watchdog_modules-/dev/watchdog*デバイスを作成するためにロードするモジュール。 -
sbd_watchdog_modules_blocklist- アンロードおよびブロックするウォッチドッグカーネルモジュール。 -
sbd_watchdog- SBD が使用するウォッチドッグデバイス。 -
sbd_devices- SBD メッセージの交換と監視に使用するデバイス。一定の長いデバイス名 (/dev/disk/by-id/) を常に使用してデバイスを参照します。
-
ha_cluster_cluster_properties: <cluster properties>- Pacemaker クラスター全体を対象とした設定のクラスタープロパティーセットのリスト。
ha_cluster_resource_primitives: <cluster resources>-
ha_clusterRHEL システムロールによって設定される Pacemaker リソース (フェンシングリソースを含む) のリソース定義のリスト
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.13. ha_cluster 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する リンクのコピーリンクがクリップボードにコピーされました!
クラスター内の 1 つのノードに問題が発生した場合でも、クラスターが提供するサービスを引き続き利用可能にするには、1 つの以上フェンスデバイスを使用して Red Hat 高可用性クラスターを設定する必要があります。ご使用の環境で、リモートアクセス可能な電源スイッチによりクラスターノードをフェンスできない場合は、STONITH ブロックデバイス (SBD) を使用してフェンシングを設定できます。このデバイスは、共有ブロックストレージによるメッセージの交換を通じて、Pacemaker ベースのクラスターにノードフェンシングメカニズムを提供します。SBD は、Pacemaker、ウォッチドッグデバイス、および必要に応じて共有ストレージと統合し、フェンシングが必要なときにノードが確実に自己終了するように調整します。
ha_cluster RHEL システムロールを使用すると、SBD フェンシングを自動的に設定できます。ha_cluster では、次のどちらかの変数を使用して、ノードごとにウォッチドッグおよび SBD デバイスを設定できます。
-
ha_cluster_node_options: (RHEL 9.5 以降) これは Playbook ファイルで定義する単一の変数です。これはディクショナリーのリストです。各ディクショナリーで 1 つのノードのオプションを定義します。 -
ha_cluster: (RHEL 9.1 以降) 1 つのノードのみのオプションを定義するディクショナリー。ha_cluster変数はインベントリーファイルで設定します。各ノードに異なる値を設定するには、各ノードに変数を個別に定義します。
ha_cluster_node_options 変数と ha_cluster 変数の両方に SBD オプションが含まれている場合、ha_cluster_node_options のオプションが優先されます。
ha_cluster_node_options 変数と ha_cluster 変数の両方に SBD オプションが含まれている場合、ha_cluster_node_options のオプションが優先されます。
次の手順の例では、ha_cluster システムロールを使用して、SBD フェンシングを使用する高可用性クラスターを作成します。この手順の例では、インベントリーファイルの ha_cluster 変数を使用して、ノードごとにノードアドレスと SBD オプションを設定します。Playbook ファイルで ha_cluster_node_options 変数を使用する手順の例については、ha_cluster_nodes_options 変数を使用して SBD ノードフェンシングを使用する高可用性クラスターを設定する を参照してください。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
手順
次の例のように、
ha_cluster変数を使用して各ノードのウォッチドッグデバイスと SBD デバイスを設定するクラスターのインベントリーファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーの例で指定されている SBD およびウォッチドッグ設定には、次のものが含まれています。
sbd_watchdog_modules-
/dev/watchdog*デバイスを作成するためにロードするウォッチドッグカーネルモジュール。 sbd_watchdog_modules_blocklist- アンロードおよびブロックするウォッチドッグカーネルモジュール。
sbd_watchdog- SBD が使用するウォッチドッグデバイス。
sbd_devices-
SBD メッセージの交換と監視に使用するデバイス。一定の長いデバイス名 (
/dev/disk/by-id/) を常に使用してデバイスを参照します。
インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
以下の例のように、Playbook ファイル(例:
~/playbook.yml)を作成します。インベントリーで SBD 変数と watchog 変数を指定しているため、Playbook にそれらを含める必要はありません。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: cluster_name- 作成するクラスターの名前。
ha_cluster_hacluster_password: password-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_sbd_enabled: true- クラスターが SBD ノードフェンシングメカニズムを使用できるかどうかを決定する変数。
ha_cluster_sbd_options: sbd options-
SBD オプションを指定する名前と値のディクショナリーのリスト。これらのオプションの詳細は、システム上の
sbd(8) man ページのConfiguration via environmentセクションを参照してください。 ha_cluster_cluster_properties: cluster properties- Pacemaker クラスター全体を対象とした設定のクラスタープロパティーセットのリスト。
ha_cluster_resource_primitives: cluster resources-
ha_clusterRHEL システムロールによって設定される Pacemaker リソース (フェンシングリソースを含む) のリソース定義のリスト
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.14. ha_cluster RHEL システムロールを使用して高可用性クラスターの配置ストラテジーを設定する リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.5 以降) Pacemaker クラスターは、リソース割り当てスコアに従ってリソースを割り当てます。デフォルトでは、すべてのノードのリソース割り当てスコアが等しい場合、Pacemaker は割り当てられたリソースの数が最も少ないノードにリソースを割り当てます。クラスター内のリソースが、大きく異なる割合のノードの容量 (メモリーや I/O など) を使用する場合、デフォルトの動作は、システムのワークロードのバランスをとるのに最適なストラテジーではない可能性があります。このような場合、ノードとリソースの使用率属性と配置ストラテジーを設定することで、割り当てストラテジーをカスタマイズできます。
使用率属性と配置ストラテジーの設定の詳細は、ノード配置ストラテジーの設定 を参照してください。
この手順の例では、ha_cluster RHEL システムロールを使用して、配置ストラテジーを定義するために使用率属性を設定する高可用性クラスターを自動的に作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_cluster_properties: <cluster properties>-
Pacemaker クラスター全体の設定のクラスタープロパティーのセットのリスト。使用率を有効にするには、
placement-strategyプロパティーを設定し、その値をdefault値と異なるものにする必要があります。 - `ha_cluster_node_options: <node options>
- クラスターノードごとに異なるさまざまな設定を定義する変数。
ha_cluster_resource_primitives: <cluster resources>ha_clusterRHEL システムロールによって設定される Pacemaker リソース (フェンシングリソースを含む) のリソース定義のリストPlaybook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.15. ha_cluster RHEL システムロールを使用して高可用性クラスターのアラートを設定する リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.5 以降) リソースやノードの障害、設定の変更などの Pacemaker イベントが発生した場合、何らかの外部アクションを実行する場合があります。たとえば、メールメッセージを送信したり、ファイルにログを記録したり、監視システムを更新したりする場合があります。
アラートエージェントを使用すると、外部アクションを実行するようにシステムを設定できます。アラートエージェントは、クラスターがリソースの設定と操作を処理するためにリソースエージェントを呼び出すのと同じ方法でクラスターが呼び出す外部プログラムです。クラスターは、環境変数を介してイベントに関する情報をエージェントに渡します。
ha_cluster RHEL システムロールは、アラートを処理する外部プログラムを呼び出すようにクラスターを設定します。外部プログラムを提供し、クラスターノードに配布するのは、管理者が行う必要があります。
アラートエージェントの詳細は、クラスターイベントのスクリプトのトリガー を参照してください。
この手順の例では、ha_cluster RHEL システムロールを使用して、Pacemaker アラートを設定する高可用性クラスターを自動的に作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_alerts: <alert definitions>Pacemaker アラートを定義する変数。
-
id- アラートの ID。 -
path- アラートエージェント実行可能ファイルへのパス。 -
description- アラートの説明。 -
instance_attrs- アラートのインスタンス属性セットのリスト。現在、サポートされているセットは 1 つだけであるため、最初のセットが使用され、残りは無視されます。 -
meta_attrs- アラートのメタ属性セットのリスト。現在、サポートされているセットは 1 つだけであるため、最初のセットが使用され、残りは無視されます。 -
recipients- アラートの受信者のリスト。 -
value- 受信者の値。 -
id- 受信者の ID。 -
description- 受信者の説明。 -
instance_attrs- 受信者のインスタンス属性セットのリスト。現在、サポートされているセットは 1 つだけであるため、最初のセットが使用され、残りは無視されます。 -
meta_attrs- 受信者のメタ属性セットのリスト。現在、サポートされているセットは 1 つだけであるため、最初のセットが使用され、残りは無視されます。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.16. クォーラムデバイスを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.2 以降) 別のクォーラムデバイスを設定すると、クラスターは標準のクォーラムルールで許容されるよりも多くのノード障害に耐えることができます。クォーラムデバイスは、クラスターの軽量な調停デバイスとして機能します。クォーラムデバイスは、偶数のノードを持つクラスターに推奨されます。2 ノードクラスターでクォーラムデバイスを使用すると、スプリットブレインの状況で存続するノードをより適切に判別できます。
クォーラムデバイスの詳細は、クォーラムデバイスの設定 を参照してください。
ha_cluster RHEL システムロールを使用し、別個のクォーラムデバイスを使用した高可用性クラスターを設定するには、まずクォーラムデバイスをセットアップします。クォーラムデバイスをセットアップした後は、任意の数のクラスターでデバイスを使用できます。
11.16.1. クォーラムデバイスの設定 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster RHEL システムロールを使用してクォーラムデバイスを設定するには、この手順の例に従います。クラスターノード上ではクォーラムデバイスを実行できないことに注意してください。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クォーラムデバイスの実行に使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクォーラムデバイスが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
~/playbook-qdevice.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_present: false-
falseに設定されると、すべてのクラスター設定をターゲットホストから削除することを決定する変数。 ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_qnetd: <quorum_device_options>-
qnetdホストを設定する変数。
Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook-qdevice.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook-qdevice.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook-qdevice.yml
$ ansible-playbook --ask-vault-pass ~/playbook-qdevice.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.16.2. クォーラムデバイスを使用するようにクラスターを設定する リンクのコピーリンクがクリップボードにコピーされました!
クォーラムデバイスを使用するようにクラスターを設定するには、この手順の例に従います。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
- クォーラムデバイスが設定されている。
手順
~/playbook-cluster-qdevice.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_quorum: <quorum_parameters>- クラスターでクォーラムデバイスを使用することを指定するのに使用できるクラスタークォーラムを設定する変数。
Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook-cluster-qdevice.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook-cluster-qdevice.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook-cluster-qdevice.yml
$ ansible-playbook --ask-vault-pass ~/playbook-cluster-qdevice.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.17. ノード属性を使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 9.4 以降) Pacemaker ルールを使用すると、設定をより動的なものにすることができます。たとえば、ノード属性を使用すると、時間に基づいてマシンを異なる処理グループに割り当て、場所の制約を作成するときにその属性を使用できます。
ノードで定義される属性に応じてリソースを制御する場合に使用されるノード属性の式です。ノード属性の詳細は、ルールによるリソースの場所の決定 を参照してください。
次の手順の例では、ha_cluster RHEL システムロールを使用して、ノード属性を設定する高可用性クラスターを作成します。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_node_options: <node_settings>- クラスターノードごとに異なるさまざまな設定を定義する変数。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 関連情報
11.18. ha_cluster RHEL システムロールを使用した高可用性クラスターでの Apache HTTP サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
高可用性クラスターは、単一障害点を排除し、ノードが稼働しなくなった場合に、あるクラスターノードから別のクラスターノードにサービスをフェイルオーバーして、可用性が高いサービスを提供します。Red Hat は、Red Hat 高可用性クラスターの計画、設定、保守に関する多様なドキュメントを提供しています。Red Hat クラスターのさまざまな分野に関するドキュメントのインデックスを提供する記事リストは、Red Hat High Availability Add-On Documentation Guide を参照してください。
次の使用例では、ha_cluster RHEL システムロールを使用して、2 ノードの Red Hat Enterprise Linux High Availability Add-On クラスターにアクティブ/パッシブ Apache HTTP サーバーを設定します。このユースケースでは、クライアントは Floating IP アドレスを使用して Apache HTTP サーバーにアクセスします。Web サーバーは、クラスターにある 2 つのノードのいずれかで実行します。Web サーバーが実行しているノードが正常に動作しなくなると、Web サーバーはクラスターの 2 番目のノードで再起動し、サービスの中断は最小限に抑えられます。
この例では、ホスト名が zapc.example.com の APC 電源スイッチを使用します。クラスターが他のフェンスエージェントを使用しない場合は、以下の例のように、ha_cluster_fence_agent_packages 変数を定義するときに、クラスターが必要とするフェンスエージェントのみを任意でリスト表示できます。
ha_cluster RHEL システムロールは、指定されたノードの既存のクラスター設定を置き換えます。Playbook に指定されていない設定はすべて失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - クラスターメンバーとして使用するシステムには、RHEL および RHEL High Availability Add-On のアクティブなサブスクリプションがある。
- ha_cluster RHEL システムロールのインベントリーの指定 で説明されているように、インベントリーファイルでクラスターノードが指定されている。インベントリーファイルの作成に関する一般的な情報については、RHEL 9 でのコントロールノードの準備 を参照してください。
- Pacemaker クラスターで XFS ファイルシステムを持つ LVM ボリュームを設定する の説明に従って、XFS ファイルシステムを使用して LVM 論理ボリュームを設定している。
- Configuring an Apache HTTP Server の説明に従って、Apache HTTP サーバーを設定している。
- システムには、クラスターノードをフェンスするのに使用される APC 電源スイッチが含まれている。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。cluster_password: <cluster_password>
cluster_password: <cluster_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ha_cluster_cluster_name: <cluster_name>- 作成するクラスターの名前。
ha_cluster_hacluster_password: <password>-
haclusterユーザーのパスワード。haclusterユーザーには、クラスターへのフルアクセス権が付与されます。 ha_cluster_manage_firewall: true-
ha_clusterRHEL システムロールがファイアウォールを管理するかどうかを決定する変数。 ha_cluster_manage_selinux: true-
ha_clusterRHEL システムロールがselinuxRHEL システムロールを使用してファイアウォール高可用性サービスのポートを管理するかどうかを決定する変数。 ha_cluster_fence_agent_packages: <fence_agent_packages>- インストールするフェンスエージェントパッケージのリスト。
ha_cluster_resource_primitives: <cluster_resources>- ha_cluster RHEL システムロールによって設定される Pacemaker リソース (フェンシングを含む) のリソース定義のリスト。
ha_cluster_resource_groups: <resource_groups>-
ha_clusterRHEL システムロールによって設定されるリソースグループ定義のリスト。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.ha_cluster/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow apacheリソースエージェントを使用して Apache を管理する場合はsystemdが使用されません。このため、Apache で提供されるlogrotateスクリプトを編集して、systemctlを使用して Apache を再ロードしないようにする必要があります。クラスター内の各ノードで、
/etc/logrotate.d/httpdファイルから以下の行を削除します。/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
# /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 削除した行を次の 3 行に置き換え、PID ファイルパスとして
/var/run/httpd-website.pidを指定します。ここの website は、Apache リソースの名前になります。この例では、Apache リソース名はWebsiteです。/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クラスター内のノードのいずれかから、クラスターのステータスを確認します。4 つのリソースがすべて同じノード (
z1.example.com) で実行されていることに注意してください。設定したリソースが実行していない場合は、
pcs resource debug-start resourceコマンドを実行して、リソースの設定をテストします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスターが起動したら、
IPaddr2リソースとして定義した IP アドレスをブラウザーで指定して、単純な単語 "Hello" で構成される表示例を確認できます。Hello
HelloCopy to Clipboard Copied! Toggle word wrap Toggle overflow z1.example.comで実行しているリソースグループがz2.example.comノードにフェイルオーバーするかどうかをテストするには、ノードz1.example.comをstandbyにすると、ノードがリソースをホストできなくなります。pcs node standby z1.example.com
[root@z1 ~]# pcs node standby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow ノード
z1をstandbyモードにしたら、クラスター内のノードのいずれかからクラスターのステータスを確認します。リソースはすべてz2で実行しているはずです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定義している IP アドレスの Web サイトは、中断せず表示されているはずです。
スタンバイモードからz1を削除するには、以下のコマンドを実行します。pcs node unstandby z1.example.com
[root@z1 ~]# pcs node unstandby z1.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記ノードを
スタンバイモードから削除しても、リソースはそのノードにフェイルオーバーしません。これは、リソースのresource-stickiness値により異なります。resource-stickinessメタ属性については、現在のノードを優先するようにリソースを設定する を参照してください。
第12章 RHEL システムロールを使用した systemd ジャーナルの設定 リンクのコピーリンクがクリップボードにコピーされました!
journald RHEL システムロールを使用すると、systemd ジャーナルを自動化し、Red Hat Ansible Automation Platform を使用して永続的なロギングを設定できます。
12.1. journald RHEL システムロールを使用した永続的なロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、systemd ジャーナルは /run/log/journal 内の小さなリングバッファーにのみログを保存します。これは永続的なものではありません。システムを再起動すると、ジャーナルデータベースログも削除されます。journald RHEL システムロールを使用すると、複数のシステムで一貫して永続的なロギングを設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
journald_persistent: true- 永続的なロギングを有効にします。
journald_max_disk_size: <size>-
ジャーナルファイルの最大ディスク領域サイズを MB 単位で指定します (例:
2048)。 journald_per_user: true-
各ユーザーのログデータを個別に保持するように
journaldを設定します。 journald_sync_interval: <interval>同期の間隔を分単位で設定します (例:
1)。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.journald/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第13章 RHEL システムロールを使用した自動クラッシュダンプの設定 リンクのコピーリンクがクリップボードにコピーされました!
Ansible を使用して kdump を管理するには、RHEL 9 で使用可能な RHEL システムロールの 1 つである kdump ロールを使用できます。
kdump ロールを使用すると、後で分析するためにシステムのメモリーの内容を保存する場所を指定できます。
13.1. kdump RHEL システムロールを使用したカーネルクラッシュダンプメカニズムの設定 リンクのコピーリンクがクリップボードにコピーされました!
カーネルクラッシュダンプは、システムの問題を診断およびトラブルシューティングするための重要な機能です。システムでカーネルパニックやその他の重大な障害が発生した場合、クラッシュカーネルダンプを使用すると、障害発生時におけるカーネルの状態のメモリーダンプ (コアダンプ) をキャプチャーできます。
Ansible Playbook を使用すると、kdump RHEL システムロールを使用して、複数のシステムでカーネルクラッシュダンプのパラメーターを設定できます。これにより、kdump サービスのすべての管理対象ノードで一貫した設定が確保されます。
kdump システムロールは、/etc/kdump.conf および /etc/sysconfig/kdump 設定ファイルの内容を置き換えます。以前の設定は、ロール変数で指定された設定に変更され、ロール変数で指定されていない場合は失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
kdump_target: <type_and_location>-
vmcoreをルートファイルシステム以外の場所に書き込みます。typeが raw またはファイルシステムの場合、locationは (名前、ラベル、または UUID で) パーティションを参照します。 kernel_settings_reboot_ok: <true|false>-
デフォルトは
falseです。trueに設定すると、要求された変更を有効にするために管理対象ホストの再起動が必要かどうかをシステムロールが判断し、ホストを再起動します。falseに設定すると、再起動が必要であることを示すtrue値を持つ変数kernel_settings_reboot_requiredがロールによって返されます。この場合、ユーザーが管理対象ノードを手動で再起動する必要があります。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.kdump/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
カーネルクラッシュダンプのパラメーターを確認します。
ansible managed-node-01.example.com -m command -a 'grep crashkernel /proc/cmdline'
$ ansible managed-node-01.example.com -m command -a 'grep crashkernel /proc/cmdline'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第14章 RHEL システムロールを使用したカーネルパラメーターの永続的な設定 リンクのコピーリンクがクリップボードにコピーされました!
kernel_settings RHEL システムロールを使用すると、複数のクライアントにカーネルパラメーターを同時に設定できます。同時設定には次の利点があります。
- 効率的な入力設定を持つ使いやすいインターフェイスを提供します。
- すべてのカーネルパラメーターを 1 か所で保持します。
コントロールマシンから kernel_settings ロールを実行すると、カーネルパラメーターはすぐに管理システムに適用され、再起動後も維持されます。
RHEL チャネルで提供される RHEL システムロールは、デフォルトの AppStream リポジトリー内の RPM パッケージとして RHEL のお客様に提供されることに注意してください。また、RHEL システムロールは、Ansible Automation Hub を介して Ansible サブスクリプションをご利用のお客様に、コレクションとして提供されます。
14.1. kernel_settings RHEL システムロールを使用して選択したカーネルパラメーターの適用 リンクのコピーリンクがクリップボードにコピーされました!
kernel_settings RHEL システムロールを使用すると、複数の管理対象オペレーティングシステムにわたってさまざまなカーネルパラメーターをリモートで設定し、永続的に有効にできます。たとえば、以下を設定できます。
- 小さなページを管理するオーバーヘッドを削減し、パフォーマンスを向上するための Transparent huge page
- ループバックインターフェイスを使用してネットワーク経由で送信する最大パケットサイズ
- 同時に開くことができるファイル数の制限
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
kernel_settings_sysfs: <list_of_sysctl_settings>-
sysctl設定とこの設定に割り当てる値の YAML リスト。 kernel_settings_transparent_hugepages: <value>-
メモリーサブシステムの Transparent Huge Pages (THP) 設定を制御します。THP のサポートを無効にするか (
never)、サポートをシステム全体で有効にするか (always)、またはMAD_HUGEPAGEリージョン内で有効にする (madvise) ことができます。 kernel_settings_reboot_ok: <true|false>-
デフォルトは
falseです。trueに設定すると、要求された変更を有効にするために管理対象ホストの再起動が必要かどうかをシステムロールが判断し、ホストを再起動します。falseに設定すると、再起動が必要であることを示すtrue値を持つ変数kernel_settings_reboot_requiredがロールによって返されます。この場合、ユーザーが管理対象ノードを手動で再起動する必要があります。
Playbook で使用されるすべての変数の詳細は、コントロールノードの /usr/share/ansible/roles/rhel-system-roles.kdump/README.md ファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
影響を受けるカーネルパラメーターを確認します。
ansible managed-node-01.example.com -m command -a 'sysctl fs.file-max kernel.threads-max net.ipv6.conf.lo.mtu' ansible managed-node-01.example.com -m command -a 'cat /sys/kernel/mm/transparent_hugepage/enabled'
# ansible managed-node-01.example.com -m command -a 'sysctl fs.file-max kernel.threads-max net.ipv6.conf.lo.mtu' # ansible managed-node-01.example.com -m command -a 'cat /sys/kernel/mm/transparent_hugepage/enabled'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第15章 RHEL システムロールを使用したロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールを使用すると、ローカルホストとリモートホストをロギングサーバーとして自動的に設定し、多数のクライアントシステムからログを収集できます。
ロギングソリューションは、ログと複数のロギング出力を読み取る複数の方法を提供します。
たとえば、ロギングシステムは以下の入力を受け取ることができます。
- ローカルファイル
-
systemd/journal - ネットワーク上の別のロギングシステム
さらに、ロギングシステムでは以下を出力できます。
-
/var/log/ディレクトリーのローカルファイルに保存されるログ - Elasticsearch エンジンに送信されるログ
- 別のロギングシステムに転送されるログ
logging RHEL システムロールを使用すると、状況に合わせて入力と出力を組み合わせることができます。たとえば、journal からの入力をローカルのファイルに保存しつつも、複数のファイルから読み込んだ入力を別のロギングシステムに転送してそのローカルのログファイルに保存するようにロギングソリューションを設定できます。
15.1. logging RHEL システムロールを使用したローカルログメッセージのフィルタリング リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールのプロパティーベースのフィルターを使用すると、さまざまな条件に基づいてローカルログメッセージをフィルタリングできます。その結果、たとえば以下を実現できます。
- 明確なログ: トラフィック量の多い環境では、ログが急増することがあります。エラーなどの特定のメッセージに注目することで、問題をより早く特定できるようになります。
- システムパフォーマンスの最適化: ログの量が多すぎると、通常、システムパフォーマンスが低下します。重要なイベントのみを選択的にログに記録することで、リソースの枯渇を防ぎ、システムをより効率的に運用できます。
- セキュリティーの強化: システムエラーやログイン失敗などのセキュリティーメッセージを効率的にフィルタリングすることで、関連するログのみを取得できます。これは、違反を検出し、コンプライアンス基準を満たすために重要です。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
logging_inputs-
ロギングの入力ディクショナリーのリストを定義します。
type: basicsオプションを指定すると、systemdジャーナルまたは Unix ソケットからの入力が対象になります。 logging_outputs-
ロギングの出力ディクショナリーのリストを定義します。
type: filesオプションにより、ローカルファイル (通常は/var/log/ディレクトリー内) にログを保存できます。property: msg、property: contains、およびproperty_value: errorオプションを指定すると、error文字列を含むすべてのログが/var/log/errors.logファイルに保存されます。property: msg、property: !contains、およびproperty_value: errorオプションを指定すると、他のすべてのログが/var/log/others.logファイルに保存されます。error値は、フィルタリングする必要がある文字列に置き換えることができます。 logging_flows-
ロギングのフローディクショナリーのリストを定義して、
logging_inputsとlogging_outputsの関係を指定します。inputs: [files_input]オプションは、ログの処理を開始する入力のリストを指定します。outputs: [files_output0, files_output1]オプションは、ログ送信先の出力のリストを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで、
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run... rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理対象ノードで、システムが
error文字列を含むメッセージをログに送信することを確認します。テストメッセージを送信します。
logger error
# logger errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のように
/var/log/errors.logログを表示します。cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: error
# cat /var/log/errors.log Aug 5 13:48:31 hostname root[6778]: errorCopy to Clipboard Copied! Toggle word wrap Toggle overflow hostnameはクライアントシステムのホスト名に置き換えます。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot) が含まれていることに注意してください。
15.2. logging RHEL システムロールを使用したリモートロギングソリューションの適用 リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールを使用して、1 つ以上のクライアントで systemd-journal サービスからログを取得し、リモートサーバーに転送するリモートロギングソリューションを設定できます。このサーバーは、remote_rsyslog および remote_files 設定からリモート入力を受け取り、リモートホスト名によって指定されたディレクトリー内のローカルファイルにログを出力します。
その結果、たとえば次のようなユースケースに対応できます。
- ログの集中管理: 複数のマシンのログメッセージを 1 つのストレージポイントから収集、アクセス、管理することで、日々の監視とトラブルシューティングのタスクが簡素化されます。また、このユースケースでは、ログメッセージを確認するために個々のマシンにログインする必要性が軽減されます。
- セキュリティーの強化: ログメッセージを 1 カ所に集中して保存すると、セキュアで改ざん不可能な環境にログを保存しやすくなります。このような環境により、セキュリティーインシデントをより効果的に検出して対応し、監査要件を満たすことが容易になります。
- ログ分析の効率向上: 複数のマシンまたはサービスにまたがる複雑な問題を迅速にトラブルシューティングするには、複数のシステムからのログメッセージを相関させることが重要です。これにより、さまざまなソースからのイベントをすばやく分析し、相互参照することができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーまたはクライアントシステムの SELinux ポリシーでポートを定義し、それらのポートのファイアウォールを開く。デフォルトの SELinux ポリシーには、ポート 601、514、6514、10514、および 20514 が含まれます。別のポートを使用するには、クライアントおよびサーバーシステムの SELinux ポリシーの変更 を参照してください。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook の最初のプレイで指定されている設定は次のとおりです。
logging_inputs-
ロギングの入力ディクショナリーのリストを定義します。
type: remoteオプションを指定すると、ネットワークを介した他のロギングシステムからのリモート入力が対象になります。udp_ports: [ 601 ]オプションは、監視する UDP ポート番号のリストを定義します。tcp_ports: [ 601 ]オプションは、監視する TCP ポート番号のリストを定義します。udp_portsとtcp_portsの両方が設定されている場合、udp_portsが使用され、tcp_portsは削除されます。 logging_outputs-
ロギングの出力ディクショナリーのリストを定義します。
type: remote_filesオプションを指定すると、ログの送信元であるリモートホストとプログラム名ごとに、出力がローカルファイルに保存されます。 logging_flows-
ロギングのフローディクショナリーのリストを定義して、
logging_inputsとlogging_outputsの関係を指定します。inputs: [remote_udp_input、remote_tcp_input]オプションは、ログの処理を開始する入力のリストを指定します。outputs: [remote_files_output]オプションは、ログ送信先の出力のリストを指定します。
サンプル Playbook の 2 番目のプレイで指定されている設定は次のとおりです。
logging_inputs-
ロギングの入力ディクショナリーのリストを定義します。
type: basicsオプションを指定すると、systemdジャーナルまたは Unix ソケットからの入力が対象になります。 logging_outputs-
ロギングの出力ディクショナリーのリストを定義します。
type: forwardsオプションにより、ネットワーク経由でリモートログサーバーにログを送信できます。severity: infoオプションは、重大度が情報のログメッセージを示します。facility: mailオプションは、ログメッセージを生成するシステムプログラムの種類を示します。target: <host1.example.com>オプションは、リモートログサーバーのホスト名を指定します。udp_port: 601/tcp_port: 601オプションは、リモートログサーバーがリッスンする UDP/TCP ポートを定義します。 logging_flows-
ロギングのフローディクショナリーのリストを定義して、
logging_inputsとlogging_outputsの関係を指定します。inputs: [basic_input]オプションは、ログの処理を開始する入力のリストを指定します。outputs: [forward_output0, forward_output1]オプションは、ログ送信先の出力のリストを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クライアントとサーバーシステムの両方で、
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.
# rsyslogd -N 1 rsyslogd: version 8.1911.0-6.el8, config validation run (level 1), master config /etc/rsyslog.conf rsyslogd: End of config validation run. Bye.Copy to Clipboard Copied! Toggle word wrap Toggle overflow クライアントシステムがサーバーにメッセージを送信することを確認します。
クライアントシステムで、テストメッセージを送信します。
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow サーバーシステムで、
/var/log/<host2.example.com>/messagesログを表示します。次に例を示します。cat /var/log/<host2.example.com>/messages Aug 5 13:48:31 <host2.example.com> root[6778]: test
# cat /var/log/<host2.example.com>/messages Aug 5 13:48:31 <host2.example.com> root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow <host2.example.com>は、クライアントシステムのホスト名に置き換えます。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合はroot) が含まれていることに注意してください。
15.3. TLS を使用した logging RHEL システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
Transport Layer Security (TLS) は、コンピューターネットワーク上でセキュアな通信を可能にするために設計された暗号化プロトコルです。
RHEL システムロールの logging を使用すると、ログメッセージのセキュアな転送を設定して、1 つ以上のクライアントで systemd-journal サービスからログを取得し、TLS を使用してリモートサーバーに転送できます。
通常、リモートロギングソリューションでログを転送するための TLS は、インターネットなどの信頼性の低いネットワークやパブリックネットワーク経由で機密データを送信する場合に使用されます。また、TLS で証明書を使用することで、クライアントから正しい信頼できるサーバーにログを確実に転送できます。これにより、"中間者攻撃" などの攻撃を防ぐことができます。
15.3.1. TLS を使用したクライアントロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールを使用すると、RHEL クライアントでのロギングを設定し、TLS 暗号化を使用してログをリモートロギングシステムに転送できます。
この手順では、秘密鍵と証明書を作成します。その後、Ansible インベントリーのクライアントグループ内の全ホストに TLS を設定します。TLS プロトコルは、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
証明書を作成するために、Playbook で certificate RHEL システムロールを呼び出す必要はありません。このロールは、logging_certificates 変数が設定されている場合、logging RHEL システムロールによって自動的に呼び出されます。
CA が作成された証明書に署名できるようにするには、管理対象ノードが IdM ドメインに登録されている必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードが IdM ドメインに登録されている。
- 管理対象ノード上で設定するロギングサーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、Red Hat ナレッジベースソリューション TLS extension "Extended Master Secret" enforced を参照してください。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
logging_certificates-
このパラメーターの値は、
certificateRHEL システムロールのcertificate_requestsに渡され、秘密鍵と証明書の作成に使用されます。 logging_pki_filesこのパラメーターを使用すると、TLS に使用する CA、証明書、および鍵ファイルを検索するためにロギングで使用するパスとその他の設定 (サブパラメーター
ca_cert、ca_cert_src、cert、cert_src、private_key、private_key_src、およびtlsで指定) を設定できます。注記logging_certificatesを使用して管理対象ノードにファイルを作成する場合は、ca_cert_src、cert_src、およびprivate_key_srcを使用しないでください。これらは、logging_certificatesによって作成されていないファイルのコピーに使用されます。ca_cert-
管理対象ノード上の CA 証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pemで、ファイル名はユーザーが設定します。 cert-
管理対象ノード上の証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pemで、ファイル名はユーザーが設定します。 private_key-
管理対象ノード上の秘密鍵ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pemで、ファイル名はユーザーが設定します。 ca_cert_src-
ターゲットホストの
ca_certで指定された場所にコピーされる、コントロールノード上の CA 証明書ファイルへのパスを表します。logging_certificatesを使用する場合は、これを使用しないでください。 cert_src-
ターゲットホストの
certで指定された場所にコピーされる、コントロールノード上の証明書ファイルへのパスを表します。logging_certificatesを使用する場合は、これを使用しないでください。 private_key_src-
ターゲットホストの
private_keyで指定された場所にコピーされる、コントロールノード上の秘密鍵ファイルへのパスを表します。logging_certificatesを使用する場合は、これを使用しないでください。 tls-
このパラメーターを
trueに設定すると、ネットワーク上でログがセキュアに転送されます。セキュアなラッパーが必要ない場合は、tls: falseに設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
関連情報
-
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイル -
/usr/share/doc/rhel-system-roles/logging/ディレクトリー -
/usr/share/ansible/roles/rhel-system-roles.certificate/README.mdファイル -
/usr/share/doc/rhel-system-roles/certificate/ディレクトリー - RHEL システムロールを使用した証明書の要求
-
rsyslog.conf(5)およびsyslog(3)man ページ
15.3.2. TLS を使用したサーバーロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールを使用すると、RHEL サーバーでのロギングを設定し、TLS 暗号化を使用してリモートロギングシステムからログを受信するようにサーバーを設定できます。
この手順では、秘密鍵と証明書を作成します。その後、Ansible インベントリーのサーバーグループ内の全ホストに TLS を設定します。
証明書を作成するために、Playbook で certificate RHEL システムロールを呼び出す必要はありません。logging RHEL システムロールがこのロールを自動的に呼び出します。
CA が作成された証明書に署名できるようにするには、管理対象ノードが IdM ドメインに登録されている必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードが IdM ドメインに登録されている。
- 管理対象ノード上で設定するロギングサーバーが RHEL 9.2 以降を実行し、FIPS モードが有効になっている場合、クライアントが Extended Master Secret (EMS) 拡張機能をサポートしているか、TLS 1.3 を使用している。EMS を使用しない TLS 1.2 接続は失敗します。詳細は、Red Hat ナレッジベースソリューション TLS extension "Extended Master Secret" enforced を参照してください。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
logging_certificates-
このパラメーターの値は、
certificateRHEL システムロールのcertificate_requestsに渡され、秘密鍵と証明書の作成に使用されます。 logging_pki_filesこのパラメーターを使用すると、TLS に使用する CA、証明書、および鍵ファイルを検索するためにロギングで使用するパスとその他の設定 (サブパラメーター
ca_cert、ca_cert_src、cert、cert_src、private_key、private_key_src、およびtlsで指定) を設定できます。注記logging_certificatesを使用して管理対象ノードにファイルを作成する場合は、ca_cert_src、cert_src、およびprivate_key_srcを使用しないでください。これらは、logging_certificatesによって作成されていないファイルのコピーに使用されます。ca_cert-
管理対象ノード上の CA 証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pemで、ファイル名はユーザーが設定します。 cert-
管理対象ノード上の証明書ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pemで、ファイル名はユーザーが設定します。 private_key-
管理対象ノード上の秘密鍵ファイルへのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pemで、ファイル名はユーザーが設定します。 ca_cert_src-
ターゲットホストの
ca_certで指定された場所にコピーされる、コントロールノード上の CA 証明書ファイルへのパスを表します。logging_certificatesを使用する場合は、これを使用しないでください。 cert_src-
ターゲットホストの
certで指定された場所にコピーされる、コントロールノード上の証明書ファイルへのパスを表します。logging_certificatesを使用する場合は、これを使用しないでください。 private_key_src-
ターゲットホストの
private_keyで指定された場所にコピーされる、コントロールノード上の秘密鍵ファイルへのパスを表します。logging_certificatesを使用する場合は、これを使用しないでください。 tls-
このパラメーターを
trueに設定すると、ネットワーク上でログがセキュアに転送されます。セキュアなラッパーが必要ない場合は、tls: falseに設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4. RELP で logging RHEL システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
Reliable Event Logging Protocol (RELP) とは、TCP ネットワークを使用する、データとメッセージロギング用のネットワーキングプロトコルのことです。イベントメッセージを確実に配信するので、メッセージの損失が許されない環境で使用できます。
RELP の送信側はコマンド形式でログエントリーを転送し、受信側は処理後に確認応答します。RELP は、一貫性を保つために、転送されたコマンドごとにトランザクション番号を保存し、各種メッセージの復旧します。
RELP Client と RELP Server の間に、リモートロギングシステムを検討することができます。RELP Client はリモートロギングシステムにログを転送し、RELP Server はリモートロギングシステムから送信されたすべてのログを受け取ります。このユースケースを実現するには、logging RHEL システムロールを使用して、ログエントリーが確実に送受信されるようにロギングシステムを設定できます。
15.4.1. RELP を使用したクライアントロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールを使用すると、ローカルに保存されたログメッセージを RELP を使用してリモートロギングシステムに転送するように設定できます。
この手順では、Ansible インベントリーの clients グループ内の全ホストに RELP を設定します。RELP 設定は Transport Layer Security (TLS) を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
target- リモートロギングシステムが稼働しているホスト名を指定する必須パラメーターです。
port- リモートロギングシステムがリッスンしているポート番号です。
tlsネットワーク上でログをセキュアに転送します。セキュアなラッパーが必要ない場合は、
tls変数をfalseに設定します。デフォルトではtlsパラメーターは true に設定されますが、RELP を使用する場合には鍵/証明書およびトリプレット {ca_cert、cert、private_key} や {ca_cert_src、cert_src、private_key_src} が必要です。-
{
ca_cert_src、cert_src、private_key_src} のトリプレットを設定すると、デフォルトの場所 (/etc/pki/tls/certsと/etc/pki/tls/private) が、コントロールノードからファイルを転送するため、管理対象ノードの宛先として使用されます。この場合、ファイル名はトリプレットの元の名前と同じです。 -
{
ca_cert、cert、private_key} トリプレットが設定されている場合は、ファイルはロギング設定の前にデフォルトのパスに配置されている必要があります。 - トリプレットの両方が設定されている場合には、ファイルはコントロールノードのローカルのパスから管理対象ノードの特定のパスへ転送されます。
-
{
ca_cert-
CA 証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pemで、ファイル名はユーザーが設定します。 cert-
証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pemで、ファイル名はユーザーが設定します。 private_key-
秘密鍵へのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pemで、ファイル名はユーザーが設定します。 ca_cert_src-
ローカルの CA 証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
ca_certを指定している場合は、その場所にコピーされます。 cert_src-
ローカルの証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
certを指定している場合には、その証明書が場所にコピーされます。 private_key_src-
ローカルキーファイルのパスを表します。これは管理対象ノードにコピーされます。
private_keyを指定している場合は、その場所にコピーされます。 pki_authmode-
nameまたはfingerprintの認証モードを使用できます。 permitted_servers- ロギングクライアントが、TLS 経由での接続およびログ送信を許可するサーバーのリスト。
inputs- ロギング入力ディクショナリーのリスト。
outputs- ロギング出力ディクショナリーのリスト。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
15.4.2. RELP を使用したサーバーログの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging RHEL システムロールを使用すると、ログメッセージを RELP を使用してリモートロギングシステムから受信するようにサーバーを設定できます。
以下の手順では、Ansible インベントリーの server グループ内の全ホストに RELP を設定します。RELP 設定は TLS を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
port- リモートロギングシステムがリッスンしているポート番号です。
tlsネットワーク上でログをセキュアに転送します。セキュアなラッパーが必要ない場合は、
tls変数をfalseに設定します。デフォルトではtlsパラメーターは true に設定されますが、RELP を使用する場合には鍵/証明書およびトリプレット {ca_cert、cert、private_key} や {ca_cert_src、cert_src、private_key_src} が必要です。-
{
ca_cert_src、cert_src、private_key_src} のトリプレットを設定すると、デフォルトの場所 (/etc/pki/tls/certsと/etc/pki/tls/private) が、コントロールノードからファイルを転送するため、管理対象ノードの宛先として使用されます。この場合、ファイル名はトリプレットの元の名前と同じです。 -
{
ca_cert、cert、private_key} トリプレットが設定されている場合は、ファイルはロギング設定の前にデフォルトのパスに配置されている必要があります。 - トリプレットの両方が設定されている場合には、ファイルはコントロールノードのローカルのパスから管理対象ノードの特定のパスへ転送されます。
-
{
ca_cert-
CA 証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/ca.pemで、ファイル名はユーザーが設定します。 cert-
証明書へのパスを表します。デフォルトのパスは
/etc/pki/tls/certs/server-cert.pemで、ファイル名はユーザーが設定します。 private_key-
秘密鍵へのパスを表します。デフォルトのパスは
/etc/pki/tls/private/server-key.pemで、ファイル名はユーザーが設定します。 ca_cert_src-
ローカルの CA 証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
ca_certを指定している場合は、その場所にコピーされます。 cert_src-
ローカルの証明書ファイルパスを表します。これは管理対象ノードにコピーされます。
certを指定している場合には、その証明書が場所にコピーされます。 private_key_src-
ローカルキーファイルのパスを表します。これは管理対象ノードにコピーされます。
private_keyを指定している場合は、その場所にコピーされます。 pki_authmode-
nameまたはfingerprintの認証モードを使用できます。 permitted_clients- ロギングサーバーが TLS 経由での接続およびログ送信を許可するクライアントのリスト。
inputs- ロギング入力ディクショナリーのリスト。
outputs- ロギング出力ディクショナリーのリスト。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.logging/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第16章 RHEL システムロールを使用した PCP によるパフォーマンス監視の設定 リンクのコピーリンクがクリップボードにコピーされました!
Performance Co-Pilot (PCP) は、システムパフォーマンス分析ツールキットです。これを使用すると、Red Hat Enterprise Linux システム上の多くのコンポーネントからパフォーマンスデータを記録および分析できます。
metrics RHEL システムロールを使用すると、PCP のインストールと設定を自動化できます。また、ロールを使用して Grafana を設定し、PCP メトリクスを視覚化できます。
16.1. metrics RHEL システムロールを使用して Performance Co-Pilot を設定する リンクのコピーリンクがクリップボードにコピーされました!
Performance Co-Pilot (PCP) を使用すると、CPU 使用率やメモリー使用量など、多くのメトリクスを監視できます。これは、たとえばリソースとパフォーマンスのボトルネックを特定するのに役立ちます。metrics RHEL システムロールを使用すると、複数のホストに PCP をリモートで設定してメトリクスを記録できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
metrics_retention_days: <number>-
pmlogger_dailysystemd タイマーが古い PCP アーカイブを削除するまでの日数を設定します。 metrics_manage_firewall: <true|false>-
firewalldサービスで必要なポートをロールによって開くかどうかを定義します。管理対象ノード上の PCP にリモートでアクセスする場合は、この変数をtrueに設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.metrics/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
メトリクスをクエリーします。次に例を示します。
ansible managed-node-01.example.com -m command -a 'pminfo -f kernel.all.load'
# ansible managed-node-01.example.com -m command -a 'pminfo -f kernel.all.load'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
16.2. metrics RHEL システムロールを使用して認証を使用する Performance Co-Pilot を設定する リンクのコピーリンクがクリップボードにコピーされました!
Performance Co-Pilot (PCP) で認証を有効にすると、pmcd サービスと Performance Metrics Domain Agent (PDMA) によって、監視ツールを実行しているユーザーにアクションの実行を許可するかどうかを決定できるようになります。認証されたユーザーは機密情報を含むメトリクスにアクセスできます。また、エージェントの中には認証が必要なものもあります。たとえば、bpftrace エージェントは、認証を使用して、bpftrace スクリプトをカーネルにロードしてメトリクスを生成することがユーザーに許可されているかどうかを確認します。
metrics RHEL システムロールを使用すると、認証を使用する PCP を複数のホストにリモートで設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。metrics_usr: <username> metrics_pwd: <password>
metrics_usr: <username> metrics_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
metrics_retention_days: <number>-
pmlogger_dailysystemd タイマーが古い PCP アーカイブを削除するまでの日数を設定します。 metrics_manage_firewall: <true|false>-
firewalldサービスで必要なポートをロールによって開くかどうかを定義します。管理対象ノード上の PCP にリモートでアクセスする場合は、この変数をtrueに設定します。 metrics_username: <username>-
このロールは、管理対象ノード上でこのユーザーをローカルに作成し、Simple Authentication and Security Layer (SASL) データベース
/etc/pcp/passwd.dbに認証情報を追加し、PCP に認証を設定します。さらに、Playbook でmetrics_from_bpftrace: trueを設定すると、PCP がこのアカウントを使用してbpftraceスクリプトを登録します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.metrics/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
pcpパッケージがインストールされているホストで、認証を必要とするメトリクスをクエリーします。Playbook で使用した認証情報を使用してメトリクスをクエリーします。
pminfo -fmdt -h pcp://managed-node-01.example.com?username=<user> proc.fd.count Password: <password> proc.fd.count inst [844 or "000844 /var/lib/pcp/pmdas/proc/pmdaproc"] value 5# pminfo -fmdt -h pcp://managed-node-01.example.com?username=<user> proc.fd.count Password: <password> proc.fd.count inst [844 or "000844 /var/lib/pcp/pmdas/proc/pmdaproc"] value 5Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが成功すると、
proc.fd.countメトリクスの値が返されます。ユーザー名を省略してコマンドを再度実行し、認証されていないユーザーの場合はコマンドが失敗することを確認します。
pminfo -fmdt -h pcp://managed-node-01.example.com proc.fd.count proc.fd.count Error: No permission to perform requested operation
# pminfo -fmdt -h pcp://managed-node-01.example.com proc.fd.count proc.fd.count Error: No permission to perform requested operationCopy to Clipboard Copied! Toggle word wrap Toggle overflow
次のステップ
16.3. Performance Co-Pilot で複数のホストを監視するために metrics RHEL システムロールを使用して Grafana を設定する リンクのコピーリンクがクリップボードにコピーされました!
複数のホストに Performance Co-Pilot (PCP) をすでに設定している場合は、Grafana のインスタンスを使用して、これらのホストのメトリクスを視覚化できます。ライブデータを表示できます。PCP データが Redis データベースに保存されている場合は、過去のデータも表示できます。
metrics RHEL システムロールを使用すると、Grafana、PCP プラグイン、オプションの Redis データベース、およびデータソースの設定のセットアッププロセスを自動化できます。
metrics ロールを使用してホストに Grafana をインストールすると、ロールによってこのホストに PCP も自動的にインストールされます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 監視対象ホストへのリモートアクセス用に PCP が設定されている。
- Grafana をインストールするホストが、監視する予定の PCP ノードのポート 44321 にアクセスできる。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。grafana_admin_pwd: <password>
grafana_admin_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
metrics_graph_service: true-
Grafana と PCP プラグインをインストールします。さらに、
PCP Vector、PCP Redis、およびPCP bpftraceデータソースが Grafana に追加されます。 metrics_query_service: <true|false>- ロールによって、一元的なメトリクス記録用に Redis をインストールして設定する必要があるかどうかを定義します。有効にすると、PCP クライアントから収集されたデータが Redis に保存され、ライブデータだけでなく履歴データも表示できるようになります。
metrics_monitored_hosts: <list_of_hosts>- 監視するホストのリストを定義します。定義すると、Grafana で、これらのホストのデータに加えて、Grafana を実行しているホストのデータを表示できます。
metrics_manage_firewall: <true|false>-
firewalldサービスで必要なポートをロールによって開くかどうかを定義します。この変数をtrueに設定すると、たとえば Grafana にリモートでアクセスできるようになります。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.metrics/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
-
ブラウザーで
http://<grafana_server_IP_or_hostname>:3000を開き、上記手順で設定したパスワードを使用してadminユーザーとしてログインします。 監視データを表示します。
ライブデータを表示するには、次の手順を実行します。
- → → →
-
デフォルトでは、Grafana を実行しているホストからのメトリクスがグラフに表示されます。別のホストに切り替えるには、
hostspecフィールドにホスト名を入力して Enter キー を押します。
-
Redis データベースに保存されている履歴データを表示するには、PCP Redis データソースを使用してパネルを作成 します。そのためには、Playbook で
metrics_query_service: trueを設定する必要があります。
16.4. metrics RHEL システムロールを使用して Performance Co-Pilot に Web フックを設定する リンクのコピーリンクがクリップボードにコピーされました!
Performance Co-Pilot (PCP) スイートには、Performance Metrics Inference Engine (PMIE) サービスが含まれています。このサービスは、パフォーマンスルールをリアルタイムで評価します。たとえば、デフォルトのルールを使用すると、過剰なスワップアクティビティーを検出できます。
1 台のホストを、複数の PCP ノードから監視データを収集する中央 PCP 管理サイトとして設定できます。ルールが一致すると、この中央ホストは Web フックに通知を送信して他のサービスに通知します。たとえば、Web フックによって、イベントを引き起こしたホスト上の Ansible Automation Platform テンプレートまたは Playbook に対して Event-Driven Ansible を実行するようにトリガーできます。
metrics RHEL システムロールを使用すると、Web フックに通知する中央 PCP 管理ホストの設定を自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 監視対象ホストへのリモートアクセス用に PCP が設定されている。
- PMIE を設定するホストが、監視する予定の PCP ノードのポート 44321 にアクセスできる。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
metrics_retention_days: <number>-
pmlogger_dailysystemd タイマーが古い PCP アーカイブを削除するまでの日数を設定します。 metrics_manage_firewall: <true|false>-
firewalldサービスで必要なポートをロールによって開くかどうかを定義します。管理対象ノード上の PCP にリモートでアクセスする場合は、この変数をtrueに設定します。 metrics_monitored_hosts: <list_of_hosts>- 監視するホストを指定します。
metrics_webhook_endpoint: <URL>- Performance Metrics Inference Engine (PMIE) がパフォーマンスに関して検出された問題に関する通知を送信する Web フックエンドポイントを設定します。デフォルトでは、この問題はローカルシステムにのみ記録されます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.metrics/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
managed-node-node-01.example.comの設定概要を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 最後の 3 行から、PMIE が 3 つのシステムを監視するように設定されていることを確認できます。
第17章 RHEL システムロールを使用した NBDE の設定 リンクのコピーリンクがクリップボードにコピーされました!
nbde_client および nbde_server RHEL システムロールを使用すると、Clevis および Tang を使用した Policy-Based Decryption (PBD) ソリューションを自動でデプロイできます。rhel-system-roles パッケージには、これらのシステムロール、関連する例、リファレンスドキュメントが含まれます。
17.1. 複数の Tang サーバーのセットアップに nbde_server RHEL システムロールを使用する リンクのコピーリンクがクリップボードにコピーされました!
nbde_server システムロールを使用すると、自動ディスク暗号化ソリューションの一部として、Tang サーバーをデプロイして管理できます。このロールは以下の機能をサポートします。
- Tang 鍵のローテーション
- Tang 鍵のデプロイおよびバックアップ
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このサンプル Playbook により、Tang サーバーのデプロイと鍵のローテーションが実行されます。
サンプル Playbook で指定されている設定は次のとおりです。
nbde_server_manage_firewall: true-
firewallシステムロールを使用して、nbde_serverロールで使用されるポートを管理します。 nbde_server_manage_selinux: trueselinuxシステムロールを使用して、nbde_serverロールで使用されるポートを管理します。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.nbde_server/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
NBDE クライアントで、次のコマンドを使用して、Tang サーバーが正しく動作していることを確認します。このコマンドにより、暗号化と復号化に渡すものと同じメッセージが返される必要があります。
ansible managed-node-01.example.com -m command -a 'echo test | clevis encrypt tang '{"url":"<tang.server.example.com>"}' -y | clevis decrypt' test# ansible managed-node-01.example.com -m command -a 'echo test | clevis encrypt tang '{"url":"<tang.server.example.com>"}' -y | clevis decrypt' testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
17.2. nbde_client RHEL システムロールを使用して DHCP を使用する Clevis クライアントを設定する リンクのコピーリンクがクリップボードにコピーされました!
nbde_client システムロールにより、複数の Clevis クライアントを自動的にデプロイできます。
このロールを使用すると、LUKS で暗号化されたボリュームを 1 つ以上の Network-Bound (NBDE) サーバー (Tang サーバー) にバインドすることが可能です。パスフレーズを使用して既存のボリュームの暗号化を保持するか、削除できます。パスフレーズを削除したら、NBDE だけを使用してボリュームのロックを解除できます。これは、システムのプロビジョニング後に削除する必要がある一時鍵またはパスワードを使用して、ボリュームが最初に暗号化されている場合に役立ちます。
パスフレーズと鍵ファイルの両方を指定する場合には、ロールは最初に指定した内容を使用します。有効なバインディングが見つからない場合は、既存のバインディングからパスフレーズの取得を試みます。
Policy-Based Decryption (PBD) では、デバイスとスロットのマッピングの形でバインディングを定義します。そのため、同じデバイスに対して複数のバインドを設定できます。デフォルトのスロットは 1 です。
nbde_client システムロールは、Tang バインディングのみをサポートします。したがって、TPM2 バインディングには使用できません。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - LUKS を使用してすでに暗号化されているボリューム。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow このサンプル Playbook は、2 台の Tang サーバーのうち少なくとも 1 台が利用可能な場合に、LUKS で暗号化した 2 つのボリュームを自動的にアンロックするように Clevis クライアントを設定します。
サンプル Playbook で指定されている設定は次のとおりです。
state: present-
stateの値は、Playbook を実行した後の設定を示します。新しいバインディングを作成するか、既存のバインディングを更新する場合は、presentを使用します。clevis luks bindとは異なり、state: presentを使用してデバイススロットにある既存のバインディングを上書きすることもできます。absentに設定すると、指定したバインディングが削除されます。 nbde_client_early_boot: truenbde_clientロールは、デフォルトで、起動初期段階で Tang ピン用のネットワークを利用可能にします。この機能を無効にする必要がある場合は、Playbook にnbde_client_early_boot: false変数を追加します。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.nbde_client/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
NBDE クライアントで、Tang サーバーによって自動的にロック解除される暗号化ボリュームの LUKS ピンに、対応する情報が含まれていることを確認します。
ansible managed-node-01.example.com -m command -a 'clevis luks list -d /dev/rhel/root' 1: tang '{"url":"<http://server1.example.com/>"}' 2: tang '{"url":"<http://server2.example.com/>"}'# ansible managed-node-01.example.com -m command -a 'clevis luks list -d /dev/rhel/root' 1: tang '{"url":"<http://server1.example.com/>"}' 2: tang '{"url":"<http://server2.example.com/>"}'Copy to Clipboard Copied! Toggle word wrap Toggle overflow nbde_client_early_boot: false変数を使用しない場合は、起動初期にバインディングが使用できることを確認します。次に例を示します。ansible managed-node-01.example.com -m command -a 'lsinitrd | grep clevis-luks' lrwxrwxrwx 1 root root 48 Jan 4 02:56 etc/systemd/system/cryptsetup.target.wants/clevis-luks-askpass.path -> /usr/lib/systemd/system/clevis-luks-askpass.path …
# ansible managed-node-01.example.com -m command -a 'lsinitrd | grep clevis-luks' lrwxrwxrwx 1 root root 48 Jan 4 02:56 etc/systemd/system/cryptsetup.target.wants/clevis-luks-askpass.path -> /usr/lib/systemd/system/clevis-luks-askpass.path …Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.3. nbde_client RHEL システムロールを使用して静的 IP Clevis クライアントを設定する リンクのコピーリンクがクリップボードにコピーされました!
nbde_client RHEL システムロールは、Dynamic Host Configuration Protocol (DHCP) を使用する環境にのみ対応しています。静的 IP 設定の NBDE クライアントでは、ネットワーク設定をカーネルブートパラメーターとして渡す必要があります。
通常、管理者は Playbook を再利用します。Ansible が起動初期段階で静的 IP アドレスを割り当てるホストごとに、個別の Playbook を管理することはありません。そうすることにより、Playbook 内の変数を使用し、外部ファイルで設定を提供できます。そのため、必要なのは Playbook 1 つと設定を含むファイル 1 つだけです。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - LUKS を使用してすでに暗号化されているボリューム。
手順
ホストのネットワーク設定を含むファイル (例:
static-ip-settings-clients.yml) を作成し、ホストに動的に割り当てる値を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Playbook は、
~/static-ip-settings-clients.ymlファイルにリストされている各ホストの特定の値を動的に読み取ります。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第18章 RHEL システムロールを使用したネットワーク設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールを使用すると、ネットワーク関連の設定および管理タスクを自動化できます。
18.1. network RHEL システムロールとインターフェイス名を使用した静的 IP アドレスでのイーサネット接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用すると、静的 IP アドレス、ゲートウェイ、および DNS 設定を使用してイーサネット接続を設定し、それらを指定のインターフェイス名に割り当てることができます。
通常、管理者は Playbook を再利用します。Ansible が静的 IP アドレスを割り当てるホストごとに、個別の Playbook を管理することはありません。そうすることにより、Playbook 内の変数を使用し、外部ファイルで設定を維持できます。その結果、複数のホストに個別の設定を動的に割り当てるために必要な Playbook が 1 つだけになります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーの構成に物理または仮想イーサネットデバイスが存在する。
- 管理対象ノードが NetworkManager を使用してネットワークを設定している。
手順
~/inventoryファイルを編集し、ホストエントリーにホスト固有の設定を追加します。managed-node-01.example.com interface=enp1s0 ip_v4=192.0.2.1/24 ip_v6=2001:db8:1::1/64 gateway_v4=192.0.2.254 gateway_v6=2001:db8:1::fffe managed-node-02.example.com interface=enp1s0 ip_v4=192.0.2.2/24 ip_v6=2001:db8:1::2/64 gateway_v4=192.0.2.254 gateway_v6=2001:db8:1::fffe
managed-node-01.example.com interface=enp1s0 ip_v4=192.0.2.1/24 ip_v6=2001:db8:1::1/64 gateway_v4=192.0.2.254 gateway_v6=2001:db8:1::fffe managed-node-02.example.com interface=enp1s0 ip_v4=192.0.2.2/24 ip_v6=2001:db8:1::2/64 gateway_v4=192.0.2.254 gateway_v6=2001:db8:1::fffeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Playbook は、インベントリーファイルから各ホストの特定の値を動的に読み取り、すべてのホストで同じ設定に対して Playbook 内の静的な値を使用します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードの Ansible fact をクエリーし、アクティブなネットワーク設定を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.2. network RHEL システムロールとデバイスパスを使用した静的 IP アドレスでのイーサネット接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用すると、静的 IP アドレス、ゲートウェイ、および DNS 設定を使用してイーサネット接続を設定し、それらを名前ではなくパスに基づいてデバイスに割り当てることができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーの構成に物理または仮想イーサネットデバイスが存在する。
- 管理対象ノードが NetworkManager を使用してネットワークを設定している。
-
デバイスのパスがわかっている。
udevadm info /sys/class/net/<device_name> | grep ID_PATH=コマンドを使用すると、デバイスパスを表示できます。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
match-
設定を適用するために満たす必要がある条件を定義します。この変数は
pathオプションでのみ使用できます。 path-
デバイスの永続パスを定義します。固定パスまたは式の形式で設定できます。値には修飾子とワイルドカードを含めることができます。この例では、PCI ID
0000:00:0[1-3].0に一致するデバイスには設定を適用しますが、0000:00:02.0に一致するデバイスには適用しません。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードの Ansible fact をクエリーし、アクティブなネットワーク設定を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.3. network RHEL システムロールとインターフェイス名を使用した動的 IP アドレスでのイーサネット接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用すると、DHCP サーバーおよび IPv6 ステートレスアドレス自動設定 (SLAAC) から IP アドレス、ゲートウェイ、および DNS 設定を取得するイーサネット接続を設定できます。このロールを使用すると、指定のインターフェイス名に接続プロファイルを割り当てることができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーの構成に物理または仮想イーサネットデバイスが存在する。
- ネットワーク内で DHCP サーバーと SLAAC が利用できる。
- 管理対象ノードが NetworkManager サービスを使用してネットワークを設定している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
dhcp4: yes- DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
auto6: yes-
IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが
managedフラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードの Ansible fact をクエリーし、インターフェイスが IP アドレスと DNS 設定を受信したことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4. network RHEL システムロールとデバイスパスを使用した動的 IP アドレスでのイーサネット接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Enterprise Linux ホストをイーサネットネットワークに接続するには、ネットワークデバイスの NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用すると、DHCP サーバーおよび IPv6 ステートレスアドレス自動設定 (SLAAC) から IP アドレス、ゲートウェイ、および DNS 設定を取得するイーサネット接続を設定できます。このロールにより、インターフェイス名ではなくパスに基づいてデバイスに接続プロファイルを割り当てることができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーの構成に物理または仮想イーサネットデバイスが存在する。
- ネットワーク内で DHCP サーバーと SLAAC が利用できる。
- 管理対象ホストは、NetworkManager を使用してネットワークを設定します。
-
デバイスのパスがわかっている。
udevadm info /sys/class/net/<device_name> | grep ID_PATH=コマンドを使用すると、デバイスパスを表示できます。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
match: path-
設定を適用するために満たす必要がある条件を定義します。この変数は
pathオプションでのみ使用できます。 path: <path_and_expressions>-
デバイスの永続パスを定義します。固定パスまたは式の形式で設定できます。値には修飾子とワイルドカードを含めることができます。この例では、PCI ID
0000:00:0[1-3].0に一致するデバイスには設定を適用しますが、0000:00:02.0に一致するデバイスには適用しません。 dhcp4: yes- DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
auto6: yes-
IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが
managedフラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードの Ansible fact をクエリーし、インターフェイスが IP アドレスと DNS 設定を受信したことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.5. network RHEL システムロールを使用した 802.1X ネットワーク認証による静的イーサネット接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークアクセス制御 (NAC) は、不正なクライアントからネットワークを保護します。クライアントがネットワークにアクセスできるようにするために、認証に必要な詳細を NetworkManager 接続プロファイルで指定できます。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
Ansible Playbook を使用して秘密鍵、証明書、および CA 証明書をクライアントにコピーしてから、network RHEL システムロールを使用して 802.1X ネットワーク認証による接続プロファイルを設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - ネットワークは 802.1X ネットワーク認証をサポートしている。
- 管理対象ノードが NetworkManager を使用している。
TLS 認証に必要な次のファイルがコントロールノードに存在する。
-
クライアントキーが
/srv/data/client.keyファイルに保存されている。 -
クライアント証明書が
/srv/data/client.crtファイルに保存されている。 -
認証局 (CA) 証明書が
/srv/data/ca.crtファイルに保存されている。
-
クライアントキーが
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。pwd: <password>
pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ieee802_1x- この変数には、802.1X 関連の設定を含めます。
eap: tls-
Extensible Authentication Protocol (EAP) に証明書ベースの
TLS認証方式を使用するようにプロファイルを設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
- ネットワーク認証が必要なネットワーク上のリソースにアクセスします。
18.6. network RHEL システムロールを使用した 802.1X ネットワーク認証による Wi-Fi 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークアクセス制御 (NAC) は、不正なクライアントからネットワークを保護します。クライアントがネットワークにアクセスできるようにするために、認証に必要な詳細を NetworkManager 接続プロファイルで指定できます。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
Ansible Playbook を使用して秘密鍵、証明書、および CA 証明書をクライアントにコピーしてから、network RHEL システムロールを使用して 802.1X ネットワーク認証による接続プロファイルを設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - ネットワークは 802.1X ネットワーク認証をサポートしている。
-
マネージドノードに
wpa_supplicantパッケージをインストールしました。 - DHCP は、管理対象ノードのネットワークで使用できる。
TLS 認証に必要な以下のファイルがコントロールノードにある。
-
クライアントキーが
/srv/data/client.keyファイルに保存されている。 -
クライアント証明書が
/srv/data/client.crtファイルに保存されている。 -
CA 証明書は
/srv/data/ca.crtファイルに保存されます。
-
クライアントキーが
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。pwd: <password>
pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ieee802_1x- この変数には、802.1X 関連の設定を含めます。
eap: tls-
Extensible Authentication Protocol (EAP) に証明書ベースの
TLS認証方式を使用するようにプロファイルを設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.7. network RHEL システムロールを使用したネットワークボンディングの設定 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークインターフェイスをボンディングで組み合わせると、より高いスループットまたは冗長性を備えた論理インターフェイスを提供できます。ボンディングを設定するには、NetworkManager 接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用してネットワークボンディングを設定できます。ボンディングの親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
type: <profile_type>- 作成するプロファイルのタイプを設定します。このサンプル Playbook では、3 つの接続プロファイルを作成します。1 つはボンディング用、2 つはイーサネットデバイス用です。
dhcp4: yes- DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
auto6: yes-
IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが
managedフラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。 mode: <bond_mode>ボンディングモードを設定します。可能な値は次のとおりです。
-
balance-rr(デフォルト) -
active-backup -
balance-xor -
broadcast -
802.3ad -
balance-tlb -
balance-alb
設定したモードに応じて、Playbook で追加の変数を設定する必要があります。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ネットワークデバイスの 1 つからネットワークケーブルを一時的に取り外し、ボンディング内の他のデバイスがトラフィックを処理しているかどうかを確認します。
ソフトウェアユーティリティーを使用して、リンク障害イベントを適切にテストする方法がないことに注意してください。
nmcliなどの接続を非アクティブにするツールでは、ポート設定の変更を処理するボンディングドライバーの機能のみが表示され、実際のリンク障害イベントは表示されません。
18.8. network RHEL システムロールを使用した VLAN タグ付けの設定 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークで仮想ローカルエリアネットワーク (VLAN) を使用してネットワークトラフィックを論理ネットワークに分離する場合は、NetworkManager 接続プロファイルを作成して VLAN タグ付けを設定します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して VLAN タグ付けを設定できます。VLAN の親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。
VLAN デバイスに IP アドレス、デフォルトゲートウェイ、および DNS 設定が必要な場合は、親デバイスではなく VLAN デバイスで設定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
type: <profile_type>- 作成するプロファイルのタイプを設定します。このサンプル Playbook では、2 つの接続プロファイルを作成します。1 つは親イーサネットデバイス用、もう 1 つは VLAN デバイス用です。
dhcp4: <value>-
yesに設定すると、DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てが有効になります。親デバイスの IP アドレス設定を無効にします。 auto6: <value>-
yesに設定すると、IPv6 自動設定が有効になります。この場合、デフォルトで NetworkManager がルーター広告を使用します。ルーターがmanagedフラグを通知すると、NetworkManager は DHCPv6 サーバーから IPv6 アドレスと接頭辞を要求します。親デバイスの IP アドレス設定を無効にします。 parent: <parent_device>- VLAN 接続プロファイルの親デバイスを設定します。この例では、親はイーサネットインターフェイスです。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
VLAN 設定を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.9. network RHEL システムロールを使用したネットワークブリッジの設定 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークブリッジを作成することにより、Open Systems Interconnection (OSI) モデルのレイヤー 2 で複数のネットワークを接続できます。ブリッジを設定するには、NetworkManager で接続プロファイルを作成します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用してブリッジを設定できます。ブリッジの親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。
IP アドレス、ゲートウェイ、DNS 設定をブリッジに割り当てる場合は、ポートではなくブリッジで設定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
type: <profile_type>- 作成するプロファイルのタイプを設定します。このサンプル Playbook では、3 つの接続プロファイルを作成します。1 つはブリッジ用、2 つはイーサネットデバイス用です。
dhcp4: yes- DHCP、PPP、または同様のサービスからの自動 IPv4 アドレス割り当てを有効にします。
auto6: yes-
IPv6 自動設定を有効にします。デフォルトでは、NetworkManager はルーター広告を使用します。ルーターが
managedフラグを通知すると、NetworkManager は DHCPv6 サーバーに IPv6 アドレスと接頭辞を要求します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
特定のブリッジのポートであるイーサネットデバイスのリンクステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ブリッジデバイスのポートであるイーサネットデバイスのステータスを表示します。
ansible managed-node-01.example.com -m command -a 'bridge link show' managed-node-01.example.com | CHANGED | rc=0 >> 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100
# ansible managed-node-01.example.com -m command -a 'bridge link show' managed-node-01.example.com | CHANGED | rc=0 >> 3: enp7s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state forwarding priority 32 cost 100 4: enp8s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master bridge0 state listening priority 32 cost 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.10. network RHEL システムロールを使用して既存の接続にデフォルトゲートウェイを設定する リンクのコピーリンクがクリップボードにコピーされました!
パケットの宛先に、直接接続されたネットワーク経由でも、ホストに設定されたルート経由でも到達できない場合、ホストはネットワークパケットをデフォルトゲートウェイに転送します。ホストのデフォルトゲートウェイを設定するには、デフォルトゲートウェイと同じネットワークに接続されているインターフェイスの NetworkManager 接続プロファイルで、そのゲートウェイを設定します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
ほとんどの場合、管理者は接続を作成するときにデフォルトゲートウェイを設定します。ただし、以前に作成した接続でデフォルトゲートウェイ設定を設定または更新することもできます。
network RHEL システムロールを使用して、既存接続プロファイル内の特定の値だけを更新することはできません。このロールは、接続プロファイルが Playbook の設定と正確に一致するようにします。同じ名前の接続プロファイルがすでに存在する場合、このロールは Playbook の設定を適用し、プロファイル内の他のすべての設定をデフォルトにリセットします。値がリセットされないようにするには、変更しない設定も含め、ネットワーク接続プロファイルの設定全体を Playbook に常に指定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードの Ansible fact をクエリーし、アクティブなネットワーク設定を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.11. network RHEL システムロールを使用した静的ルートの設定 リンクのコピーリンクがクリップボードにコピーされました!
静的ルートを使用すると、デフォルトゲートウェイ経由では到達できない宛先にトラフィックを送信できるようになります。静的ルートは、ネクストホップと同じネットワークに接続されているインターフェイスの NetworkManager 接続プロファイルで設定します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して、既存接続プロファイル内の特定の値だけを更新することはできません。このロールは、接続プロファイルが Playbook の設定と正確に一致するようにします。同じ名前の接続プロファイルがすでに存在する場合、このロールは Playbook の設定を適用し、プロファイル内の他のすべての設定をデフォルトにリセットします。値がリセットされないようにするには、変更しない設定も含め、ネットワーク接続プロファイルの設定全体を Playbook に常に指定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
IPv4 ルートを表示します。
ansible managed-node-01.example.com -m command -a 'ip -4 route' managed-node-01.example.com | CHANGED | rc=0 >> ... 198.51.100.0/24 via 192.0.2.10 dev enp7s0
# ansible managed-node-01.example.com -m command -a 'ip -4 route' managed-node-01.example.com | CHANGED | rc=0 >> ... 198.51.100.0/24 via 192.0.2.10 dev enp7s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow IPv6 ルートを表示します。
ansible managed-node-01.example.com -m command -a 'ip -6 route' managed-node-01.example.com | CHANGED | rc=0 >> ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp7s0 metric 1024 pref medium
# ansible managed-node-01.example.com -m command -a 'ip -6 route' managed-node-01.example.com | CHANGED | rc=0 >> ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp7s0 metric 1024 pref mediumCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.12. network RHEL システムロールを使用して、特定のサブネットから別のデフォルトゲートウェイにトラフィックをルーティングする リンクのコピーリンクがクリップボードにコピーされました!
ポリシーベースのルーティングを使用して、特定のサブネットからのトラフィックに対して別のデフォルトゲートウェイを設定できます。たとえば、RHEL をルーターとして設定し、デフォルトルートを使用してすべてのトラフィックをインターネットプロバイダー A にデフォルトでルーティングできます。一方、内部ワークステーションのサブネットから受信したトラフィックは、プロバイダー B にルーティングできます。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して、ルーティングテーブルやルールを含む接続プロファイルを設定できます。
この手順では、次のネットワークトポロジーを想定しています。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
管理対象ノードは、NetworkManager および
firewalldサービスを使用します。 設定する管理対象ノードには、次の 4 つのネットワークインターフェイスがあります。
-
enp7s0インターフェイスはプロバイダー A のネットワークに接続されます。プロバイダーのネットワークのゲートウェイ IP は198.51.100.2で、ネットワークは/30ネットワークマスクを使用します。 -
enp1s0インターフェイスはプロバイダー B のネットワークに接続されます。プロバイダーのネットワークのゲートウェイ IP は192.0.2.2で、ネットワークは/30ネットワークマスクを使用します。 -
enp8s0インターフェイスは、内部ワークステーションで10.0.0.0/24サブネットに接続されています。 -
enp9s0インターフェイスは、会社のサーバーで203.0.113.0/24サブネットに接続されています。
-
-
内部ワークステーションのサブネット内のホストは、デフォルトゲートウェイとして
10.0.0.1を使用します。この手順では、この IP アドレスをルーターのenp8s0ネットワークインターフェイスに割り当てます。 -
サーバーサブネット内のホストは、デフォルトゲートウェイとして
203.0.113.1を使用します。この手順では、この IP アドレスをルーターのenp9s0ネットワークインターフェイスに割り当てます。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
table: <value>-
table変数と同じリストエントリーのルートを、指定のルーティングテーブルに割り当てます。 routing_rule: <list>- 指定のルーティングルールの優先度と、接続プロファイルからルールの割り当て先のルーティングテーブルを定義します。
zone: <zone_name>-
接続プロファイルから指定の
firewalldゾーンにネットワークインターフェイスを割り当てます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
内部ワークステーションサブネットの RHEL ホストで、以下を行います。
tracerouteパッケージをインストールします。dnf install traceroute
# dnf install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow tracerouteユーティリティーを使用して、インターネット上のホストへのルートを表示します。traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.2 (192.0.2.2) 0.884 ms 1.066 ms 1.248 ms ...
# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.2 (192.0.2.2) 0.884 ms 1.066 ms 1.248 ms ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力には、ルーターがプロバイダー B のネットワークである
192.0.2.1経由でパケットを送信することが表示されます。
サーバーのサブネットの RHEL ホストで、以下を行います。
tracerouteパッケージをインストールします。dnf install traceroute
# dnf install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow tracerouteユーティリティーを使用して、インターネット上のホストへのルートを表示します。traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...
# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドの出力には、ルーターがプロバイダー A のネットワークである
198.51.100.2経由でパケットを送信することが表示されます。
RHEL システムロールを使用して設定した RHEL ルーターで、次の手順を実行します。
ルールのリストを表示します。
ip rule list 0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup default
# ip rule list 0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、RHEL には、
localテーブル、mainテーブル、およびdefaultテーブルのルールが含まれます。テーブル
5000のルートを表示します。ip route list table 5000 0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102
# ip route list table 5000 0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102Copy to Clipboard Copied! Toggle word wrap Toggle overflow インターフェイスとファイアウォールゾーンを表示します。
firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow externalゾーンでマスカレードが有効になっていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13. network RHEL システムロールを使用した ethtool オフロード機能の設定 リンクのコピーリンクがクリップボードにコピーされました!
ネットワークインターフェイスコントローラーは、TCP オフロードエンジン (TOE) を使用して、特定の操作の処理をネットワークコントローラーにオフロードできます。これにより、ネットワークのスループットが向上します。オフロード機能は、ネットワークインターフェイスの接続プロファイルで設定します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して、既存接続プロファイル内の特定の値だけを更新することはできません。このロールは、接続プロファイルが Playbook の設定と正確に一致するようにします。同じ名前の接続プロファイルがすでに存在する場合、このロールは Playbook の設定を適用し、プロファイル内の他のすべての設定をデフォルトにリセットします。値がリセットされないようにするには、変更しない設定も含め、ネットワーク接続プロファイルの設定全体を Playbook に常に指定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
gro: no- Generic Receive Offload (GRO) を無効にします。
gso: yes- Generic Segmentation Offload (GSO) を有効にします。
tx_sctp_segmentation: no- TX Stream Control Transmission Protocol (SCTP) セグメンテーションを無効にします。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードの Ansible fact をクエリーし、オフロード設定を確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14. network RHEL システムロールを使用した ethtool 結合の設定 リンクのコピーリンクがクリップボードにコピーされました!
割り込み結合を使用すると、システムはネットワークパケットを収集し、複数のパケットに対して割り込みを 1 つ生成します。これにより、1 つのハードウェア割り込みでカーネルに送信されたデータ量が増大し、割り込み負荷が減り、スループットを最大化します。結合設定は、ネットワークインターフェイスの接続プロファイルで設定します。Ansible と network RHEL ロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して、既存接続プロファイル内の特定の値だけを更新することはできません。このロールは、接続プロファイルが Playbook の設定と正確に一致するようにします。同じ名前の接続プロファイルがすでに存在する場合、このロールは Playbook の設定を適用し、プロファイル内の他のすべての設定をデフォルトにリセットします。値がリセットされないようにするには、変更しない設定も含め、ネットワーク接続プロファイルの設定全体を Playbook に常に指定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
rx_frames: <value>- RX フレームの数を設定します。
gso: <value>- TX フレームの数を設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ネットワークデバイスの現在のオフロード機能を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.15. network RHEL システムロールを使用して、高いパケットドロップ率を減らすためにリングバッファーサイズを増やす リンクのコピーリンクがクリップボードにコピーされました!
パケットドロップ率が原因でアプリケーションがデータの損失、タイムアウト、またはその他の問題を報告する場合は、イーサネットデバイスのリングバッファーのサイズを増やします。
リングバッファーは循環バッファーであり、オーバーフローによって既存のデータが上書きされます。ネットワークカードは、送信 (TX) および受信 (RX) リングバッファーを割り当てます。受信リングバッファーは、デバイスドライバーとネットワークインターフェイスコントローラー (NIC) の間で共有されます。データは、ハードウェア割り込みまたは SoftIRQ とも呼ばれるソフトウェア割り込みによって NIC からカーネルに移動できます。
カーネルは RX リングバッファーを使用して、デバイスドライバーが着信パケットを処理できるようになるまで着信パケットを格納します。デバイスドライバーは、通常は SoftIRQ を使用して RX リングをドレインします。これにより、着信パケットは sk_buff または skb と呼ばれるカーネルデータ構造に配置され、カーネルを経由して関連するソケットを所有するアプリケーションまでの移動を開始します。
カーネルは TX リングバッファーを使用して、ネットワークに送信する必要がある発信パケットを保持します。これらのリングバッファーはスタックの一番下にあり、パケットドロップが発生する重要なポイントであり、ネットワークパフォーマンスに悪影響を及ぼします。
リングバッファー設定は、NetworkManager 接続プロファイルで設定します。Ansible と network RHEL システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して、既存接続プロファイル内の特定の値だけを更新することはできません。このロールは、接続プロファイルが Playbook の設定と正確に一致するようにします。同じ名前の接続プロファイルがすでに存在する場合、このロールは Playbook の設定を適用し、プロファイル内の他のすべての設定をデフォルトにリセットします。値がリセットされないようにするには、変更しない設定も含め、ネットワーク接続プロファイルの設定全体を Playbook に常に指定してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - デバイスがサポートする最大リングバッファーサイズを把握している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
rx: <value>- 受信するリングバッファーエントリーの最大数を設定します。
tx: <value>- 送信するリングバッファーエントリーの最大数を設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
最大リングバッファーサイズを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.16. network RHEL システムロールを使用した IPoIB 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
IP over InfiniBand (IPoIB) を使用すると、InfiniBand インターフェイス経由で IP パケットを送信できます。IPoIB を設定するには、NetworkManager 接続プロファイルを作成します。Ansible と network システムロールを使用すると、このプロセスを自動化し、Playbook で定義されたホスト上の接続プロファイルをリモートで設定できます。
network RHEL システムロールを使用して IPoIB を設定できます。InfiniBand の親デバイスの接続プロファイルが存在しない場合は、このロールによって作成することもできます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
mlx4_ib0という名前の InfiniBand デバイスが管理対象ノードにインストールされている。 - 管理対象ノードが NetworkManager を使用してネットワークを設定している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
type: <profile_type>- 作成するプロファイルのタイプを設定します。このサンプル Playbook では、2 つの接続プロファイルを作成します。1 つは InfiniBand 接続用、もう 1 つは IPoIB デバイス用です。
parent: <parent_device>- IPoIB 接続プロファイルの親デバイスを設定します。
p_key: <value>-
InfiniBand パーティションキーを設定します。この変数を設定する場合は、IPoIB デバイスに
interface_nameを設定しないでください。 transport_mode: <mode>-
IPoIB 接続の動作モードを設定します。この変数は、
datagram(デフォルト) またはconnectedに設定できます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
mlx4_ib0.8002デバイスの IP 設定を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mlx4_ib0.8002デバイスのパーティションキー (P_Key) を表示します。ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/pkey' managed-node-01.example.com | CHANGED | rc=0 >> 0x8002
# ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/pkey' managed-node-01.example.com | CHANGED | rc=0 >> 0x8002Copy to Clipboard Copied! Toggle word wrap Toggle overflow mlx4_ib0.8002デバイスのモードを表示します。ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/mode' managed-node-01.example.com | CHANGED | rc=0 >> datagram
# ansible managed-node-01.example.com -m command -a 'cat /sys/class/net/mlx4_ib0.8002/mode' managed-node-01.example.com | CHANGED | rc=0 >> datagramCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.17. network RHEL システムロールのネットワーク状態 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールは、Playbook でデバイスを設定するための状態設定をサポートしています。これには、network_state 変数の後に状態設定を使用します。
Playbook で network_state 変数を使用する利点:
- 状態設定で宣言型の方法を使用すると、インターフェイスを設定でき、NetworkManager はこれらのインターフェイスのプロファイルをバックグラウンドで作成します。
-
network_state変数を使用すると、変更が必要なオプションを指定できます。他のすべてのオプションはそのまま残ります。ただし、network_connections変数を使用して、ネットワーク接続プロファイルを変更するには、すべての設定を指定する必要があります。
network_state では Nmstate YAML 命令のみを設定できます。この命令は、network_connections で設定できる変数とは異なります。
たとえば、動的 IP アドレス設定でイーサネット接続を作成するには、Playbook で次の vars ブロックを使用します。
| 状態設定を含む Playbook | 通常の Playbook |
|
|
|
たとえば、上記のように作成した動的 IP アドレス設定の接続ステータスのみを変更するには、Playbook で次の vars ブロックを使用します。
| 状態設定を含む Playbook | 通常の Playbook |
|
|
|
第19章 RHEL システムロールを使用したコンテナーの管理 リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールを使用すると、Podman 設定、コンテナー、および Podman コンテナーを実行する systemd サービスを管理できます。
19.1. podman RHEL システムロールを使用したバインドマウントによるルートレスコンテナーの作成 リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールを使用すると、Ansible Playbook を実行してバインドマウントによりルートレスコンテナーを作成し、アプリケーション設定を管理できます。
サンプルの Ansible Playbook は、データベース用と Web アプリケーション用の 2 つの Kubernetes Pod を起動します。データベース Pod の設定は Playbook で指定します。Web アプリケーション Pod は外部 YAML ファイルで定義します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ユーザーとグループ
webappが存在し、ホスト上の/etc/subuidおよび/etc/subgidファイルにリストされている。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
run_as_userとrun_as_group- コンテナーがルートレスであることを指定します。
kube_file_contentdbという名前の 1 つ目コンテナーを定義する Kubernetes YAML ファイルが含まれています。Kubernetes YAML ファイルは、podman kube generateコマンドを使用して生成できます。-
dbコンテナーは、quay.io/db/db:stableコンテナーイメージに基づいています。 -
dbバインドマウントは、ホスト上の/var/lib/dbディレクトリーをコンテナー内の/var/lib/dbディレクトリーにマップします。Zフラグはコンテンツにプライベート非共有ラベルを付けるため、dbコンテナーのみがコンテンツにアクセスできます。
-
kube_file_src: <path>-
2 つ目のコンテナーを定義します。コントローラーノードの
/path/to/webapp.ymlファイルの内容は、マネージドノードのkube_fileフィールドにコピーされます。 volumes: <list>-
1 つ以上のコンテナーで提供するデータのソースを定義する YAML リスト。たとえば、ホスト上のローカルディスク (
hostPath) またはその他のディスクデバイスなどです。 volumeMounts: <list>- 個々のコンテナーが特定のボリュームをマウントするマウント先を定義する YAML リスト。
podman_create_host_directories: true-
ホスト上にディレクトリーを作成します。これにより、
hostPathボリュームの kube 仕様を確認し、ホスト上にそれらのディレクトリーを作成するようにロールに指示します。所有権と権限をさらに細かく制御する必要がある場合は、podman_host_directoriesを使用します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.podman/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.2. podman RHEL システムロールを使用した Podman ボリュームを持つルートフルコンテナーの作成 リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールを使用すると、Ansible Playbook を実行して Podman ボリュームを持つルートフルコンテナーを作成し、アプリケーション設定を管理できます。
サンプルの Ansible Playbook は、ubi8-httpd という名前の Kubernetes Pod をデプロイします。この Pod は、registry.access.redhat.com/ubi8/httpd-24 イメージから HTTP サーバーコンテナーを実行します。コンテナーの Web コンテンツは、ubi8-html-volume という名前の永続ボリュームからマウントされます。デフォルトでは、podman ロールはルートフルコンテナーを作成します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
kube_file_contentdbという名前の 1 つ目コンテナーを定義する Kubernetes YAML ファイルが含まれています。Kubernetes YAML ファイルは、podman kube generateコマンドを使用して生成できます。-
ubi8-httpdコンテナーは、registry.access.redhat.com/ubi8/httpd-24コンテナーイメージに基づいています。 -
ubi8-html-volumeは、ホスト上の/var/www/htmlディレクトリーをコンテナーにマップします。Zフラグはコンテンツにプライベート非共有ラベルを付けるため、ubi8-httpdコンテナーのみがコンテンツにアクセスできます。 -
Pod は、マウントパス
/var/www/htmlを使用して、ubi8-html-volumeという名前の既存の永続ボリュームをマウントします。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.podman/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.3. podman RHEL システムロールを使用したシークレットを含む Quadlet アプリケーションの作成 リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールを使用して、Ansible Playbook を実行することで、シークレットを含む Quadlet アプリケーションを作成できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
コンテナー内の Web サーバーが使用する証明書と対応する秘密鍵が、
~/certificate.pemファイルと~/key.pemファイルに保存されている。
手順
証明書と秘密鍵ファイルの内容を表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この情報は後の手順で必要になります。
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow certificate変数およびkey変数のすべての行が 2 つのスペースで始まるようにします。- 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この手順では、MySQL データベースと組み合わせた WordPress コンテンツ管理システムを作成します。
podman_quadlet_specsロール変数では、Quadlet の一連の設定を定義します。この設定は、特定の方法で連携するコンテナーまたはサービスのグループを参照します。これには次の仕様を含めます。-
Wordpress ネットワークを、
quadlet-demoネットワークユニットで定義します。 -
MySQL コンテナーのボリューム設定を、
file_src: quadlet-demo-mysql.volumeフィールドで定義します。 -
template_src: quadlet-demo-mysql.container.j2フィールドを使用して、MySQL コンテナーの設定を生成します。 -
その後に、2 つの YAML ファイル
file_src: envoy-proxy-configmap.ymlおよびfile_src:quadlet-demo.ymlを指定します。.yml は有効な Quadlet ユニットタイプではないため、これらのファイルはコピーされるだけで、Quadlet 仕様としては処理されないことに注意してください。 -
Wordpress および envoy プロキシーコンテナーと設定を、
file_src: quadlet-demo.kubeフィールドで定義します。kube ユニットは、[Kube]セクション内の上記の YAML ファイルを、Yaml=quadlet-demo.ymlおよびConfigMap=envoy-proxy-configmap.ymlとして参照します。
-
Wordpress ネットワークを、
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第20章 RHEL システムロールを使用した Postfix MTA の設定 リンクのコピーリンクがクリップボードにコピーされました!
postfix RHEL システムロールを使用すると、Postfix メール転送エージェント (MTA) の設定を一貫して自動化された方法で管理できます。このような設定をデプロイすることは、たとえば以下のものが必要な場合に役立ちます。
- 安定したメールサーバー: システム管理者が高速でスケーラブルなメール送受信用サーバーを設定できるようになります。
- セキュアな通信: TLS 暗号化、認証、ドメインのブックリスト登録などの機能をサポートし、安全なメール送信を実現します。
- メールの管理とルーティングの改善: メールトラフィックを制御できるようにフィルターとルールを実装します。
postfix_conf ディクショナリーには、サポートされている Postfix 設定パラメーターのキーと値のペアが保持されます。Postfix がサポート対象として認識しないキーは無視されます。postfix RHEL システムロールは、構文を検証したり制限したりせずに、提供されたキーと値のペアを postfix_conf ディクショナリーに直接渡します。したがって、このロールは、Postfix を熟知していて、その設定方法を知っているユーザーに特に役立ちます。
20.1. 送信メールのみを送信する null クライアントとして Postfix を設定する リンクのコピーリンクがクリップボードにコピーされました!
null クライアントは特別な設定です。この設定では、Postfix サーバーは送信メールの送信のみを行い、受信メールは受信しないように設定されます。このような設定は、通知、アラート、またはログを送信する必要はあるが、メールの受信や管理をする必要はない場合に広く使用されています。Ansible と postfix RHEL システムロールを使用すると、このプロセスを自動化し、Postfix サーバーを送信メールの送信のみを行う null クライアントとしてリモートで設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
myhostname: <server.example.com>- このメールシステムのインターネットホスト名。デフォルトは完全修飾ドメイン名 (FQDN) です。
myorigin: $mydomain-
ローカルに投稿されたメールの送信元と配信先として表示されるドメイン名。デフォルトは
$myhostnameです。 relayhost: <smtp.example.com>- 非ローカルメールの次のホップの宛先。受信者アドレスの非ローカルドメインをオーバーライドします。デフォルトでは空のフィールドになります。
inet_interfaces: loopback-only- Postfix サーバーが受信メール接続をリッスンするネットワークインターフェイスを定義します。Postfix サーバーがネットワークからメールを受け入れるかどうか、またどのように受け入れるかを制御します。
mydestination- どのドメインとホスト名をローカルとみなすかを定義します。
relay_domains: "hash:/etc/postfix/relay_domains"-
Postfix がリレーサーバー (SMTP リレー) として動作しているときに Postfix がメールを転送できるドメインを指定します。この場合、ドメインは
postfix_files変数によって生成されます。RHEL 10 では、relay_domains: "lmdb:/etc/postfix/relay_domains"を使用する必要があります。 postfix_files-
/etc/postfix/ディレクトリーに配置されるファイルのリストを定義します。必要に応じて、これらのファイルを Postfix 検索テーブルに変換できます。この場合、postfix_filesは SMTP リレーのドメイン名を生成します。
Playbook で使用されるロール変数と Postfix 設定パラメーターの詳細は、
/usr/share/ansible/roles/rhel-system-roles.postfix/README.mdファイルと、コントロールノード上のpostconf(5)man ページを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第21章 RHEL システムロールを使用した PostgreSQL データベースサーバーのインストールおよび設定 リンクのコピーリンクがクリップボードにコピーされました!
postgresql RHEL システムロールを使用すると、PostgreSQL データベースサーバーのインストールと管理を自動化できます。デフォルトでは、このロールは、PostgreSQL サービス設定ファイルでパフォーマンス関連の設定を自動的に指定することで、PostgreSQL を最適化します。
21.1. postgresql RHEL システムロールを使用した、既存の TLS 証明書による PostgreSQL の設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションに PostgreSQL データベースサーバーが必要な場合は、TLS 暗号化を使用して PostgreSQL サービスを設定し、アプリケーションとデータベース間のセキュアな通信を有効にできます。postgresql RHEL システムロールを使用すると、このプロセスを自動化し、TLS 暗号化を使用して PostgreSQL をリモートでインストールおよび設定できます。Playbook で、既存の秘密鍵と、認証局 (CA) によって発行された TLS 証明書を使用できます。
postgresql ロールは、firewalld サービスでポートを開くことができません。PostgreSQL サーバーへのリモートアクセスを許可するには、firewall RHEL システムロールを使用するタスクを Playbook に追加します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 管理対象ノードの秘密鍵と証明書が、コントロールノードの次のファイルに保存されている。
-
秘密鍵:
~/<FQDN_of_the_managed_node>.key -
証明書:
~/<FQDN_of_the_managed_node>.crt
-
秘密鍵:
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。pwd: <password>
pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
postgresql_version: <version>インストールする PostgreSQL のバージョンを設定します。設定できるバージョンは、管理対象ノードで実行されている Red Hat Enterprise Linux で使用可能な PostgreSQL バージョンによって異なります。
postgresql_version変数を変更して Playbook を再度実行しても、PostgreSQL をアップグレードまたはダウングレードすることはできません。postgresql_password: <password>postgresデータベーススーパーユーザーのパスワードを設定します。postgresql_password変数を変更して Playbook を再度実行しても、パスワードを変更することはできません。postgresql_cert_name: <private_key_and_certificate_file>管理対象ノード上の証明書と秘密鍵の両方のパスとベース名を、
.crtおよびkey接尾辞なしで定義します。PostgreSQL の設定中に、ロールが/var/lib/pgsql/data/ディレクトリーにこれらのファイルを参照するシンボリックリンクを作成します。証明書と秘密鍵は管理対象ノード上にローカルに存在している必要があります。Playbook に示されているように、
ansible.builtin.copyモジュールのタスクを使用して、コントロールノードから管理対象ノードにファイルを転送できます。postgresql_server_conf: <list_of_settings>ロールが設定する必要がある
postgresql.conf設定を定義します。ロールはこれらの設定を/etc/postgresql/system-roles.confファイルに追加し、このファイルを/var/lib/pgsql/data/postgresql.confの最後に含めます。その結果、postgresql_server_conf変数の設定により、/var/lib/pgsql/data/postgresql.conf内の設定がオーバーライドされます。postgresql_server_confで異なる設定を使用して Playbook を再実行すると、/etc/postgresql/system-roles.confファイルが新しい設定で上書きされます。postgresql_pg_hba_conf: <list_of_authentication_entries>/var/lib/pgsql/data/pg_hba.confファイル内のクライアント認証エントリーを設定します。詳細は、PostgreSQL のドキュメントを参照してください。この例では、PostgreSQL への次の接続を許可します。
- ローカル UNIX ドメインソケットを使用した暗号化されていない接続。
- IPv4 および IPv6 ローカルホストアドレスへの TLS 暗号化接続。
-
192.0.2.0/24 サブネットからの TLS 暗号化接続。リモートアドレスからのアクセスは、
postgresql_server_conf変数のlisten_addresses設定も適切に設定した場合にのみ可能であることに注意してください。
postgresql_pg_hba_confで異なる設定を使用して Playbook を再実行すると、/var/lib/pgsql/data/pg_hba.confファイルが新しい設定で上書きされます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.postgresql/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
postgresスーパーユーザーを使用して PostgreSQL サーバーに接続し、\conninfoメタコマンドを実行します。psql "postgresql://postgres@managed-node-01.example.com:5432" -c '\conninfo' Password for user postgres: You are connected to database "postgres" as user "postgres" on host "192.0.2.1" at port "5432". SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
# psql "postgresql://postgres@managed-node-01.example.com:5432" -c '\conninfo' Password for user postgres: You are connected to database "postgres" as user "postgres" on host "192.0.2.1" at port "5432". SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力に TLS プロトコルのバージョンと暗号の詳細が表示される場合、接続は機能し、TLS 暗号化が有効になっています。
21.2. postgresql RHEL システムロールを使用した、IdM から発行された TLS 証明書による PostgreSQL の設定 リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションに PostgreSQL データベースサーバーが必要な場合は、TLS 暗号化を使用して PostgreSQL サービスを設定し、アプリケーションとデータベース間のセキュアな通信を有効にできます。PostgreSQL ホストが Red Hat Enterprise Linux Identity Management (IdM) ドメインのメンバーである場合、certmonger サービスによって証明書要求と将来の更新を管理できます。
postgresql RHEL システムロールを使用すると、このプロセスを自動化できます。TLS 暗号化を使用して PostgreSQL をリモートでインストールおよび設定できます。postgresql ロールは、certificate RHEL システムロールを使用して certmonger を設定し、IdM から証明書を要求します。
postgresql ロールは、firewalld サービスでポートを開くことができません。PostgreSQL サーバーへのリモートアクセスを許可するには、firewall RHEL システムロールを使用するタスクを Playbook に追加します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノードを IdM ドメインに登録した。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。pwd: <password>
pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
postgresql_version: <version>インストールする PostgreSQL のバージョンを設定します。設定できるバージョンは、管理対象ノードで実行されている Red Hat Enterprise Linux で使用可能な PostgreSQL バージョンによって異なります。
postgresql_version変数を変更して Playbook を再度実行しても、PostgreSQL をアップグレードまたはダウングレードすることはできません。postgresql_password: <password>postgresデータベーススーパーユーザーのパスワードを設定します。postgresql_password変数を変更して Playbook を再度実行しても、パスワードを変更することはできません。postgresql_certificates: <certificate_role_settings>-
certificateロールの設定を含む YAML ディクショナリーのリスト。 postgresql_server_conf: <list_of_settings>ロールが設定する必要がある
postgresql.conf設定を定義します。ロールはこれらの設定を/etc/postgresql/system-roles.confファイルに追加し、このファイルを/var/lib/pgsql/data/postgresql.confの最後に含めます。その結果、postgresql_server_conf変数の設定により、/var/lib/pgsql/data/postgresql.conf内の設定がオーバーライドされます。postgresql_server_confで異なる設定を使用して Playbook を再実行すると、/etc/postgresql/system-roles.confファイルが新しい設定で上書きされます。postgresql_pg_hba_conf: <list_of_authentication_entries>/var/lib/pgsql/data/pg_hba.confファイル内のクライアント認証エントリーを設定します。詳細は、PostgreSQL のドキュメントを参照してください。この例では、PostgreSQL への次の接続を許可します。
- ローカル UNIX ドメインソケットを使用した暗号化されていない接続。
- IPv4 および IPv6 ローカルホストアドレスへの TLS 暗号化接続。
-
192.0.2.0/24 サブネットからの TLS 暗号化接続。リモートアドレスからのアクセスは、
postgresql_server_conf変数のlisten_addresses設定も適切に設定した場合にのみ可能であることに注意してください。
postgresql_pg_hba_confで異なる設定を使用して Playbook を再実行すると、/var/lib/pgsql/data/pg_hba.confファイルが新しい設定で上書きされます。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.postgresql/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
postgresスーパーユーザーを使用して PostgreSQL サーバーに接続し、\conninfoメタコマンドを実行します。psql "postgresql://postgres@managed-node-01.example.com:5432" -c '\conninfo' Password for user postgres: You are connected to database "postgres" as user "postgres" on host "192.0.2.1" at port "5432". SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)
# psql "postgresql://postgres@managed-node-01.example.com:5432" -c '\conninfo' Password for user postgres: You are connected to database "postgres" as user "postgres" on host "192.0.2.1" at port "5432". SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, compression: off)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力に TLS プロトコルのバージョンと暗号の詳細が表示される場合、接続は機能し、TLS 暗号化が有効になっています。
第22章 RHEL システムロールを使用したシステムの登録 リンクのコピーリンクがクリップボードにコピーされました!
rhc RHEL システムロールを使用すると、管理者は Red Hat Subscription Management (RHSM) および Satellite サーバーへの複数のシステムの登録を自動化できます。このロールは、Ansible を使用することで、Insights 関連の設定タスクおよび管理タスクもサポートします。デフォルトでは、rhc を使用してシステムを登録すると、システムは Red Hat Insights に接続されます。さらに、rhc を使用すると、次のことが可能です。
- Red Hat Insights への接続の設定
- リポジトリーの有効化および無効化
- 接続に使用するプロキシーの設定
- Insights 修復と自動更新の設定
- システムのリリースの設定
- Insights タグの設定
22.1. rhc RHEL システムロールを使用したシステムの登録 リンクのコピーリンクがクリップボードにコピーされました!
rhc RHEL システムロールを使用すると、Red Hat Subscription Management (RHSM) で複数のシステムを大規模に登録できます。デフォルトでは、rhc は登録時にシステムを Red Hat Insights に接続します。システムを登録すると、システムの管理とデータのレポートに使用できる機能が有効になります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。activationKey: <activation_key> organizationID: <organizationID> username: <username> password: <password>
activationKey: <activation_key> organizationID: <organizationID> username: <username> password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。アクティベーションキーと組織 ID を使用して登録するには (推奨)、次の Playbook を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
rhc_auth: activation_keys-
activation_keysキーで、アクティベーションキーを使用して登録することを指定します。
ユーザー名とパスワードを使用して登録するには、次の Playbook を使用します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
サンプル Playbook で指定されている設定は次のとおりです。
rhc_auth: login-
loginキーで、ユーザー名とパスワードを使用して登録することを指定します。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.2. rhc RHEL システムロールを使用した Satellite へのシステムの登録 リンクのコピーリンクがクリップボードにコピーされました!
組織が Satellite を使用してシステムを管理する場合、Satellite を介してシステムを登録する必要があります。rhc RHEL システムロールを使用して、システムを Satellite にリモートで登録できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。activationKey: <activation_key> organizationID: <organizationID>
activationKey: <activation_key> organizationID: <organizationID>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
hostname: example.com- システム登録およびパッケージ管理用の Satellite Server の完全修飾ドメイン名 (FQDN)。
port: 443- Satellite Server との通信に使用するネットワークポートを定義します。
prefix: /rhsm- Satellite Server 上のリソースにアクセスするための URL パス接頭辞を指定します。
rhc_baseurl: http://example.com/pulp/content-
コンテンツ URL の接頭辞を定義します。Satellite 環境では、
baseurlはシステムが登録されるサーバーと同じサーバーに設定する必要があります。hostname値を参照して、必ず正しいサーバーを使用してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.3. rhc RHEL システムロールを使用して登録後に Insights への接続を無効にする リンクのコピーリンクがクリップボードにコピーされました!
rhc RHEL システムロールを使用してシステムを登録すると、このロールによりデフォルトで Red Hat Insights への接続が有効になります。Red Hat Insights は、Hybrid Cloud Console のマネージドサービスです。予測分析、修復機能、およびドメインに関する深い専門知識を使用して、複雑な運用タスクを簡素化します。必要ない場合は、rhc RHEL システムロールを使用して無効にできます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - システムが登録済みである。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
rhc_insights absent|present- プロアクティブな分析と推奨のために Red Hat Insights へのシステム登録を有効にするか、または無効にします。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.4. rhc RHEL システムロールを使用したリポジトリーの管理 リンクのコピーリンクがクリップボードにコピーされました!
検証済みのソースからのソフトウェアパッケージにアクセスし、インストールおよび更新するには、RHEL システムでリポジトリーを有効にすることが不可欠です。rhc RHEL システムロールを使用すると、管理対象ノード上のリポジトリーをリモートで有効化または無効化し、システムのセキュリティー、安定性、および互換性を確保できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 管理対象ノード上で有効または無効にするリポジトリーの詳細を把握している。
- システムが登録済みである。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
name: RepositoryName- 有効にするリポジトリーの名前。
state: enabled|disabled-
必要に応じて、リポジトリーを有効または無効にします。デフォルトは
enabled(有効) です。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.5. rhc RHEL システムロールを使用した特定リリースへのシステムのロック リンクのコピーリンクがクリップボードにコピーされました!
場合によっては、システムの安定性と互換性を確保するために、利用可能な最新リリースに自動的にアップグレードするのではなく、特定のマイナーバージョンのリポジトリーのみを使用するように RHEL システムを制限する必要があります。システムを特定のマイナーバージョンにロックすると、実稼働環境の一貫性が維持され、互換性の問題を引き起こす可能性のある意図しない更新を防ぐことができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - システムのロックの対象とする RHEL バージョンを把握している。システムのロックの対象にできるのは、管理対象ノードが現在実行している RHEL マイナーバージョン、またはそれ以降のマイナーバージョンのみである点に注意してください。
- システムが登録済みである。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
rhc_release: version- システムに設定する RHEL のバージョン。使用可能なコンテンツがそのバージョンに限定されます。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.6. rhc RHEL システムロールを使用してホストを登録する際のプロキシーサーバーの使用 リンクのコピーリンクがクリップボードにコピーされました!
セキュリティー制限により、プロキシーサーバー経由でのみインターネットにアクセスできるように設定されている場合、rhc を使用してシステムを登録するときに rhc ロールのプロキシー設定を指定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。username: <username> password: <password> proxy_username: <proxyusernme> proxy_password: <proxypassword>
username: <username> password: <password> proxy_username: <proxyusernme> proxy_password: <proxypassword>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
hostname: proxy.example.com- プロキシーサーバーの完全修飾ドメイン名 (FQDN)。
port: 3128- プロキシーサーバーとの通信に使用するネットワークポートを定義します。
username: proxy_username- 認証用のユーザー名を指定します。これは、プロキシーサーバーが認証を必要とする場合にのみ必要です。
password: proxy_password- 認証用のパスワードを指定します。これは、プロキシーサーバーが認証を必要とする場合にのみ必要です。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.7. rhc RHEL システムロールを使用した Insights ルールの自動更新の管理 リンクのコピーリンクがクリップボードにコピーされました!
rhc RHEL システムロールを使用して、Red Hat Insights の自動収集ルール更新を有効または無効にできます。デフォルトでは、システムを Red Hat Insights に接続すると、このオプションが有効になります。このオプションは rhc を使用して無効にできます。
この機能を無効にする場合は、古いルール定義ファイルを使用し、最新の検証更新を取得しないリスクがあります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - システムが登録済みである。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。username: <username> password: <password>
username: <username> password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
autoupdate: true|false- Red Hat Insights の自動収集ルール更新を有効または無効にします。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.8. rhc RHEL システムロールを使用した Insights 修復の設定 リンクのコピーリンクがクリップボードにコピーされました!
rhc RHEL システムロールを使用して、動的設定を自動的に更新するようにシステムを設定できます。システムを Red Hat Insights に接続すると、Insights がデフォルトで有効になります。必要ない場合は無効にすることができます。rhc を使用すると、Red Hat に直接接続したときに、システム修復の準備を確実に実行できます。Red Hat Insights 修復の詳細は、Red Hat Insights 修復ガイド を参照してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - Insights 修復が有効になっている。
- システムが登録済みである。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.9. rhc RHEL システムロールを使用した Insights タグの設定 リンクのコピーリンクがクリップボードにコピーされました!
rhc RHEL システムロールを使用して、システムのフィルタリングとグループ化のための Red Hat Insights タグを設定できます。要件に基づいて、タグをカスタマイズすることもできます。Red Hat Insights タグを使用してシステムをフィルタリングおよびグループ化すると、管理者が環境、場所、部門などの属性に基づいて特定のシステムセットを効率的に管理、監視し、ポリシーを適用できるようになります。これにより、可視性が向上し、自動化が簡素化され、大規模なインフラストラクチャー全体のセキュリティーコンプライアンスが強化されます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。username: <username> password: <password>
username: <username> password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
group: group-name-value- 登録されたホストを整理および管理するためのシステムグループを指定します。
location: location-name-value- 登録されたシステムに関連付ける場所を定義します。
description- 登録されたシステムの簡単な概要または識別子を指定します。
state: present|absent登録されたシステムの現在のステータスを示します。
注記tags内の内容は、設定するシステムに対して管理者が希望するタグを表す YAML 構造です。上記の例は説明のみを目的としており、網羅的なものではありません。管理者は、必要に応じて YAML 構造をカスタマイズして、追加のキーと値を含めることができます。
Playbook の構文を検証します。
ansible-playbook --syntax-check --ask-vault-pass ~/playbook.yml
$ ansible-playbook --syntax-check --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.10. rhc RHEL システムロールを使用したシステムの登録解除 リンクのコピーリンクがクリップボードにコピーされました!
システムの廃止、仮想マシンの削除、ローカルコンテンツミラーへの切り替えなどにより、特定のシステムで登録サーバーからコンテンツを受信する必要がなくなった場合は、rhc RHEL システムロールを使用して、Red Hat サブスクリプションサービスからシステムを登録解除できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - システムはすでに登録されています。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
rhc_state: absent- システムを登録サーバー、RHSM、または Satellite から登録解除することを指定します。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第23章 rhel_mgmt コレクションを使用した IPMI と Redfish によるリモート管理 リンクのコピーリンクがクリップボードにコピーされました!
Intelligent Platform Management Interface (IPMI) と Redfish API を使用すると、管理者はオペレーティングシステムが実行されていない場合でもホストをリモートで管理できます。rhel_mgmt Ansible コレクションは、IPMI と Redfish を使用してブートデバイスの設定などの特定のリモート操作を実行するモジュールを提供します。
23.1. rhel_mgmt.ipmi_boot モジュールを使用したブートデバイスの設定 リンクのコピーリンクがクリップボードにコピーされました!
redhat.rhel_mgmt コレクションの ipmi_boot モジュールを使用して、ホストのブートデバイスを設定できます。このモジュールは、Intelligent Platform Management Interface (IPMI) を使用してこの操作を実行します。
この Ansible モジュールを使用する場合、3 つのホストが関係します。コントロールノード、管理対象ノード、および実際の IPMI 操作が適用されるベースボード管理コントローラー (BMC) を備えたホストです。コントロールノードは、管理対象ノード上で Playbook を実行します。管理対象ホストはリモートの BMC に接続して IPMI 操作を実行します。たとえば、Playbook で hosts: managed-node-01.example.com と name: server.example.com を設定すると、managed-node-01.example.com が server.example.com の IPMI を使用して設定を変更します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-redhat-rhel_mgmtパッケージがコントロールノードにインストールされている。 - BMC にアクセスするための認証情報がある。また、この認証情報に設定を変更する権限がある。
- 管理対象ノードがネットワーク経由でリモートの BMC にアクセスできる。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。ipmi_usr: <username> ipmi_pwd: <password>
ipmi_usr: <username> ipmi_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
name: <bmc_hostname_or_ip_address>- BMC のホスト名または IP アドレスを定義します。これは、管理対象ノードがアクションを実行するホストの BMC です。
port: <bmc_port_number>-
Remote Management Control Protocol (RMCP) のポート番号を設定します。デフォルトは
623です。 bootdev: <value>ブートデバイスを設定します。以下の値のいずれかを選択できます。
-
hd: ハードディスクから起動します。 -
network: ネットワークから起動します。 -
optical: DVD-ROM などの光学ドライブから起動します。 -
floppy: フロッピーディスクから起動します。 -
safe: ハードドライブからセーフモードで起動します。 -
setup: BIOS または UEFI で起動します。 -
default: IPMI 経由で指示されたブートデバイスの要求をすべて削除します。
-
persistent: <true|false>-
定義した設定をリモートホストで今後のすべてのブートに使用するか、次回のブートにのみ使用するかを設定します。デフォルトでは、この変数は
falseに設定されています。すべての BMC がブートデバイスの永続的な設定をサポートしているわけではないことに注意してください。
Playbook で使用されるすべての変数の詳細は、コントロールノードで
ansible-doc redhat.rhel_mgmt.ipmi_bootコマンドを使用して、モジュールのドキュメントを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.2. rhel_mgmt.ipmi_power モジュールを使用したシステムの電源状態の設定 リンクのコピーリンクがクリップボードにコピーされました!
redhat.rhel_mgmt コレクションの ipmi_power モジュールを使用して、ハードウェアの状態を設定できます。たとえば、ホストの電源を確実にオンにしたり、オペレーティングシステムを介さずにホストをハードリセットしたりできます。ipmi_power モジュールは、Intelligent Platform Management Interface (IPMI) を使用して操作を実行します。
この Ansible モジュールを使用する場合、3 つのホストが関係します。コントロールノード、管理対象ノード、および実際の IPMI 操作が適用されるベースボード管理コントローラー (BMC) を備えたホストです。コントロールノードは、管理対象ノード上で Playbook を実行します。管理対象ホストはリモートの BMC に接続して IPMI 操作を実行します。たとえば、Playbook で hosts: managed-node-01.example.com と name: server.example.com を設定すると、managed-node-01.example.com が server.example.com の IPMI を使用して設定を変更します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-redhat-rhel_mgmtパッケージがコントロールノードにインストールされている。 - BMC にアクセスするための認証情報がある。また、この認証情報に設定を変更する権限がある。
- 管理対象ノードがネットワーク経由でリモートの BMC にアクセスできる。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。ipmi_usr: <username> ipmi_pwd: <password>
ipmi_usr: <username> ipmi_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
name: <bmc_hostname_or_ip_address>- BMC のホスト名または IP アドレスを定義します。これは、管理対象ノードがアクションを実行するホストの BMC です。
port: <bmc_port_number>-
Remote Management Control Protocol (RMCP) のポート番号を設定します。デフォルトは
623です。 state: <value>デバイスのあるべき状態を設定します。以下の値のいずれかを選択できます。
-
on: システムの電源をオンにします。 -
off: オペレーティングシステムに通知せずにシステムの電源をオフにします。 -
shutdown: オペレーティングシステムにシャットダウンを要求します。 -
reset: ハードリセットを実行します。 -
boot: システムがオフになっている場合は電源をオンにし、オフになっている場合はシステムをリセットします。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードで
ansible-doc redhat.rhel_mgmt.ipmi_powerコマンドを使用して、モジュールのドキュメントを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.3. rhel_mgmt.redfish_command モジュールを使用したアウトオブバンド管理用コントローラーの管理 リンクのコピーリンクがクリップボードにコピーされました!
redhat.rhel_mgmt コレクションの redfish_command モジュールを使用して、Redfish API にコマンドを送信し、アウトオブバンド管理用 (OOB) コントローラーをリモートで管理できます。このモジュールを使用すると、次のような多数の管理操作を実行できます。
- 電源管理操作の実行
- 仮想メディアの管理
- OOB コントローラーのユーザーの管理
- ファームウェアの更新
この Ansible モジュールを使用する場合、3 つのホストが関係します。コントロールノード、管理対象ノード、および実際の操作が実行される OOB コントローラーを備えたホストです。コントロールノードは管理対象ノード上で Playbook を実行します。管理対象ホストは Redfish API を使用してリモート OOB コントローラーに接続し、操作を実行します。たとえば、Playbook で hosts: managed-node-01.example.com と baseuri: server.example.com を設定すると、managed-node-01.example.com が server.example.com で操作を実行します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-redhat-rhel_mgmtパッケージがコントロールノードにインストールされている。 - OOB コントローラーにアクセスするための認証情報がある。また、この認証情報に設定を変更する権限がある。
- 管理対象ノードがネットワーク経由でリモートの OOB コントローラーにアクセスできる。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。redfish_usr: <username> redfish_pwd: <password>
redfish_usr: <username> redfish_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
baseuri: <uri>- OOB コントローラーの URI を定義します。これは、管理対象ノードがアクションを実行するホストの OOB コントローラーです。
category: <value>実行するコマンドのカテゴリーを設定します。以下のカテゴリーが利用可能です。
-
Accounts: OOB コントローラーのユーザーアカウントを管理します。 -
Chassis: シャーシ関連の設定を管理します。 -
Manager: Redfish サービスへのアクセスを提供します。 -
Session: Redfish ログインセッションを管理します。 -
Systems(デフォルト): マシン関連の設定を管理します。 -
Update: ファームウェアの更新関連の操作を管理します。
-
command: <command>- 実行するコマンドを設定します。コマンドによっては、追加の変数を設定する必要があります。
Playbook で使用されるすべての変数の詳細は、コントロールノードで
ansible-doc redhat.rhel_mgmt.redfish_commandコマンドを使用して、モジュールのドキュメントを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4. rhel_mgmt.redfish_info モジュールを使用したアウトオブバンド管理用コントローラーからの情報の照会 リンクのコピーリンクがクリップボードにコピーされました!
redhat.rhel_mgmt コレクションの redfish_info モジュールを使用すると、Redfish API 経由でアウトオブバンド管理用 (OOB) コントローラーからの情報をリモートで照会できます。返された値を表示するには、取得した情報を変数に登録し、その変数の内容を表示します。
この Ansible モジュールを使用する場合、3 つのホストが関係します。コントロールノード、管理対象ノード、および実際の操作が実行される OOB コントローラーを備えたホストです。コントロールノードは管理対象ノード上で Playbook を実行します。管理対象ホストは Redfish API を使用してリモート OOB コントローラーに接続し、操作を実行します。たとえば、Playbook で hosts: managed-node-01.example.com と baseuri: server.example.com を設定すると、managed-node-01.example.com が server.example.com で操作を実行します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-redhat-rhel_mgmtパッケージがコントロールノードにインストールされている。 - OOB コントローラーにアクセスするための認証情報がある。また、この認証情報に設定を照会する権限がある。
- 管理対象ノードがネットワーク経由でリモートの OOB コントローラーにアクセスできる。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。redfish_usr: <username> redfish_pwd: <password>
redfish_usr: <username> redfish_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
baseuri: <uri>- OOB コントローラーの URI を定義します。これは、管理対象ノードがアクションを実行するホストの OOB コントローラーです。
category: <value>照会する情報のカテゴリーを設定します。以下のカテゴリーが利用可能です。
-
Accounts: OOB コントローラーのユーザーアカウント -
Chassis: シャーシ関連の設定 -
Manager: Redfish サービス -
Session: Redfish ログインセッション -
Systems(デフォルト): マシン関連の設定 -
Update: ファームウェア関連の設定 -
All: すべてのカテゴリーの情報
リストを使用する場合は、複数のカテゴリーを設定することもできます (例
["Systems", "Accounts"])。-
command: <command>- 実行するクエリーコマンドを設定します。
Playbook で使用されるすべての変数の詳細を参照するには、コントロールノードで
ansible-doc redhat.rhel_mgmt.redfish_infoコマンドを使用して、モジュールのドキュメントを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5. rhel_mgmt.redfish_config モジュールを使用した BIOS、UEFI、およびアウトオブバンド管理用コントローラーの管理 リンクのコピーリンクがクリップボードにコピーされました!
redhat.rhel_mgmt コレクションの redfish_config モジュールを使用して、Redfish API 経由で BIOS、UEFI、およびアウトオブバンド管理用 (OOB) コントローラーの設定を指定できます。これにより、Ansible を使用してリモートで設定を変更できます。
この Ansible モジュールを使用する場合、3 つのホストが関係します。コントロールノード、管理対象ノード、および実際の操作が実行される OOB コントローラーを備えたホストです。コントロールノードは管理対象ノード上で Playbook を実行します。管理対象ホストは Redfish API を使用してリモート OOB コントローラーに接続し、操作を実行します。たとえば、Playbook で hosts: managed-node-01.example.com と baseuri: server.example.com を設定すると、managed-node-01.example.com が server.example.com で操作を実行します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-redhat-rhel_mgmtパッケージがコントロールノードにインストールされている。 - OOB コントローラーにアクセスするための認証情報がある。また、この認証情報に設定を変更する権限がある。
- 管理対象ノードがネットワーク経由でリモートの OOB コントローラーにアクセスできる。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。redfish_usr: <username> redfish_pwd: <password>
redfish_usr: <username> redfish_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
baseuri: <uri>- OOB コントローラーの URI を定義します。これは、管理対象ノードがアクションを実行するホストの OOB コントローラーです。
category: <value>実行するコマンドのカテゴリーを設定します。以下のカテゴリーが利用可能です。
-
Accounts: OOB コントローラーのユーザーアカウントを管理します。 -
Chassis: シャーシ関連の設定を管理します。 -
Manager: Redfish サービスへのアクセスを提供します。 -
Session: Redfish ログインセッションを管理します。 -
Systems(デフォルト): マシン関連の設定を管理します。 -
Update: ファームウェアの更新関連の操作を管理します。
-
command: <command>- 実行するコマンドを設定します。コマンドによっては、追加の変数を設定する必要があります。
Playbook で使用されるすべての変数の詳細は、コントロールノードで
ansible-doc redhat.rhel_mgmt.redfish_configコマンドを使用して、モジュールのドキュメントを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第24章 RHEL システムロールを使用した SELinux の設定 リンクのコピーリンクがクリップボードにコピーされました!
selinux RHEL システムロールを使用すると、SELinux 権限をリモートで設定および管理できます。次に例を示します。
- SELinux ブール値、ファイルコンテキスト、ポート、およびログインに関連するローカルポリシーの変更を消去します。
- SELinux ポリシーブール値、ファイルコンテキスト、ポート、およびログインの設定
- 指定されたファイルまたはディレクトリーでファイルコンテキストを復元します。
- SELinux モジュールの管理
24.1. selinux RHEL システムロールを使用したディレクトリーの SELinux コンテキストの復元 リンクのコピーリンクがクリップボードにコピーされました!
ファイルの SELinux コンテキストの誤りは、さまざまな場合に発生します。たとえば、ファイルをディレクトリーにコピーまたは移動する場合、ファイルの SELinux コンテキストが、新しい場所の予想されるコンテキストと一致しないことがあります。SELinux コンテキストが正しくないと、アプリケーションがファイルにアクセスできない可能性があります。多数のホストにあるディレクトリーの SELinux コンテキストをリモートでリセットするには、selinux RHEL システムロールを使用できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
selinux_restore_dirs: <list>- ロールによって SELinux コンテキストをリセットするディレクトリーのリストを定義します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.selinux/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コンテキストをリセットしたファイルまたはディレクトリーの SELinux コンテキストを表示します。たとえば、
/var/www/ディレクトリーのコンテキストを表示するには、次のように入力します。ansible rhel9.example.com -m command -a 'ls -ldZ /var/www/' drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Feb 28 13:20 /var/www/
# ansible rhel9.example.com -m command -a 'ls -ldZ /var/www/' drwxr-xr-x. 4 root root system_u:object_r:httpd_sys_content_t:s0 33 Feb 28 13:20 /var/www/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.2. selinux RHEL システムロールを使用した SELinux ネットワークポートラベルの管理 リンクのコピーリンクがクリップボードにコピーされました!
標準以外のポートでサービスを実行する場合は、このポートに対応する SELinux タイプラベルを設定する必要があります。これにより、サービスが標準以外のポートでリッスンしようとする際に、そのサービスへの許可が SELinux によって拒否されなくなります。selinux RHEL システムロールを使用すると、このタスクを自動化し、ポートにタイプラベルをリモートで割り当てることができます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ports: <port_number>- SELinux ラベルを割り当てるポート番号を定義します。複数の値はコンマで区切ります。
setype: <type_label>- SELinux タイプラベルを定義します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.selinux/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
http_port_tラベルが割り当てられているポート番号を表示します。ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep http_port_t' http_port_t tcp 80, 81, 443, <port_number>, 488, 8008, 8009, 8443, 9000
# ansible managed-node-01.example.com -m shell -a 'semanage port --list | grep http_port_t' http_port_t tcp 80, 81, 443, <port_number>, 488, 8008, 8009, 8443, 9000Copy to Clipboard Copied! Toggle word wrap Toggle overflow
24.3. selinux RHEL システムロールを使用した SELinux モジュールのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの SELinux ポリシーがお客様の要件に合わない場合は、カスタムモジュールを作成して、アプリケーションに必要なリソースへのアクセスを許可できます。selinux RHEL システムロールを使用すると、このプロセスを自動化し、SELinux モジュールをリモートでデプロイできます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - デプロイする SELinux モジュールが、Playbook と同じディレクトリーに保存されている。
SELinux モジュールが Common Intermediate Language (CIL) またはポリシーパッケージ (PP) 形式で利用できる。
PP モジュールを使用している場合は、管理対象ノード上の
policydbバージョンが、PP モジュールのビルドに使用されたバージョン以降であることを確認してください。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
path: <module_file>- コントロールノード上のモジュールファイルへのパスを設定します。
priority: <value>-
SELinux モジュールの優先度を設定します。デフォルトは
400です。 state: <value>モジュールの状態を定義します。
-
enabled: モジュールをインストールまたは有効にします。 -
disabled: モジュールを無効にします。 -
absent: モジュールを削除します。
-
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.selinux/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SELinux モジュールのリストをリモートで表示し、Playbook で使用したモジュールをフィルタリングします。
ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'
# ansible managed-node-01.example.com -m shell -a 'semodule -l | grep <module>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow モジュールがリストされている場合、そのモジュールはインストールされ、有効になっています。
第25章 RHEL システムロールを使用した OpenSSH サーバーおよびクライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
sshd RHEL システムロールを使用すると、OpenSSH サーバーを設定できます。また、ssh RHEL システムロールを使用すると、OpenSSH クライアントを設定できます。この設定は、任意の数の RHEL システムで一貫して自動的かつ同時に行うことができます。このような設定は、次のようなセキュアなリモート操作が必要なシステムに必要です。
- リモートシステム管理: SSH クライアントを使用して別のコンピューターから自分のマシンにセキュアに接続します。
- セキュアなファイル転送: OpenSSH が提供する Secure File Transfer Protocol (SFTP) を使用すると、ローカルマシンとリモートシステム間でファイルをセキュアに転送できます。
- 自動化された DevOps パイプライン: リモートサーバーへのセキュアな接続を必要とするソフトウェアのデプロイを自動化します (CI/CD パイプライン)。
- トンネリングとポート転送: ファイアウォールの背後にあるリモートサーバー上の Web サービスにアクセスするためにローカルポートを転送します。たとえば、リモートデータベースや開発サーバーなどです。
- 鍵ベースの認証: パスワードベースのログインよりもセキュアな代替手段です。
- 証明書ベースの認証: 一元的な信頼管理とスケーラビリティーの向上を実現します。
- セキュリティーの強化: root ログインの無効化、ユーザーアクセスの制限、強力な暗号化の適用などの強化策により、システムセキュリティーが強化されます。
25.1. sshd RHEL システムロールによって Playbook の設定を設定ファイルにマッピングする方法 リンクのコピーリンクがクリップボードにコピーされました!
sshd RHEL システムロール Playbook では、サーバー SSH 設定ファイルのパラメーターを定義できます。
これらの設定を指定しない場合、RHEL のデフォルトに一致する sshd_config ファイルがロールによって生成されます。
いずれの場合も、ブール値は、管理対象ノードの最終設定で、yes および no として適切にレンダリングされます。リストを使用して複数行の設定項目を定義できます。以下に例を示します。
sshd_ListenAddress: - 0.0.0.0 - '::'
sshd_ListenAddress:
- 0.0.0.0
- '::'
レンダリングは以下のようになります。
ListenAddress 0.0.0.0 ListenAddress ::
ListenAddress 0.0.0.0
ListenAddress ::
25.2. sshd RHEL システムロールを使用した OpenSSH サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
sshd RHEL システムロールを使用して、複数の OpenSSH サーバーを設定できます。OpenSSH サーバーは、主に次の機能により、リモートユーザーにセキュアな通信環境を提供します。
- リモートクライアントからの SSH 接続の管理
- 認証情報の検証
- セキュアなデータ転送とコマンド実行
sshd RHEL システムロールは、Identity Management RHEL システムロールなど、SSHD 設定を変更する他の RHEL システムロールと併用できます。設定が上書きされないように、sshd RHEL システムロールが名前空間 (RHEL 8 以前のバージョン) またはドロップインディレクトリー (RHEL 9) を使用することを確認してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
PasswordAuthentication: yes|no-
ユーザー名とパスワードの組み合わせを使用するクライアントからの認証を OpenSSH サーバー (
sshd) が受け入れるかどうかを制御します。 Match:-
Match ブロックで、サブネット
192.0.2.0/24からのパスワードを使用したrootユーザーログインだけを許可しています。
Playbook で使用されるロール変数と OpenSSH 設定オプションの詳細は、
/usr/share/ansible/roles/rhel-system-roles.sshd/README.mdファイルと、コントロールノードのsshd_config(5)man ページを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSH サーバーにログインします。
ssh <username>@<ssh_server>
$ ssh <username>@<ssh_server>Copy to Clipboard Copied! Toggle word wrap Toggle overflow SSH サーバー上の
sshd_configファイルの内容を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 192.0.2.0/24サブネットから root としてサーバーに接続できることを確認します。IP アドレスを確認します。
hostname -I 192.0.2.1
$ hostname -I 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow IP アドレスが
192.0.2.1-192.0.2.254範囲にある場合は、サーバーに接続できます。rootでサーバーに接続します。ssh root@<ssh_server>
$ ssh root@<ssh_server>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.3. 非排他的設定に sshd RHEL システムロールを使用する リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、sshd RHEL システムロールを適用すると、設定全体が上書きされます。これは、たとえば別の RHEL システムロールや Playbook などを使用して、以前に設定を調整している場合に問題を生じる可能性があります。他のオプションを維持しながら、選択した設定オプションにのみ sshd に問題を生じるシステムロールを適用するには、非排他的設定を使用できます。
非排他的設定は、以下を使用して適用できます。
- RHEL 8 以前では、設定スニペットを使用します。
-
RHEL 9 以降では、ドロップインディレクトリー内のファイルを使用します。デフォルトの設定ファイルは、
/etc/ssh/sshd_config.d/00-ansible_system_role.confとしてドロップインディレクトリーにすでに配置されています。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。RHEL 8 以前を実行する管理対象ノードの場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 9 以降を実行する管理対象ノードの場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
sshd_config_namespace: <my-application>- このロールは、Playbook で指定した設定を、特定の名前空間配下にある既存の設定ファイルの設定スニペットに配置します。異なるコンテキストからロールを実行する場合は、異なる名前空間を選択する必要があります。
sshd_config_file: /etc/ssh/sshd_config.d/<42-my-application>.conf-
sshd_config_file変数では、sshdシステムロールによる設定オプションの書き込み先の.confファイルを定義します。設定ファイルが適用される順序を指定するには、2 桁の接頭辞 (例:42-) を使用します。 AcceptEnv:OpenSSH サーバー (
sshd) がクライアントから受け入れる環境変数を制御します。-
LANG: 言語とロケールの設定を定義します。 -
LS_COLORS: ターミナルのlsコマンドの表示カラースキームを定義します。 -
EDITOR: エディターを開く必要があるコマンドラインプログラムのデフォルトのテキストエディターを指定します。
-
Playbook で使用されるロール変数と OpenSSH 設定オプションの詳細は、
/usr/share/ansible/roles/rhel-system-roles.sshd/README.mdファイルと、コントロールノードのsshd_config(5)man ページを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSH サーバーの設定を確認します。
RHEL 8 以前を実行する管理対象ノードの場合:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 9 以降を実行する管理対象ノードの場合:
cat /etc/ssh/sshd_config.d/42-my-application.conf # Ansible managed # AcceptEnv LANG LS_COLORS EDITOR
# cat /etc/ssh/sshd_config.d/42-my-application.conf # Ansible managed # AcceptEnv LANG LS_COLORS EDITORCopy to Clipboard Copied! Toggle word wrap Toggle overflow
25.4. sshd RHEL システムロールを使用して SSH サーバー上のシステム全体の暗号化ポリシーをオーバーライドする リンクのコピーリンクがクリップボードにコピーされました!
デフォルトの暗号化設定が特定のセキュリティーまたは互換性のニーズに合わない場合は、sshd RHEL システムロールを使用して、OpenSSH サーバー上のシステム全体の暗号化ポリシーをオーバーライドすることができます。特に次のような主な状況では、オーバーライドすることを推奨します。
- 古いクライアントとの互換性: デフォルトよりも弱い暗号化アルゴリズム、鍵交換プロトコル、または暗号を使用する必要がある場合。
- より強力なセキュリティーポリシーの適用: 同時に、より弱いアルゴリズムを無効にすることもできます。このような対策は、特に高度にセキュアで規制された環境では、デフォルトのシステム暗号化ポリシーの範囲を超えたものになることがあります。
- パフォーマンスに関する考慮事項: システムのデフォルト設定により適用される強力なアルゴリズムにより、一部のシステムでは計算負荷が大きくなる可能性があります。
- 特定のセキュリティーニーズに合わせたカスタマイズ: デフォルトの暗号化ポリシーでは対応できない固有の要件に合わせる場合。
sshd RHEL システムロールで、暗号化ポリシーのすべての要素をオーバーライドすることはできません。たとえば、別のレイヤーで SHA1 署名が禁止されている場合があります。より一般的な解決策については、RHEL システムロールを使用したカスタム暗号化ポリシーの設定 を参照してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
sshd_KexAlgorithms-
たとえば、
ecdh-sha2-nistp256、ecdh-sha2-nistp384、ecdh-sha2-nistp521、diffie-hellman-group14-sha1、またはdiffie-hellman-group-exchange-sha256などの鍵交換アルゴリズムを選択できます。 sshd_Ciphers-
たとえば、
aes128-ctr、aes192-ctr、またはaes256-ctrなどの暗号を選択できます。 sshd_MACs-
たとえば、
hmac-sha2-256、hmac-sha2-512、またはhmac-sha1などの MAC を選択できます。 sshd_HostKeyAlgorithms-
ecdsa-sha2-nistp256、ecdsa-sha2-nistp384、ecdsa-sha2-nistp521、ssh-rsaなどの公開鍵アルゴリズムを選択できます。
Playbook で使用されるすべての変数の詳細は、コントロールノード上の
/usr/share/ansible/roles/rhel-system-roles.sshd/README.mdファイルを参照してください。RHEL 9 管理対象ノードでは、システムロールによって設定が
/etc/ssh/sshd_config.d/00-ansible_system_role.confファイルに書き込まれ、暗号化オプションが自動的に適用されます。sshd_config_file変数を使用してファイルを変更できます。ただし、設定を確実に有効にするために、設定された暗号化ポリシーが含まれる/etc/ssh/sshd_config.d/50-redhat.confファイルよりも辞書式順序で前に来るようなファイル名を使用してください。RHEL 8 管理対象ノードでは、
sshd_sysconfig_override_crypto_policy変数とsshd_sysconfig変数をtrueに設定してオーバーライドを有効にする必要があります。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
詳細なログを表示する SSH 接続を使用して手順が成功したかどうかを検証し、定義した変数を以下の出力で確認できます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
25.5. ssh RHEL システムロールによって Playbook の設定を設定ファイルにマッピングする方法 リンクのコピーリンクがクリップボードにコピーされました!
ssh RHEL システムロール Playbook では、クライアント SSH 設定ファイルのパラメーターを定義できます。
これらの設定を指定しない場合、RHEL のデフォルトに一致するグローバルの ssh_config ファイルがロールによって生成されます。
いずれの場合も、ブール値は、管理対象ノードの最終設定で、yes または no として適切にレンダリングされます。リストを使用して複数行の設定項目を定義できます。以下に例を示します。
LocalForward: - 22 localhost:2222 - 403 localhost:4003
LocalForward:
- 22 localhost:2222
- 403 localhost:4003
レンダリングは以下のようになります。
LocalForward 22 localhost:2222 LocalForward 403 localhost:4003
LocalForward 22 localhost:2222
LocalForward 403 localhost:4003
設定オプションでは、大文字と小文字が区別されます。
25.6. ssh RHEL システムロールを使用した OpenSSH クライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
ssh RHEL システムロールを使用して、複数の OpenSSH クライアントを設定できます。OpenSSH クライアントは、以下を提供することで、ローカルユーザーがリモート OpenSSH サーバーとのセキュアな接続を確立することを可能にします。
- セキュアな接続の開始
- 認証情報のプロビジョニング
- セキュアな通信チャネルに使用される暗号化方式に関する OpenSSH サーバーとのネゴシエーション
- OpenSSH サーバーとの間でセキュアにファイルを送受信する機能
ssh RHEL システムロールは、Identity Management RHEL システムロールなど、SSH 設定を変更する他のシステムロールと併用できます。設定が上書きされないように、ssh RHEL システムロールがドロップインディレクトリーを使用すること (RHEL 8 以降ではデフォルト) を確認してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
ssh_user: root-
特定の設定の詳細を使用して、管理対象ノード上の
rootユーザーの SSH クライアント設定を指定します。 Compression: true- 圧縮が有効になります。
ControlMaster: auto-
ControlMaster の多重化が
autoに設定されます。 Host-
user1というユーザーとしてserver.example.comホストに接続するためのエイリアスexampleを作成します。 ssh_ForwardX11: no- X11 転送が無効になります。
Playbook で使用されるロール変数と OpenSSH 設定オプションの詳細は、
/usr/share/ansible/roles/rhel-system-roles.ssh/README.mdファイルと、コントロールノードのssh_config(5)man ページを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSH 設定ファイルを表示して、管理対象ノードの設定が正しいことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第26章 RHEL システムロールを使用したローカルストレージの管理 リンクのコピーリンクがクリップボードにコピーされました!
Ansible を使用して LVM とローカルファイルシステム (FS) を管理するには、RHEL 9 で使用可能な RHEL システムロールの 1 つである storage ロールを使用できます。
storage ロールを使用すると、ディスク上のファイルシステム、複数のマシンにある論理ボリューム、および RHEL 7.7 以降の全バージョンでのファイルシステムの管理を自動化できます。
26.1. storage RHEL システムロールを使用してブロックデバイスに XFS ファイルシステムを作成する リンクのコピーリンクがクリップボードにコピーされました!
このサンプルの Ansible Playbook では、ストレージロールを使用して、デフォルトのパラメーターでブロックデバイス上に XFS ファイルシステムを作成します。/dev/sdb デバイス上のファイルシステム、またはマウントポイントのディレクトリーが存在しない場合は、Playbook により作成されます。
storage ロールは、パーティションが分割されていないディスク全体または論理ボリューム (LV) でのみファイルシステムを作成できます。パーティションにファイルシステムを作成することはできません。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
name: barefs-
現在、ボリューム名 (この例では
barefs) は任意です。storageロールは、disks属性にリストされているディスクデバイスによってボリュームを識別します。 fs_type: <file_system>-
デフォルトのファイルシステム XFS を使用する場合は、
fs_typeパラメーターを省略できます。 disks: <list_of_disks_and_volumes>ディスク名と LV 名の YAML リスト。LV 上にファイルシステムを作成するには、その LV を含んでいるボリュームグループも含めて、
disks属性に LVM 設定を指定します。詳細は、storage RHEL システムロールを使用して論理ボリュームを作成またはサイズ変更する を参照してください。LV デバイスへのパスを指定しないでください。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.2. storage RHEL システムロールを使用してファイルシステムを永続的にマウントする リンクのコピーリンクがクリップボードにコピーされました!
このサンプルの Ansible Playbook では、ストレージロールを使用して、既存のファイルシステムを永続的にマウントします。/etc/fstab ファイルに適切なエントリーを追加することで、ファイルシステムを即座に使用可能にして永続的にマウントします。これにより、ファイルシステムを再起動後もマウントしたままにできます。/dev/sdb デバイス上のファイルシステム、またはマウントポイントのディレクトリーが存在しない場合は、Playbook により作成されます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.3. storage RHEL システムロールを使用して論理ボリュームを作成またはサイズ変更する リンクのコピーリンクがクリップボードにコピーされました!
storage ロールを使用して、次のタスクを実行します。
- 多数のディスクで構成されるボリュームグループに LVM 論理ボリュームを作成する
- LVM 上の既存のファイルシステムのサイズを変更する
- LVM ボリュームのサイズをプールの合計サイズのパーセンテージで表す
ボリュームグループが存在しない場合、このロールによって作成されます。ボリュームグループ内に論理ボリュームが存在する場合に、そのサイズが Playbook で指定されたサイズと一致しないと、サイズが変更されます。
論理ボリュームを縮小する場合、データの損失を防ぐために、その論理ボリューム上のファイルシステムによって、縮小する論理ボリューム内の領域が使用されていないことを確認する必要があります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
size: <size>- 単位 (GiB など) またはパーセンテージ (60% など) を使用してサイズを指定する必要があります。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
指定したボリュームが作成されたこと、または要求したサイズに変更されたことを確認します。
ansible managed-node-01.example.com -m command -a 'lvs myvg'
# ansible managed-node-01.example.com -m command -a 'lvs myvg'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.4. storage RHEL システムロールを使用してオンラインブロック破棄を有効にする リンクのコピーリンクがクリップボードにコピーされました!
オンラインブロック破棄オプションを使用すると、XFS ファイルシステムをマウントし、未使用のブロックを自動的に破棄できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
オンラインブロック破棄オプションが有効になっていることを確認します。
ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'
# ansible managed-node-01.example.com -m command -a 'findmnt /mnt/data'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.5. storage RHEL システムロールを使用してファイルシステムを作成およびマウントする リンクのコピーリンクがクリップボードにコピーされました!
このサンプルの Ansible Playbook では、storage ロールを使用してファイルシステムを作成およびマウントします。/etc/fstab ファイルに適切なエントリーを追加することで、ファイルシステムを即座に使用可能にして永続的にマウントします。これにより、ファイルシステムを再起動後もマウントしたままにできます。/dev/sdb デバイス上のファイルシステム、またはマウントポイントのディレクトリーが存在しない場合は、Playbook により作成されます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
disks: <list_of_devices>- ロールがボリュームを作成するときに使用するデバイス名の YAML リスト。
fs_type: <file_system>-
ロールがボリュームに設定するファイルシステムを指定します。
xfs、ext3、ext4、swap、またはunformattedを選択できます。 label-name: <file_system_label>- オプション: ファイルシステムのラベルを設定します。
mount_point: <directory>-
オプション: ボリュームを自動的にマウントする場合は、
mount_point変数をボリュームのマウント先のディレクトリーに設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.6. storage RHEL システムロールを使用した RAID ボリュームの設定 リンクのコピーリンクがクリップボードにコピーされました!
storage システムロールを使用すると、Red Hat Ansible Automation Platform と Ansible-Core を使用して RHEL に RAID ボリュームを設定できます。要件に合わせて RAID ボリュームを設定するためのパラメーターを使用して、Ansible Playbook を作成します。
特定の状況でデバイス名が変更する場合があります。たとえば、新しいディスクをシステムに追加するときなどです。したがって、データの損失を防ぐために、Playbook では永続的な命名属性を使用してください。永続的な命名属性の詳細は、永続的な命名属性 を参照してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
アレイが正しく作成されたことを確認します。
ansible managed-node-01.example.com -m command -a 'mdadm --detail /dev/md/data'
# ansible managed-node-01.example.com -m command -a 'mdadm --detail /dev/md/data'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.7. storage RHEL システムロールを使用して RAID を備えた LVM プールを設定する リンクのコピーリンクがクリップボードにコピーされました!
storage システムロールを使用すると、Red Hat Ansible Automation Platform を使用して、RAID を備えた LVM プールを RHEL に設定できます。利用可能なパラメーターを使用して Ansible Playbook を設定し、RAID を備えた LVM プールを設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
プールが RAID 上にあることを確認します。
ansible managed-node-01.example.com -m command -a 'lsblk'
# ansible managed-node-01.example.com -m command -a 'lsblk'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.8. storage RHEL システムロールを使用して RAID LVM ボリュームのストライプサイズを設定する リンクのコピーリンクがクリップボードにコピーされました!
storage システムロールを使用すると、Red Hat Ansible Automation Platform を使用して、RHEL の RAID LVM ボリュームのストライプサイズを設定できます。利用可能なパラメーターを使用して Ansible Playbook を設定し、RAID を備えた LVM プールを設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ストライプサイズが必要なサイズに設定されていることを確認します。
ansible managed-node-01.example.com -m command -a 'lvs -o+stripesize /dev/my_pool/my_volume'
# ansible managed-node-01.example.com -m command -a 'lvs -o+stripesize /dev/my_pool/my_volume'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.9. storage RHEL システムロールを使用して LVM-VDO ボリュームを設定する リンクのコピーリンクがクリップボードにコピーされました!
storage RHEL システムロールを使用して、圧縮と重複排除を有効にした LVM 上の VDO ボリューム (LVM-VDO) を作成できます。
storage システムロールが LVM VDO を使用するため、プールごとに作成できるボリュームは 1 つだけです。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
vdo_pool_size: <size>- デバイス上でボリュームが占める実際のサイズ。サイズは、10 GiB など、人間が判読できる形式で指定できます。単位を指定しない場合、デフォルトでバイト単位に設定されます。
size: <size>- VDO ボリュームの仮想サイズ。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
圧縮と重複排除の現在のステータスを表示します。
ansible managed-node-01.example.com -m command -a 'lvs -o+vdo_compression,vdo_compression_state,vdo_deduplication,vdo_index_state' LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert VDOCompression VDOCompressionState VDODeduplication VDOIndexState mylv1 myvg vwi-a-v--- 3.00t vpool0 enabled online enabled online
$ ansible managed-node-01.example.com -m command -a 'lvs -o+vdo_compression,vdo_compression_state,vdo_deduplication,vdo_index_state' LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert VDOCompression VDOCompressionState VDODeduplication VDOIndexState mylv1 myvg vwi-a-v--- 3.00t vpool0 enabled online enabled onlineCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.10. storage RHEL システムロールを使用して LUKS2 暗号化ボリュームを作成する リンクのコピーリンクがクリップボードにコピーされました!
storage ロールを使用し、Ansible Playbook を実行して、LUKS で暗号化されたボリュームを作成および設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。luks_password: <password>
luks_password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
LUKS 暗号化ボリュームの
luksUUID値を見つけます。ansible managed-node-01.example.com -m command -a 'cryptsetup luksUUID /dev/sdb' 4e4e7970-1822-470e-b55a-e91efe5d0f5c
# ansible managed-node-01.example.com -m command -a 'cryptsetup luksUUID /dev/sdb' 4e4e7970-1822-470e-b55a-e91efe5d0f5cCopy to Clipboard Copied! Toggle word wrap Toggle overflow ボリュームの暗号化ステータスを表示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 作成された LUKS 暗号化ボリュームを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
26.12. storage RHEL システムロールを使用して物理ボリュームのサイズを変更する リンクのコピーリンクがクリップボードにコピーされました!
storage システムロールを使用して、ホストの外部から基盤となるストレージまたはディスクのサイズを変更した後、LVM 物理ボリュームのサイズを変更できます。たとえば、仮想ディスクのサイズを増やした後、既存の LVM でさらに多くの領域を使用できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - 基盤となるブロックストレージのサイズを変更した。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
新しい物理ボリュームのサイズを表示します。
ansible managed-node-01.example.com -m command -a 'pvs' PV VG Fmt Attr PSize PFree /dev/sdf1 myvg lvm2 a-- 1,99g 1,99g
$ ansible managed-node-01.example.com -m command -a 'pvs' PV VG Fmt Attr PSize PFree /dev/sdf1 myvg lvm2 a-- 1,99g 1,99gCopy to Clipboard Copied! Toggle word wrap Toggle overflow
26.13. storage RHEL システムロールを使用して暗号化された Stratis プールを作成する リンクのコピーリンクがクリップボードにコピーされました!
データを保護するために、storage RHEL システムロールを使用して暗号化された Stratis プールを作成できます。パスフレーズに加えて、暗号化方法として Clevis と Tang または TPM 保護を使用できます。
Stratis 暗号化はプール全体でのみ設定できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - Tang サーバーに接続できる。詳細は、SELinux を Enforcing モードで有効にした Tang サーバーのデプロイメント を参照してください。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。luks_password: <password>
luks_password: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
encryption_password- LUKS ボリュームのロックを解除するために使用するパスワードまたはパスフレーズ。
encryption_clevis_pin-
作成されたプールを暗号化するために使用できる Clevis の方式。
tangとtpm2を使用できます。 encryption_tang_url- Tang サーバーの URL。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.storage/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
Clevis と Tang が設定された状態でプールが作成されたことを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第27章 sudo システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、sudo RHEL システムロールを使用して、複数のシステム上の /etc/sudoers ファイルを一貫して設定できます。
27.1. RHEL システムロールを使用したカスタム sudoers 設定の適用 リンクのコピーリンクがクリップボードにコピーされました!
sudo RHEL システムロールを使用して、管理対象ノードにカスタムの sudoers 設定を適用できます。これにより、どのユーザーがどのホストでどのコマンドを実行できるかを定義することで、設定の効率が向上し、よりきめ細かい制御が可能になります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で指定する設定は次のとおりです。
users- ルールを適用するユーザーのリスト。
hosts-
ルールを適用するホストのリスト。すべてのホストの場合は
ALLを使用できます。 commandsルールを適用するコマンドのリスト。すべてのコマンドの場合は
ALLを使用できます。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.sudo/README.mdファイルを参照してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで、Playbook によって新しいルールが適用されたことを確認します。
cat /etc/sudoers | tail -n1 <user_name> <host_name>= <path_to_command_binary>
# cat /etc/sudoers | tail -n1 <user_name> <host_name>= <path_to_command_binary>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第28章 RHEL システムロールを使用した systemd ユニットの管理 リンクのコピーリンクがクリップボードにコピーされました!
systemd RHEL システムロールを使用すると、特定の systemd 関連のタスクを自動化し、リモートで実行できます。このロールは次の操作に使用できます。
- サービスの管理
- ユニットのデプロイ
- ドロップインファイルのデプロイ
28.1. systemd RHEL システムロールを使用したサービスの管理 リンクのコピーリンクがクリップボードにコピーされました!
systemd RHEL システムロールを使用すると、systemd ユニットを自動化し、リモートで管理して、サービスの起動や有効化などを実行できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
~/playbook.ymlなどの Playbook ファイルを次の内容で作成します。実行する操作に応じた変数のみを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.systemd/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
28.2. systemd RHEL システムロールを使用した systemd ドロップインファイルのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
systemd は、他の場所からユニット用に読み取った設定にドロップインファイルを適用します。したがって、元のユニットファイルを変更せずに、ドロップインファイルを使用してユニット設定を変更できます。systemd RHEL システムロールを使用すると、ドロップインファイルのデプロイプロセスを自動化できます。
このロールは、ハードコードされたファイル名 99-override.conf を使用して、ドロップインファイルを /etc/systemd/system/<name>._<unit_type>/ に保存します。保存先ディレクトリー内にあるこの名前の既存のファイルがオーバーライドされることに注意してください。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
systemd ドロップインファイルの内容を使用して Jinja2 テンプレートを作成します。たとえば、次の内容の
~/sshd.service.conf.j2ファイルを作成します。{{ ansible_managed | comment }} [Unit] After= After=network.target sshd-keygen.target network-online.target{{ ansible_managed | comment }} [Unit] After= After=network.target sshd-keygen.target network-online.targetCopy to Clipboard Copied! Toggle word wrap Toggle overflow このドロップインファイルは、元の
/usr/lib/systemd/system/sshd.serviceファイルと同じユニットをAfter設定に指定します。さらにnetwork-online.targetも指定します。この追加のターゲットにより、ネットワークインターフェイスがアクティブ化されて IP アドレスが割り当てられた後に、sshdが起動します。これにより、sshdがすべての IP アドレスにバインドできるようになります。ファイル名には、
<name>.<unit_type>.conf.j2という命名規則を使用します。たとえば、sshd.serviceユニットのドロップインを追加するには、ファイルにsshd.service.conf.j2という名前を付ける必要があります。このファイルを Playbook と同じディレクトリーに配置します。次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
systemd_dropins: <list_of_files>- デプロイするドロップインファイルの名前を YAML リスト形式で指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.systemd/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ロールによって、ドロップインファイルが正しい場所に配置されたことを確認します。
ansible managed-node-01.example.com -m command -a 'ls /etc/systemd/system/sshd.service.d/' 99-override.conf
# ansible managed-node-01.example.com -m command -a 'ls /etc/systemd/system/sshd.service.d/' 99-override.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
28.3. systemd RHEL システムロールを使用した systemd システムユニットのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
カスタムアプリケーション用のユニットファイルを作成すると、systemd はそれを /etc/systemd/system/ ディレクトリーから読み取ります。systemd RHEL システムロールを使用すると、カスタムユニットファイルのデプロイを自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
カスタム systemd ユニットファイルの内容を使用して Jinja2 テンプレートを作成します。たとえば、次のように、サービスの内容を含む
~/example.service.j2ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイル名には、
<name>.<unit_type>.j2という命名規則を使用します。たとえば、example.serviceユニットを作成するには、ファイルにexample.service.j2という名前を付ける必要があります。このファイルを Playbook と同じディレクトリーに配置します。次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.systemd/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
サービスが有効になっていて起動していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
28.4. systemd RHEL システムロールを使用した systemd ユーザーユニットのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
カスタムアプリケーション用としてユーザーごとにユニットファイルを作成でき、systemd はそれらを /home/<username>/.config/systemd/user/ ディレクトリーから読み取ります。systemd RHEL システムロールを使用すると、各ユーザーのカスタムユニットファイルのデプロイを自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 - systemd ユニットの Playbook に指定したユーザーが存在する。
手順
カスタム systemd ユニットファイルの内容を使用して Jinja2 テンプレートを作成します。たとえば、次のように、サービスの内容を含む
~/example.service.j2ファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイル名には、
<name>.<unit_type>.j2という命名規則を使用します。たとえば、example.serviceユニットを作成するには、ファイルにexample.service.j2という名前を付ける必要があります。このファイルを Playbook と同じディレクトリーに配置します。次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要systemdRHEL システムロールは新しいユーザーを作成しません。Playbook に存在しないユーザーを指定するとエラーが返されます。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.systemd/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
サービスが有効になっていて起動していることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第29章 RHEL システムロールを使用した時刻同期の設定 リンクのコピーリンクがクリップボードにコピーされました!
Network Time Protocol (NTP) と Precision Time Protocol (PTP) は、ネットワーク経由でコンピューターのクロックを同期するための規格です。一部のサービスは時刻同期に依存しているため、ネットワークで正確に時刻を同期することが重要です。たとえば、Kerberos では、リプレイ攻撃を防ぐため、サーバーとクライアント間のごくわずかな時間のずれしか許容されません。
Playbook の timesync_ntp_provider 変数で時刻サービスを設定できます。この変数を設定しなかった場合、ロールによって次の要素に基づいて時刻サービスが決定されます。
-
RHEL 8 以降の場合:
chronyd -
RHEL 6 および 7 の場合:
chronyd(デフォルト)、またはすでにインストールされている場合はntpd
29.1. timesync RHEL システムロールを使用した NTP による時刻同期の設定 リンクのコピーリンクがクリップボードにコピーされました!
Network Time Protocol (NTP) は、ネットワーク経由でホストの時刻を NTP サーバーと同期します。IT ネットワーク内では、複数のサービスが、セキュリティーやロギングなどのために、正確なシステム時刻に依存しています。timesync RHEL システムロールを使用すると、ネットワーク内の Red Hat Enterprise Linux NTP クライアントの設定を自動化し、時刻を同期させることができます。
timesync RHEL システムロールは、管理対象ホスト上の指定または検出されたプロバイダーサービスの設定を置き換えます。したがって、設定が Playbook で指定されていない場合、すべての設定が失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
pool: <yes|no>- ソースを個々のホストではなく NTP プールとしてフラグ付けします。この場合、時間経過で変わる可能性のある複数の IP アドレスに名前が解決されることがサービスで想定されています。
iburst: yes- 高速な初期同期を可能にします。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.timesync/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
時刻ソースの詳細を表示します。
管理対象ノードが
chronydサービスを実行している場合は、次のように入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 管理対象ノードが
ntpdサービスを実行している場合は、次のように入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
29.2. timesync RHEL システムロールを使用した NTP と NTS による時刻同期の設定 リンクのコピーリンクがクリップボードにコピーされました!
Network Time Protocol (NTP) は、ネットワーク経由でホストの時刻を NTP サーバーと同期します。クライアントは、Network Time Security (NTS) メカニズムを使用することで、サーバーへの TLS 暗号化接続を確立し、NTP パケットを認証します。IT ネットワーク内では、複数のサービスが、セキュリティーやロギングなどのために、正確なシステム時刻に依存しています。timesync RHEL システムロールを使用すると、ネットワーク内の Red Hat Enterprise Linux NTP クライアントの設定を自動化し、NTS で時刻を同期させることができます。
NTS サーバーと非 NTS サーバーを混在させることはできないことに注意してください。混在する構成では、NTS サーバーが信頼され、認証されていない NTP ソースにクライアントがフォールバックしません。これは、サーバーが中間者 (MITM) 攻撃に悪用される可能性があるためです。詳細は、システム上の chrony.conf(5) man ページの authselectmode パラメーターに関する説明を参照してください。
timesync RHEL システムロールは、管理対象ホスト上の指定または検出されたプロバイダーサービスの設定を置き換えます。したがって、設定が Playbook で指定されていない場合、すべての設定が失われます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
管理対象ノードが
chronydを使用している。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
iburst: yes- 高速な初期同期を可能にします。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.timesync/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードが
chronydサービスを実行している場合は、次の手順を実行します。時刻ソースの詳細を表示します。
ansible managed-node-01.example.com -m command -a 'chronyc sources' MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ptbtime1.ptb.de 1 6 17 55 -13us[ -54us] +/- 12ms ^- ptbtime2.ptb.de 1 6 17 56 -257us[ -297us] +/- 12ms
# ansible managed-node-01.example.com -m command -a 'chronyc sources' MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* ptbtime1.ptb.de 1 6 17 55 -13us[ -54us] +/- 12ms ^- ptbtime2.ptb.de 1 6 17 56 -257us[ -297us] +/- 12msCopy to Clipboard Copied! Toggle word wrap Toggle overflow NTS が有効なソースの場合、NTP ソースの認証に固有の情報を表示します。
ansible managed-node-01.example.com -m command -a 'chronyc -N authdata' Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ========================================================================= ptbtime1.ptb.de NTS 1 15 256 229 0 0 8 100 ptbtime2.ptb.de NTS 1 15 256 230 0 0 8 100
# ansible managed-node-01.example.com -m command -a 'chronyc -N authdata' Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ========================================================================= ptbtime1.ptb.de NTS 1 15 256 229 0 0 8 100 ptbtime2.ptb.de NTS 1 15 256 230 0 0 8 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow Cook列に報告される Cookie が 0 より大きいことを確認します。
管理対象ノードが
ntpdサービスを実行している場合は、次のように入力します。ansible managed-node-01.example.com -m command -a 'ntpq -p' remote refid st t when poll reach delay offset jitter ============================================================================== *ptbtime1.ptb.de .PTB. 1 8 2 64 77 23.585 967.902 0.684 -ptbtime2.ptb.de .PTB. 1 8 30 64 78 24.653 993.937 0.765# ansible managed-node-01.example.com -m command -a 'ntpq -p' remote refid st t when poll reach delay offset jitter ============================================================================== *ptbtime1.ptb.de .PTB. 1 8 2 64 77 23.585 967.902 0.684 -ptbtime2.ptb.de .PTB. 1 8 30 64 78 24.653 993.937 0.765Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第30章 RHEL システムロールを使用したセッション記録用システムの設定 リンクのコピーリンクがクリップボードにコピーされました!
tlog RHEL システムロールを使用して、管理対象ノード上のターミナルセッションアクティビティーを自動的に記録および監視します。SSSD サービスを使用して、ユーザーまたはユーザーグループごとに記録を行うように設定できます。
tlog RHEL システムロールのセッション記録ソリューションは、次のコンポーネントで構成されています。
-
tlogユーティリティー - System Security Services Daemon (SSSD)
- オプション: Web コンソールインターフェイス
30.1. tlog RHEL システムロールを使用して個々のユーザーのセッション記録を設定する リンクのコピーリンクがクリップボードにコピーされました!
Ansible Playbook を準備して適用し、RHEL システムを設定して、セッション記録データを systemd ジャーナルに記録します。
これにより、特定のユーザーがコンソールにログインしたとき、または SSH 経由でログインしたときに、そのユーザーのセッション中、ユーザーのターミナルの出力と入力を記録できるようになります。
この Playbook は、ユーザーのログインシェルとして機能するターミナルセッション I/O ロギングプログラムである tlog-rec-session をインストールします。このロールは SSSD 設定ドロップファイルを作成します。このファイルはログインシェルを使用するユーザーとグループを定義します。さらに、cockpit パッケージがシステムにインストールされている場合、Playbook は cockpit-session-recording パッケージもインストールします。これは Cockpit モジュールの 1 つであり、Web コンソールインターフェイスでの記録の表示と再生を可能にするものです。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow tlog_scope_sssd: <value>-
some値は、allまたはnoneではなく、特定のユーザーとグループのみを記録することを指定します。 tlog_users_sssd: <list_of_users>- セッションを記録するユーザーの YAML リスト。ユーザーが存在しない場合、このロールによってユーザーが追加されないことに注意してください。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSSD ドロップインファイルの内容を確認します。
cd /etc/sssd/conf.d/sssd-session-recording.conf
# cd /etc/sssd/conf.d/sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook に設定したパラメーターがファイルに含まれていることが確認できます。
- セッションを記録するユーザーとしてログインし、いくつかの操作を実行してからログアウトします。
rootユーザーとして以下を実行します。記録されたセッションのリストを表示します。
journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...# journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップでは、
rec(レコーディング ID) フィールドの値が必要になります。_COMMフィールドの値は 15 文字の制限により短縮されることに注意してください。セッションを再生します。
tlog-play -r journal -M TLOG_REC=<recording_id>
# tlog-play -r journal -M TLOG_REC=<recording_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
30.2. tlog RHEL システムロールを使用して特定のユーザーとグループをセッション記録から除外する リンクのコピーリンクがクリップボードにコピーされました!
tlog RHEL システムロールの tlog_exclude_users_sssd および tlog_exclude_groups_sssd ロール変数を使用すると、ユーザーまたはグループのセッションを systemd ジャーナルに記録およびログしないように除外できます。
この Playbook は、ユーザーのログインシェルとして機能するターミナルセッション I/O ロギングプログラムである tlog-rec-session をインストールします。このロールは SSSD 設定ドロップファイルを作成します。このファイルはログインシェルを使用するユーザーとグループを定義します。さらに、cockpit パッケージがシステムにインストールされている場合、Playbook は cockpit-session-recording パッケージもインストールします。これは Cockpit モジュールの 1 つであり、Web コンソールインターフェイスでの記録の表示と再生を可能にするものです。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow tlog_scope_sssd: <value>-
値
allは、すべてのユーザーとグループを記録することを指定します。 tlog_exclude_users_sssd: <user_list>- セッション記録から除外するユーザー名の YAML リスト。
tlog_exclude_groups_sssd: <group_list>- セッション記録から除外するグループの YAML リスト。
Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSSD ドロップインファイルの内容を確認します。
cat /etc/sssd/conf.d/sssd-session-recording.conf
# cat /etc/sssd/conf.d/sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook に設定したパラメーターがファイルに含まれていることが確認できます。
- セッションを記録するユーザーとしてログインし、いくつかの操作を実行してからログアウトします。
rootユーザーとして以下を実行します。記録されたセッションのリストを表示します。
journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...# journalctl _COMM=tlog-rec-sessio Nov 12 09:17:30 managed-node-01.example.com -tlog-rec-session[1546]: {"ver":"2.3","host":"managed-node-01.example.com","rec":"07418f2b0f334c1696c10cbe6f6f31a6-60a-e4a2","user":"demo-user",... ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のステップでは、
rec(レコーディング ID) フィールドの値が必要になります。_COMMフィールドの値は 15 文字の制限により短縮されることに注意してください。セッションを再生します。
tlog-play -r journal -M TLOG_REC=<recording_id>
# tlog-play -r journal -M TLOG_REC=<recording_id>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第31章 RHEL システムロールを使用した IPsec VPN 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
仮想プライベートネットワーク (VPN) を使用すると、インターネットなどの信頼できないネットワーク上で、セキュアで暗号化されたトンネルを確立できます。このようなトンネルにより、転送中のデータの機密性と整合性が確保されます。一般的なユースケースとしては、支社と本社を接続することなどが挙げられます。
vpn RHEL システムロールを使用すると、Libreswan IPsec VPN 設定の作成プロセスを自動化できます。
vpn RHEL システムロールで作成できるのは、事前共有鍵 (PSK) または証明書を使用してピアを相互に認証する VPN 設定だけです。
31.1. vpn RHEL システムロールを使用して PSK 認証による IPsec ホスト間 VPN を設定する リンクのコピーリンクがクリップボードにコピーされました!
ホスト間 VPN は、2 つのデバイス間で直接、安全で暗号化された接続を確立し、アプリケーションはインターネットなどの安全でないネットワーク上で安全に通信できるようにします。
認証の場合、事前共有キー(PSK)は、2 つのピアにのみ知られている単一の共有秘密を使用する簡単な方法です。このアプローチは、デプロイメントの容易さが優先される基本的なセットアップに設定が簡単で、理想的です。ただし、キーは厳密に機密に保つ必要があります。鍵にアクセスできる攻撃者は、接続が危険にさらされる可能性があります。
vpn RHEL システムロールを使用すると、PSK 認証による IPsec ホスト間接続を作成するプロセスを自動化できます。デフォルトでは、このロールはトンネルベースの VPN を作成します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
hosts: <list>VPN を設定するピアを含む YAML ディクショナリーを定義します。エントリーが Ansible 管理対象ノードでない場合は、
hostnameパラメーターに完全修飾ドメイン名 (FQDN) または IP アドレスを指定する必要があります。次に例を示します。... - hosts: ... external-host.example.com: hostname: 192.0.2.1... - hosts: ... external-host.example.com: hostname: 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールは、各管理対象ノード上の VPN 接続を設定します。接続の名前は
<peer_A>-to-<peer_B>です (例:managed-node-01.example.com-to-managed-node-02.example.com)。ロールは、外部(管理対象外)ノードで Libreswan を設定できないことに注意してください。そのようなピアでは手動で設定を作成する必要があります。auth_method: psk-
ピア間の PSK 認証を有効にします。ロールはコントロールノードで
opensslを使用して PSK を作成します。 auto: & lt;startup_method>-
接続の起動方法を指定します。有効な値は
add、ondemand、start、およびignoreです。詳細は、Libreswan がインストールされているシステム上のipsec.conf(5)man ページを参照してください。この変数のデフォルト値は null です。この値は自動起動操作を実行しないことを示します。 vpn_manage_firewall: true-
ロールにより、管理対象ノード上の
firewalldサービスで必要なポートを開くことを指定します。 vpn_manage_selinux: true- ロールにより、IPsec ポートに必要な SELinux ポートタイプを設定することを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.vpn/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
接続が正常に開始されたことを確認します。次に例を示します。
ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"' ... 006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'
# ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"' ... 006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、VPN 接続がアクティブでないと成功しないことに注意してください。Playbook 内の
auto変数をstart以外の値に設定する場合は、まず管理対象ノードで接続を手動でアクティブ化する必要がある場合があります。
31.2. vpn RHEL システムロールを使用して、個別のデータプレーンとコントロールプレーンおよび PSK 認証による IPsec ホスト間 VPN を設定する リンクのコピーリンクがクリップボードにコピーされました!
ホスト間 VPN は、2 つのデバイス間で直接、安全で暗号化された接続を確立し、アプリケーションはインターネットなどの安全でないネットワーク上で安全に通信できるようにします。
認証の場合、事前共有キー(PSK)は、2 つのピアにのみ知られている単一の共有秘密を使用する簡単な方法です。このアプローチは、デプロイメントの容易さが優先される基本的なセットアップに設定が簡単で、理想的です。ただし、キーは厳密に機密に保つ必要があります。鍵にアクセスできる攻撃者は、接続が危険にさらされる可能性があります。
たとえば、制御メッセージが傍受または中断されるリスクを最小限に抑えることでセキュリティーを強化するために、データトラフィックと制御トラフィックの両方に個別の接続を設定できます。vpn RHEL システムロールを使用すると、個別のデータプレーンとコントロールプレーンおよび PSK 認証を使用して IPsec ホスト間接続を作成するプロセスを自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
hosts: <list>VPN を設定するホストを含む YAML ディクショナリーを定義します。接続の名前は
<name>-<IP_address_A>-to-<IP_address_B>です (例:control_plane_vpn-203.0.113.1-to-198.51.100.2)。このロールは、各管理対象ノード上の VPN 接続を設定します。ロールは、外部(管理対象外)ノードで Libreswan を設定できないことに注意してください。そのようなホストでは手動で設定を作成する必要があります。
auth_method: psk-
ホスト間の PSK 認証を有効にします。ロールはコントロールノードで
opensslを使用して事前共有鍵を作成します。 auto: & lt;startup_method>-
接続の起動方法を指定します。有効な値は
add、ondemand、start、およびignoreです。詳細は、Libreswan がインストールされているシステム上のipsec.conf(5)man ページを参照してください。この変数のデフォルト値は null です。この値は自動起動操作を実行しないことを示します。 vpn_manage_firewall: true-
ロールにより、管理対象ノード上の
firewalldサービスで必要なポートを開くことを指定します。 vpn_manage_selinux: true- ロールにより、IPsec ポートに必要な SELinux ポートタイプを設定することを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.vpn/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
接続が正常に開始されたことを確認します。次に例を示します。
ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "control_plane_vpn-203.0.113.1-to-198.51.100.2"' ... 006 #3: "control_plane_vpn-203.0.113.1-to-198.51.100.2", type=ESP, add_time=1741860073, inBytes=0, outBytes=0, maxBytes=2^63B, id='198.51.100.2'
# ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "control_plane_vpn-203.0.113.1-to-198.51.100.2"' ... 006 #3: "control_plane_vpn-203.0.113.1-to-198.51.100.2", type=ESP, add_time=1741860073, inBytes=0, outBytes=0, maxBytes=2^63B, id='198.51.100.2'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、VPN 接続がアクティブでないと成功しないことに注意してください。Playbook 内の
auto変数をstart以外の値に設定する場合は、まず管理対象ノードで接続を手動でアクティブ化する必要がある場合があります。
31.3. vpn RHEL システムロールを使用した PSK 認証による IPsec サイト間 VPN の設定 リンクのコピーリンクがクリップボードにコピーされました!
サイト間 VPN は、2 つの異なるネットワーク間で安全で暗号化されたトンネルを確立し、インターネットなどの安全でないパブリックネットワーク全体でシームレスにリンクします。たとえば、これにより、分岐オフィスのデバイスは、同じローカルネットワークのすべての一部であるかのように、企業ヘッドクーティーのリソースにアクセスできるようになります。
認証の場合、事前共有キー(PSK)は、2 つのピアにのみ知られている単一の共有秘密を使用する簡単な方法です。このアプローチは、デプロイメントの容易さが優先される基本的なセットアップに設定が簡単で、理想的です。ただし、キーは厳密に機密に保つ必要があります。鍵にアクセスできる攻撃者は、接続が危険にさらされる可能性があります。
vpn RHEL システムロールを使用すると、PSK 認証を使用して IPsec サイト間接続を作成するプロセスを自動化できます。デフォルトでは、このロールはトンネルベースの VPN を作成します。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
hosts: <list>VPN を設定するゲートウェイを使用して YAML ディクショナリーを定義します。エントリーが Ansible 管理ノードではない場合、以下のように
hostnameパラメーターに完全修飾ドメイン名(FQDN)または IP アドレスを指定する必要があります。... - hosts: ... external-host.example.com: hostname: 192.0.2.1... - hosts: ... external-host.example.com: hostname: 192.0.2.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow このロールは、各管理対象ノード上の VPN 接続を設定します。接続の名前は to
-to-です。たとえば、managed-node-01.example.com-to-managed-node-02.example.comです。ロールは、外部(管理対象外)ノードで Libreswan を設定できないことに注意してください。そのようなピアでは手動で設定を作成する必要があります。サブネット:& lt;yaml_list_of_subnets>- トンネルを介して接続するドメイン間ルーティング(CIDR)形式でサブネットを定義します。
auth_method: psk-
ピア間の PSK 認証を有効にします。ロールはコントロールノードで
opensslを使用して PSK を作成します。 auto: & lt;startup_method>-
接続の起動方法を指定します。有効な値は
add、ondemand、start、およびignoreです。詳細は、Libreswan がインストールされているシステム上のipsec.conf(5)man ページを参照してください。この変数のデフォルト値は null です。この値は自動起動操作を実行しないことを示します。 vpn_manage_firewall: true-
ロールにより、管理対象ノード上の
firewalldサービスで必要なポートを開くことを指定します。 vpn_manage_selinux: true- ロールにより、IPsec ポートに必要な SELinux ポートタイプを設定することを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.vpn/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --syntax-check ~/playbook.yml
$ ansible-playbook --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook ~/playbook.yml
$ ansible-playbook ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
接続が正常に開始されたことを確認します。次に例を示します。
ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"' ... 006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'
# ansible managed-node-01.example.com -m shell -a 'ipsec trafficstatus | grep "managed-node-01.example.com-to-managed-node-02.example.com"' ... 006 #3: "managed-node-01.example.com-to-managed-node-02.example.com", type=ESP, add_time=1741857153, inBytes=38622, outBytes=324626, maxBytes=2^63B, id='@managed-node-02.example.com'Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、VPN 接続がアクティブでないと成功しないことに注意してください。Playbook 内の
auto変数をstart以外の値に設定する場合は、まず管理対象ノードで接続を手動でアクティブ化する必要がある場合があります。
31.4. vpn RHEL システムロールを使用して証明書ベースの認証による IPsec メッシュ VPN を設定する リンクのコピーリンクがクリップボードにコピーされました!
IPsec メッシュは、すべてのサーバーがセキュアで、他のすべてのサーバーと直接通信できる、完全に相互接続されたネットワークを作成します。これは、複数のデータセンターやクラウドプロバイダーにまたがる分散データベースクラスターまたは高可用性環境に適しています。各サーバー間で直接暗号化されたトンネルを確立することで、中央のボトルネックなしに通信をセキュアにすることができます。
認証には、認証局(CA)によって管理されるデジタル証明書を使用すると、安全性が高く、スケーラブルなソリューションが提供されます。メッシュの各ホストは、信頼できる CA によって署名された証明書を表示します。このメソッドは、強力な検証可能な認証を提供し、ユーザー管理を簡素化します。アクセスは CA で一元的に付与または取り消でき、Libreswan は、証明書失効リスト(CRL)に対して各証明書をチェックし、証明書がリストに表示されている場合はアクセスを拒否することで、これを強制します。
vpn RHEL システムロールを使用すると、証明書ベースの認証による管理対象ノード間の VPN メッシュの設定を自動化できます。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 各管理対象ノード用に PKCS #12 ファイルを用意した。
各ファイルには次のものを含めます。
- サーバーの秘密鍵
- サーバー証明書
- CA 証明書
- 中間証明書 (必要な場合)
-
ファイル名は
<managed_node_name_as_in_the_inventory>.p12とします。 - ファイルは Playbook と同じディレクトリーに保存します。
サーバー証明書には次のフィールドを含めます。
-
Extended Key Usage (EKU) を
TLS Web Server Authenticationに設定します。 - コモンネーム (CN) またはサブジェクト代替名 (SAN) を、ホストの完全修飾ドメイン名 (FQDN) に設定します。
- X509v3 CRL ディストリビューションポイントには、証明書失効リスト(CRL)の URL が含まれます。
-
Extended Key Usage (EKU) を
手順
~/inventoryファイルを編集し、cert_name変数を追加します。managed-node-01.example.com cert_name=managed-node-01.example.com managed-node-02.example.com cert_name=managed-node-02.example.com managed-node-03.example.com cert_name=managed-node-03.example.com
managed-node-01.example.com cert_name=managed-node-01.example.com managed-node-02.example.com cert_name=managed-node-02.example.com managed-node-03.example.com cert_name=managed-node-03.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow cert_name変数は、各ホストの証明書で使用されるコモンネーム (CN) フィールドの値に設定します。通常、CN フィールドは完全修飾ドメイン名 (FQDN) に設定します。機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。pkcs12_pwd: <password>
pkcs12_pwd: <password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
opportunistic: true-
複数ホスト間のオポチュニスティックメッシュを有効にします。
policies変数は、暗号化する必要があるサブネットとホストトラフィックを暗号化し、どれがプレーンテキスト接続を使用するかを定義します。 auth_method: cert- 証明書ベースの認証を有効にします。これを行うには、インベントリーで各管理対象ノードの証明書のニックネームを指定する必要があります。
policies: <list_of_policies>Libreswan ポリシーを YAML リスト形式で定義します。
デフォルトのポリシーは
private-or-clearです。これをprivateに変更するには、上記の Playbook に、デフォルトのcidrエントリーに応じた適切なポリシーを含めます。Ansible コントロールノードが管理対象ノードと同じ IP サブネットにある場合は、Playbook の実行中に SSH 接続が失われるのを防ぐために、コントロールノードの IP アドレスに
clearポリシーを追加します。たとえば、メッシュを192.0.2.0/24サブネット用に設定する必要があり、コントロールノードが IP アドレス192.0.2.1を使用する場合、Playbook に示されているように、192.0.2.1/32のclearポリシーが必要です。ポリシーの詳細は、Libreswan がインストールされているシステム上の
ipsec.conf(5)man ページを参照してください。vpn_manage_firewall: true-
ロールにより、管理対象ノード上の
firewalldサービスで必要なポートを開くことを指定します。 vpn_manage_selinux: true- ロールにより、IPsec ポートに必要な SELinux ポートタイプを設定することを指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.vpn/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
メッシュ内のノードで、別のノードに ping を送信して接続をアクティブ化します。
ping managed-node-02.example.com
[root@managed-node-01]# ping managed-node-02.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 接続がアクティブであることを確認します。
ipsec trafficstatus 006 #2: "private#192.0.2.0/24"[1] ...192.0.2.2, type=ESP, add_time=1741938929, inBytes=372408, outBytes=545728, maxBytes=2^63B, id='CN=managed-node-02.example.com'
[root@managed-node-01]# ipsec trafficstatus 006 #2: "private#192.0.2.0/24"[1] ...192.0.2.2, type=ESP, add_time=1741938929, inBytes=372408, outBytes=545728, maxBytes=2^63B, id='CN=managed-node-02.example.com'Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第32章 RHEL システムロールを使用した Microsoft SQL Server の設定 リンクのコピーリンクがクリップボードにコピーされました!
microsoft.sql.server Ansible システムロールを使用して、Microsoft SQL Server のインストールと管理を自動化できます。このロールは、mssql TuneD プロファイルを適用して Red Hat Enterprise Linux (RHEL) を最適化し、SQL Server のパフォーマンスとスループットを向上させます。
このロールは、インストール中に SQL Server および関連パッケージのリポジトリーを管理対象ホストに追加します。これらのリポジトリー内のパッケージは、Microsoft によって提供、保守、ホストされています。
32.1. microsoft.sql.server Ansible システムロールと既存の証明書ファイルを使用して SQL Server をインストールおよび設定する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションに Microsoft SQL Server データベースが必要な場合は、TLS 暗号化を使用して SQL Server を設定し、アプリケーションとデータベース間のセキュアな通信を有効にできます。microsoft.sql.server Ansible システムロールを使用すると、このプロセスを自動化し、TLS 暗号化を使用して SQL Server をリモートでインストールおよび設定できます。Playbook で、既存の秘密鍵と、認証局 (CA) によって発行された TLS 証明書を使用できます。
管理対象ホストの RHEL バージョンに応じて、インストールできる SQL Server のバージョンが異なります。
- RHEL 7.9: SQL Server 2017 および 2019
- RHEL 8: SQL Server 2017、2019、および 2022
- RHEL 9.4 以降: SQL Server 2022
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-microsoft-sqlパッケージまたはmicrosoft.sqlコレクションコントロールノードがインストールされている。 - 管理対象ノードに 2 GB 以上の RAM がインストールされている。
- 管理対象ノードが、RHEL 7.9、RHEL 8、RHEL 9.4 以降のいずれかのバージョンを使用している。
-
証明書が、Playbook と同じディレクトリーの
sql_crt.pemファイルに保存されている。 -
秘密鍵が、Playbook と同じディレクトリーの
sql_cert.keyファイルに保存されている。 - SQL クライアントによって証明書を発行した CA が信頼されている。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。sa_pwd: <sa_password>
sa_pwd: <sa_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
mssql_tls_enable: true-
TLS 暗号化を有効にします。この設定を有効にする場合は、
mssql_tls_certとmssql_tls_private_keyも定義する必要があります。 mssql_tls_self_sign: false-
使用する証明書が自己署名されているかどうかを示します。ロールはこの設定に基づいて、証明書を信頼するために
-C引数を指定してsqlcmdコマンドを実行するかどうかを決定します。 mssql_tls_cert: <path>-
コントロールノードに保存されている TLS 証明書へのパスを設定します。ロールは、このファイルを管理対象ノードの
/etc/pki/tls/certs/ディレクトリーにコピーします。 mssql_tls_private_key: <path>-
コントロールノード上の TLS 秘密鍵へのパスを設定します。ロールは、このファイルを管理対象ノードの
/etc/pki/tls/private/ディレクトリーにコピーします。 mssql_tls_force: true- 宛先ディレクトリー内の TLS 証明書および秘密鍵を置き換えます (存在する場合)。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/microsoft.sql-server/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SQL Server ホストで、
-Nパラメーターを指定したsqlcmdユーティリティーを使用して、SQL Server への暗号化された接続を確立し、クエリーを実行します。次に例を示します。/opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'
$ /opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが成功した場合、サーバーへの接続は TLS で暗号化されています。
32.2. microsoft.sql.server Ansible システムロールと IdM から発行された TLS 証明書を使用して SQL Server をインストールおよび設定する リンクのコピーリンクがクリップボードにコピーされました!
アプリケーションに Microsoft SQL Server データベースが必要な場合は、TLS 暗号化を使用して SQL Server を設定し、アプリケーションとデータベース間のセキュアな通信を有効にできます。SQL Server ホストが Red Hat Enterprise Linux Identity Management (IdM) ドメインのメンバーである場合、certmonger サービスによって証明書要求と将来の更新を管理できます。
microsoft.sql.server Ansible システムロールを使用すると、このプロセスを自動化できます。TLS 暗号化を使用して SQL Server をリモートでインストールおよび設定することができます。microsoft.sql.server ロールは、certificate Ansible システムロールを使用して certmonger を設定し、IdM から証明書を要求します。
管理対象ホストの RHEL バージョンに応じて、インストールできる SQL Server のバージョンが異なります。
- RHEL 7.9: SQL Server 2017 および 2019
- RHEL 8: SQL Server 2017、2019、および 2022
- RHEL 9.4 以降: SQL Server 2022
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-microsoft-sqlパッケージまたはmicrosoft.sqlコレクションコントロールノードがインストールされている。 - 管理対象ノードに 2 GB 以上の RAM がインストールされている。
- 管理対象ノードが、RHEL 7.9、RHEL 8、RHEL 9.4 以降のいずれかのバージョンを使用している。
- 管理対象ノードが、Red Hat Enterprise Linux Identity Management (IdM) ドメインに登録されている。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。sa_pwd: <sa_password>
sa_pwd: <sa_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
mssql_tls_enable: true-
TLS 暗号化を有効にします。この設定を有効にする場合は、
mssql_tls_certificatesも定義する必要があります。 mssql_tls_certificates-
certificateロールの設定を含む YAML ディクショナリーのリスト。 name: <file_name>-
証明書と秘密鍵のベース名を定義します。
certificateロールは、証明書を/etc/pki/tls/certs/<file_name>.crtに保存し、秘密鍵を/etc/pki/tls/private/<file_name>.keyファイルに保存します。 dns: <hostname_or_list_of_hostnames>-
発行された証明書のサブジェクト代替名 (SAN) フィールドに含まれるホスト名を設定します。ワイルドカード (
*) を使用することも、YAML リスト形式で複数の名前を指定することもできます。 ca: <ca_type>-
certificateロールが証明書を要求する方法を定義します。ホストが IdM ドメインに登録されている場合はこの変数をipaに設定し、自己署名証明書を要求する場合はself-signに設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/microsoft.sql-server/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SQL Server ホストで、
-Nパラメーターを指定したsqlcmdユーティリティーを使用して、SQL Server への暗号化された接続を確立し、クエリーを実行します。次に例を示します。/opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'
$ /opt/mssql-tools/bin/sqlcmd -N -S server.example.com -U "sa" -P <sa_password> -Q 'SELECT SYSTEM_USER'Copy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが成功した場合、サーバーへの接続は TLS で暗号化されています。
32.3. microsoft.sql.server Ansible システムロールとカスタムストレージパスを使用して SQL Server をインストールおよび設定する リンクのコピーリンクがクリップボードにコピーされました!
microsoft.sql.server Ansible システムロールを使用して新しい SQL Server をインストールおよび設定する場合、データディレクトリーとログディレクトリーのパスとモードをカスタマイズできます。たとえば、データベースとログファイルを、より多くのストレージ容量を持つ別のディレクトリーに保存する場合は、カスタムパスを設定します。
データまたはログのパスを変更して Playbook を再実行すると、以前使用したディレクトリーとそのすべてのコンテンツが元のパスに残ります。新しい場所には新しいデータベースとログのみが保存されます。
| 型 | ディレクトリー | Mode | 所有者 | グループ |
|---|---|---|---|---|
| データ |
|
|
| |
| Logs |
|
|
| |
[a]
ディレクトリーが存在する場合、ロールはモードを保持します。ディレクトリーが存在しない場合、ロールはディレクトリーを作成するときに管理対象ノードにデフォルトの umask を適用します。
| ||||
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-microsoft-sqlパッケージまたはmicrosoft.sqlコレクションコントロールノードがインストールされている。 - 管理対象ノードに 2 GB 以上の RAM がインストールされている。
- 管理対象ノードが、RHEL 7.9、RHEL 8、RHEL 9.4 以降のいずれかのバージョンを使用している。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。sa_pwd: <sa_password>
sa_pwd: <sa_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
既存の Playbook ファイル (例:
~/playbook.yml) を編集し、ストレージおよびログ関連の変数を追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
mssql_datadir_modeおよびmssql_logdir_mode- 権限モードを設定します。ロールが値を 8 進数ではなく文字列として解析するように、値を一重引用符で囲んで指定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/microsoft.sql-server/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
データディレクトリーのモードを表示します。
ansible managed-node-01.example.com -m command -a 'ls -ld /var/lib/mssql/' drwx------. 12 mssql mssql 4096 Jul 3 13:53 /var/lib/mssql/
$ ansible managed-node-01.example.com -m command -a 'ls -ld /var/lib/mssql/' drwx------. 12 mssql mssql 4096 Jul 3 13:53 /var/lib/mssql/Copy to Clipboard Copied! Toggle word wrap Toggle overflow ログディレクトリーのモードを表示します。
ansible managed-node-01.example.com -m command -a 'ls -ld /var/log/mssql/' drwx------. 12 mssql mssql 4096 Jul 3 13:53 /var/log/mssql/
$ ansible managed-node-01.example.com -m command -a 'ls -ld /var/log/mssql/' drwx------. 12 mssql mssql 4096 Jul 3 13:53 /var/log/mssql/Copy to Clipboard Copied! Toggle word wrap Toggle overflow
32.4. microsoft.sql.server Ansible システムロールと AD 統合を使用して SQL Server をインストールおよび設定する リンクのコピーリンクがクリップボードにコピーされました!
Microsoft SQL Server を Active Directory (AD) に統合して、AD ユーザーが SQL Server に対して認証できるようにすることができます。microsoft.sql.server Ansible システムロールを使用すると、このプロセスを自動化し、SQL Server をリモートでインストールして適切に設定できます。ただし、Playbook を実行した後、AD および SQL Server で手動の手順を実行する必要があることに注意してください。
管理対象ホストの RHEL バージョンに応じて、インストールできる SQL Server のバージョンが異なります。
- RHEL 7.9: SQL Server 2017 および 2019
- RHEL 8: SQL Server 2017、2019、および 2022
- RHEL 9.4 以降: SQL Server 2022
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。 -
ansible-collection-microsoft-sqlパッケージまたはmicrosoft.sqlコレクションコントロールノードがインストールされている。 - 管理対象ノードに 2 GB 以上の RAM がインストールされている。
- 管理対象ノードが、RHEL 7.9、RHEL 8、RHEL 9.4 以降のいずれかのバージョンを使用している。
- ネットワーク内で AD ドメインを利用できる。
- AD に逆引き DNS (RDNS) ゾーンが存在し、ゾーンに各 AD ドメインコントローラー (DC) の Pointer (PTR) リソースレコードが含まれている。
- 管理対象ホストのネットワーク設定で、AD DNS サーバーが使用される。
管理対象ホストが次の DNS エントリーを解決できる。
- AD DC のホスト名と完全修飾ドメイン名 (FQDN) が両方とも IP アドレスに解決される。
- AD DC の IP アドレスが FQDN に解決される。
手順
機密性の高い変数を暗号化されたファイルに保存します。
vault を作成します。
ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>
$ ansible-vault create ~/vault.yml New Vault password: <vault_password> Confirm New Vault password: <vault_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-vault createコマンドでエディターが開いたら、機密データを<key>: <value>形式で入力します。sa_pwd: <sa_password> sql_pwd: <SQL_AD_password> ad_admin_pwd: <AD_admin_password>
sa_pwd: <sa_password> sql_pwd: <SQL_AD_password> ad_admin_pwd: <AD_admin_password>Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存して、エディターを閉じます。Ansible は vault 内のデータを暗号化します。
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow サンプル Playbook で指定されている設定は次のとおりです。
mssql_ad_configure: true- AD に対する認証を有効にします。
mssql_ad_join: true-
ad_integrationRHEL システムロールを使用して、管理対象ノードを AD に参加させます。ロールは、ad_integration_realm、ad_integration_user、およびad_integration_password変数の設定を使用してドメインに参加します。 mssql_ad_sql_user: <username>- 管理目的でロールが AD および SQL Server に作成する AD アカウントの名前を設定します。
ad_integration_user: <AD_user>-
マシンをドメインに参加させる権限と、
mssql_ad_sql_userで指定された AD ユーザーを作成する権限を持つ AD ユーザーの名前を設定します。
Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/microsoft.sql-server/README.mdファイルを参照してください。Playbook の構文を検証します。
ansible-playbook --ask-vault-pass --syntax-check ~/playbook.yml
$ ansible-playbook --ask-vault-pass --syntax-check ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
ansible-playbook --ask-vault-pass ~/playbook.yml
$ ansible-playbook --ask-vault-pass ~/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow SQL Server に対して認証できる AD ユーザーを許可します。SQL Server で、次の手順を実行します。
Administratorユーザーの Kerberos チケットを取得します。kinit Administrator@ad.example.com
$ kinit Administrator@ad.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow AD ユーザーを許可します。
/opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'
$ /opt/mssql-tools/bin/sqlcmd -S. -Q 'CREATE LOGIN [AD\<AD_user>] FROM WINDOWS;'Copy to Clipboard Copied! Toggle word wrap Toggle overflow SQL Server へのアクセスを許可するすべての AD ユーザーに対してこの手順を繰り返します。
検証
SQL Server を実行する管理対象ノードで、以下を実行します。
AD ユーザーの Kerberos チケットを取得します。
kinit <AD_user>@ad.example.com
$ kinit <AD_user>@ad.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow sqlcmdユーティリティーを使用して SQL Server にログインし、クエリーを実行します。次に例を示します。/opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'
$ /opt/mssql-tools/bin/sqlcmd -S. -Q 'SELECT SYSTEM_USER'Copy to Clipboard Copied! Toggle word wrap Toggle overflow