RHEL システムロールを使用した管理タスクおよび設定タスク
Red Hat Ansible Automation Platform Playbook を使用して複数のホストに RHEL をデプロイするための一貫性および反復性のある設定
概要
多様性を受け入れるオープンソースの強化 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。まずは、マスター (master)、スレーブ (slave)、ブラックリスト (blacklist)、ホワイトリスト (whitelist) の 4 つの用語の置き換えから始めます。この取り組みは膨大な作業を要するため、今後の複数のリリースで段階的に用語の置き換えを実施して参ります。詳細は、Red Hat CTO である Chris Wright のメッセージ を参照してください。
Red Hat ドキュメントへのフィードバック (英語のみ) リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ドキュメントに関するご意見やご感想をお寄せください。また、改善点があればお知らせください。
特定の文章に関するコメントの送信
- Multi-page HTML 形式でドキュメントを表示し、ページが完全にロードされてから右上隅に Feedback ボタンが表示されていることを確認します。
- カーソルを使用して、コメントを追加するテキスト部分を強調表示します。
- 強調表示されたテキストの近くに表示される Add Feedback ボタンをクリックします。
- フィードバックを追加し、Submit をクリックします。
Bugzilla からのフィードバック送信 (アカウントが必要)
- Bugzilla の Web サイトにログインします。
- Version メニューから正しいバージョンを選択します。
- Summary フィールドにわかりやすいタイトルを入力します。
- Description フィールドに、ドキュメントの改善に関するご意見を記入してください。ドキュメントの該当部分へのリンクも追加してください。
- Submit Bug をクリックします。
第1章 RHEL System Roles を使用するための制御ノードと管理対象ノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
個々の RHEL システムロールを使用してサービスおよび設定を管理する前に、関連するホストを準備します。
1.1. RHEL システムロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、Ansible ロールおよびモジュールのコレクションです。RHEL システムロールは、複数の RHEL システムをリモートで管理するための設定インターフェイスを提供します。このインターフェイスは、RHEL の複数のバージョンにわたるシステム設定の管理と、新しいメジャーリリースの導入を可能にします。
Red Hat Enterprise Linux 8 のインターフェイスは、現在、以下のロールから設定されます。
-
証明書の発行更新 (
certificate) -
コックピット (
cockpit) -
Firewalld (
firewall) -
HA クラスター (
ha_cluster) -
カーネルダンプ (
kdump) -
カーネル設定 (
kernel_settings) -
ロギング (
logging) -
メトリック (PCP) (
metrics) -
Microsoft SQL Server (
microsoft.sql.server) -
ネットワーキング (
network) -
Network Bound Disk Encryption クライアントと Network Bound Disk Encryption サーバー (
nbde_clientとnbde_server) -
Postfix (
postfix) -
SELinux (
SELinux) -
SSH クライアント (
ssh) -
SSH サーバー (
sshd) -
ストレージ (
storage) -
端末セッションの録画 (
tlog) -
時刻同期 (
timesync) -
VPN (
vpn)
これらのロールはすべて、AppStream リポジトリーで利用可能な rhel-system-roles パッケージで提供されます。
1.2. RHEL システムロールの用語 リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントでは、以下の用語を確認できます。
- Ansible Playbook
- Playbook は、Ansible の設定、デプロイメント、およびオーケストレーションの言語です。リモートシステムを強制するポリシーや、一般的な IT プロセスで一連の手順を説明することができます。
- コントロールノード
- Ansible がインストールされているマシン。コマンドおよび Playbook を実行でき、すべてのコントロールノードから /usr/bin/ansible または /usr/bin/ansible-playbook を起動します。Python がインストールされているすべてのコンピューターをコントロールノードとして使用できます。ラップトップ、共有デスクトップ、およびサーバーですべての Ansible を実行できます。ただし、Windows マシンをコントロールノードとして使用することはできません。複数のコントロールノードを使用できます。
- インベントリー
- 管理対象ノードの一覧。インベントリーファイルはホストファイルとも呼ばれます。インベントリーでは、各管理対象ノードに対して IP アドレスなどの情報を指定できます。また、インベントリーは管理ノードを編成し、簡単にスケーリングできるようにグループの作成およびネスト化が可能です。インベントリーについての詳細は、インベントリーの操作セクションを参照してください。
- 管理ノード
- Ansible で管理するネットワークデバイス、サーバー、またはその両方。管理対象ノードは、ホストと呼ばれることもあります。Ansible が管理ノードにはインストールされません。
1.3. コントロールノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
RHEL には、サポート範囲が限定された Ansible Core が AppStream リポジトリーに含まれています。Ansible の追加サポートが必要な場合は、Red Hat に連絡して、Ansible Automation Platform サブスクリプションの詳細を確認してください。
Red Hat Ansible Automation Platform サブスクリプションがない場合は、RHEL 8.6 以降では Ansible Core を使用します。ansible-2-for-rhel-8-x86_64-rpms リポジトリーから Ansible Engine をインストールしないでください。このリポジトリーのパッケージは、RHEL 8.6 以降の Ansible Automation コンテンツと互換性がない可能性があります。また、Red Hat は、RHEL と同じ期間、Ansible Engine のセキュリティー更新とバグ修正を提供しません。詳細は、RHEL 8.6 以降での Ansible の使用 を参照してください。
前提条件
- RHEL 8.6 以降がインストールされている。
- システムをカスタマーポータルに登録している。
-
Red Hat Enterprise Linux Serverサブスクリプションをシステムにアタッチしている。 -
カスタマーポータルアカウントで利用可能な場合は、
Ansible Automation Platformサブスクリプションをシステムにアタッチしている。
手順
rhel-system-rolesパッケージをインストールします。yum install rhel-system-roles
[root@control-node]# yum install rhel-system-rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、
Ansible Coreを依存関係としてインストールします。後で Playbook を管理および実行するために使用するユーザーを作成します。
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 の公開鍵と秘密鍵を作成します。
ssh-keygen
[ansible@control-node]$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): password ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow キーファイルの推奨されるデフォルトの場所を使用します。
- オプション: 接続を確立するたびに Ansible が SSH キーのパスワードを要求しないように、SSH エージェントを設定します。
~/.ansible.cfgファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定により、以下が可能になります。
- Ansible は、指定されたインベントリーファイルでホストを管理します。
-
Ansible は、管理対象ノードへの SSH 接続を確立するときに、
remote_userパラメーターで設定されたアカウントを使用します。 Ansible は
sudoユーティリティーを使用して、rootユーザーとして管理対象ノードでタスクを実行します。セキュリティー上の理由から、管理対象ノードで
sudoを設定して、rootになるリモートユーザーのパスワードの入力を要求します。~/.ansible.cfgでbecome_ask_pass=True設定を指定すると、Playbook の実行時に Ansible によってこのパスワードの入力が求められます。
~/.ansible.cfgファイルの設定は優先度が高く、グローバルな/etc/ansible/ansible.cfgファイルの設定をオーバーライドします。~/inventoryファイルを作成します。たとえば、以下は、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 アドレスを指定します。
1.4. 管理対象ノードの準備 リンクのコピーリンクがクリップボードにコピーされました!
Ansible は、管理対象ホストでエージェントを使用しません。唯一の要件は、RHEL にデフォルトでインストールされる Python と、管理対象ホストへの SSH アクセスです。
ただし、root ユーザーとして SSH に直接アクセスすると、セキュリティー上のリスクが生じる可能性があります。したがって、管理対象ノードを準備するときは、このノードでローカルユーザーを作成し、sudo ポリシーを設定します。コントロールノードの Ansible は、このアカウントを使用して管理対象ノードにログインし、root などの別のユーザーとして Playbook を実行できます。
前提条件
- 制御ノードを準備している。
手順
ユーザーを作成します。
useradd ansible
[root@managed-node-01]# useradd ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 制御ノードは後でこのユーザーを使用して、このホストへの SSH 接続を確立します。
ansibleユーザーにパスワードを設定します。passwd ansible
[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 公開鍵を管理対象ノードにコピーします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 制御ノードでコマンドをリモートで実行して、SSH 接続を確認します。
ssh managed-node-01.example.com whoami
[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 ページを参照してください。
1.5. 制御ノードから管理対象ノードへのアクセスの確認 リンクのコピーリンクがクリップボードにコピーされました!
制御ノードを設定し、管理対象ノードを準備したら、Ansible が管理対象ノードに接続できることをテストします。
制御ノードで ansible ユーザーとしてこの手順を実行します。
前提条件
- 制御ノードの準備 の説明に従って、制御ノードを準備しました。
- 管理対象ノードの準備 の説明に従って、少なくとも 1 つの管理対象ノードを準備しました。
- ホストグループで Playbook を実行する場合、管理対象ノードは制御ノードのインベントリーファイルにリストされます。
手順
Ansible の
pingモジュールを使用して、すべての管理対象ホストでコマンドを実行できることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ハードコーディングされた
すべてのホストグループには、インベントリーファイルにリストされているすべてのホストが動的に含まれます。Ansible の
commandモジュールを使用して、管理対象ホストでwhoamiユーティリティーを実行します。ansible managed-node-01.example.com -m command -a whoami
[ansible@control-node]$ ansible managed-node-01.example.com -m command -a whoami BECOME password: password managed-node-01.example.com | CHANGED | rc=0 >> rootCopy to Clipboard Copied! Toggle word wrap Toggle overflow コマンドが
rootを返す場合は、管理対象ノードでsudoが正しく設定されており、権限昇格が機能しています。
第2章 RHEL システムロールの自動化を有効にするためのパッケージの更新 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8.6 リリース以降、Ansible Engine はサポートされなくなりました。代わりに、現在および将来の RHEL バージョンには Ansible Core が含まれています。
RHEL 8.6 の Ansible Core を使用して、Red Hat 製品によって作成または生成された Ansible 自動化コンテンツを有効化できます。
Ansible Core には、ansible-playbook や ansible コマンドなどの Ansible コマンドラインツールと、ビルトイン Ansible プラグイン のセットが含まれています。
2.1. Ansible Engine と Ansible Core の違い リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8.5 以前のバージョンでは、Ansible Engine 2.9 を含む別の Ansible リポジトリーにアクセスして、Red Hat システムに対して Ansible に基づき自動化を有効にしていました。
Ansible サブスクリプションなしで Ansible Engine を使用する場合、サポート範囲は RHEL システムロール、Insights 修復 Playbook、OpenSCAP Ansible 修復 Playbook などの Red Hat 製品によって作成または生成された AnsiblePlaybook の実行に限定されます。
RHEL 8.6 以降のバージョンでは、Ansible Core が Ansible Engine に置き換わります。ansible-core パッケージは RHEL 9 AppStream リポジトリーに含まれており、Red Hat が提供する自動化コンテンツを有効にします。RHEL での Ansible Core のサポート範囲は、以前の RHEL バージョンと同じです。
- サポートは、RHEL システムロールなど、Red Hat 製品に含まれているか Red Hat 製品によって生成された Ansible Playbook、ロール、モジュール、または Insights によって生成された修復 Playbook に限定されます。
- Ansible Core を使用すると、RHEL システムロールや Insights 修復 Playbook など、サポートされている RHEL Ansible コンテンツのすべての機能を利用できます。
Ansible Engine リポジトリーは RHEL 8.6 でも引き続き使用できます。ただし、セキュリティーまたはバグ修正の更新は受信せず、RHEL 8.6 以降に含まれる Ansible 自動化コンテンツと互換性がない可能性があります。
基盤となるプラットフォームと Core で維持されるモジュールの追加サポートには、Ansible Automation Platform のサブスクリプションが必要です。
2.2. Ansible Engine から Ansible Core への移行 リンクのコピーリンクがクリップボードにコピーされました!
RHEL 8.6 以降のバージョンでは、Ansible Core が Ansible Engine に置き換わります。Ansible Engine から Ansible Core に移行して、Red Hat 製品によって生成された Ansible Automation コンテンツを有効にし、RHEL 8.6 リリースからサポートされている RHEL Ansible コンテンツの必要なすべての機能を取得します。
前提条件
- 1 つ以上の 管理対象ノード (RHEL システムロールで設定するシステム) へのアクセスおよびパーミッション。
- コントロールノード (このシステムから Red Hat Ansible Engine は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
RHEL8.6 以降のバージョンがインストールされています。
cat /etc/redhat-releaseコマンドを使用して、RHEL のバージョンを確認できます。 -
rhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
手順
Ansible Engine をインストールします。
yum remove ansible
# yum remove ansibleCopy to Clipboard Copied! Toggle word wrap Toggle overflow ansible-2-for-rhel-8-x86_64-rpmsリポジトリーを無効にします。subscription-manager repos --disable ansible-2-for-rhel-8-x86_64-rpms
# subscription-manager repos --disable ansible-2-for-rhel-8-x86_64-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow RHEL 8 AppStream リポジトリーで利用可能な Ansible Core をインストールします。
yum install ansible-core
# yum install ansible-coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
ansible-coreパッケージがシステムに存在することを確認します。yum info ansible-core
# yum info ansible-coreCopy to Clipboard Copied! Toggle word wrap Toggle overflow
ansible-core パッケージが実際にシステムに存在する場合、コマンド出力には、パッケージ名、バージョン、リリース、サイズなどに関する情報が表示されます。
第3章 コレクションのインストールと使用 リンクのコピーリンクがクリップボードにコピーされました!
3.1. Ansible コレクションの概要 リンクのコピーリンクがクリップボードにコピーされました!
Ansible コレクションは、新たな方法で自動化を配布、メンテナーンス、および使用します。Playbook、ロール、モジュール、プラグインなど、複数のタイプの Ansible コンテンツを組み合わせることで、柔軟性とスケーラビリティーが向上します。
Ansible Collections は、従来の RHEL システムロール形式に対するオプションです。Ansible Collection 形式で RHEL システムロールを使用するのは、従来の RHEL システムロール形式での使用とほぼ同じです。相違点は、Ansible Collections は 完全修飾コレクション名 (FQCN) という概念を使用する点です。このコレクション名は、namespace と コレクション名 で設定されます。使用する namespace は redhat で、コレクション名 は rhel_system_roles です。したがって、Kernel Settings の従来の RHEL システムロール形式は rhel-system-roles.kernel_settings として表示されますが、Kernel Settings ロールの fully qualified collection name というコレクションを使用すると redhat.rhel_system_roles.kernel_settings (アンダースコア付き) として表示されます。
namespace と コレクション名 を組み合わせると、確実にオブジェクトが一意になります。また、オブジェクトが競合せずに Ansible Collections および namespace 間で共有されます。
3.2. コレクションの構造 リンクのコピーリンクがクリップボードにコピーされました!
コレクションは、Ansible コンテンツのパッケージ形式です。データ構造は以下のようになります。
- docs/: 例も含めてコレクションについてまとめたローカルドキュメント。(ロールがドキュメントを提供する場合)
- galaxy.yml: Ansible Collection パッケージに含まれる MANIFEST.json のソースデータ
Playbook/: Playbook はこちらで利用できます。
- tasks/: include_tasks/import_tasks の使用状況に関する task list files を保管します。
plugins/: Ansible プラグインおよびモジュールはすべてこちらの各サブディレクトリーから入手できます。
- modules/: Ansible モジュール
- modules_utils/: モジュール開発用の共通コード
- lookup/: プラグインの検索
- filter/: Jinja2 フィルタープラグイン
- connection/: 接続プラグインはデフォルトを使用していない場合に必要です。
- roles/: Ansible ロール用ディレクトリー
- tests/: コレクションの内容のテスト
3.3. CLI を使用したコレクションのインストール リンクのコピーリンクがクリップボードにコピーされました!
コレクションは、Playbook、ロール、モジュール、およびプラグインなど、Ansible コンテンツのディストリビューション形式です。
コレクションは、Ansible Galaxy、ブラウザーまたはコマンドラインを使用してインストールできます。
前提条件
- 1 つ以上の 管理対象ノード へのアクセスとアクセス権。
コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
手順
RPM パッケージからコレクションをインストールします。
yum install rhel-system-roles
# yum install rhel-system-rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
インストールが完了すると、ロールは redhat.rhel_system_roles.<role_name> として利用できます。また、各ロールのドキュメントは /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/roles/<role_name>/README.md で確認できます。
検証手順
インストールを確認するには、localhost で check モードで kernel_settings ロールを実行します。Ansible package モジュールに必要な --become パラメーターも使用する必要があります。ただし、パラメーターはシステムを変更しません。
以下のコマンドを実行します。
ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.yml
$ ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コマンド出力の最後の行には、値 failed=0 が含まれている必要があります。
localhost の後のコンマは必須です。リストにホストが 1 つしかない場合でも、追加する必要があります。これがないと、ansible-playbook は localhost をファイルまたはディレクトリーとして識別します。
3.4. Automation Hub からのコレクションのインストール リンクのコピーリンクがクリップボードにコピーされました!
Automation Hub を使用している場合は、Automation Hub でホストされている RHEL システムロールコレクションをインストールできます。
前提条件
- 1 つ以上の 管理対象ノード へのアクセスとアクセス権。
コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
手順
-
ansible.cfg設定ファイルでコンテンツのデフォルトソースとして Red Hat Automation Hub を定義します。コンテンツについては、プライマリーソースとしての Red Hat Automation Hub の設定 を参照してください。 Automation Hub から
redhat.rhel_system_rolesコレクションをインストールします。ansible-galaxy collection install redhat.rhel_system_roles
# ansible-galaxy collection install redhat.rhel_system_rolesCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールが完了すると、ロールは
redhat.rhel_system_roles.<role_name>として利用できます。また、各ロールのドキュメントは/usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/roles/<role_name>/README.mdで確認できます。
検証手順
インストールを確認するには、localhost で check モードで kernel_settings ロールを実行します。Ansible package モジュールに必要な --become パラメーターも使用する必要があります。ただし、パラメーターはシステムを変更しません。
以下のコマンドを実行します。
ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.yml
$ ansible-playbook -c local -i localhost, --check --become /usr/share/ansible/collections/ansible_collections/redhat/rhel_system_roles/tests/kernel_settings/tests_default.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
コマンド出力の最後の行には、値 failed=0 が含まれている必要があります。
localhost の後のコンマは必須です。リストにホストが 1 つしかない場合でも、追加する必要があります。これがないと、ansible-playbook は localhost をファイルまたはディレクトリーとして識別します。
3.5. コレクションを使用したローカルロギングシステムロールの適用 リンクのコピーリンクがクリップボードにコピーされました!
以下の例では、コレクションを使用して Ansible Playbook を準備および適用し、別個のマシンにロギングソリューションを設定します。
前提条件
- Galaxy コレクションがインストールされている。
手順
必要なロールを定義する Playbook を作成します。
新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容を YAML ファイルに挿入します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
特定のインベントリーで Playbook を実行します。
ansible-playbook -i inventory-file logging-playbook.yml
# ansible-playbook -i inventory-file logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、
- inventory-file は、インベントリーファイルの名前に置き換えます。
- logging-playbook.yml は、使用する Playbook に置き換えます。
検証手順
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1
# 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/messages ログを表示します。以下に例を示します。cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: test
# cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow hostnameはクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーの名前 (この場合はroot) が表示されます。
第4章 RHEL の Ansible IPMI モジュール リンクのコピーリンクがクリップボードにコピーされました!
4.1. rhel_mgmt コレクション リンクのコピーリンクがクリップボードにコピーされました!
Intelligent Platform Management Interface (IPMI) は、ベースボード管理コントローラー (BMC) デバイスと通信するための一連の標準プロトコルの仕様です。IPMI モジュールを使用すると、ハードウェア管理の自動化を有効にしてサポートできます。IPMI モジュールは次の場所で使用できます。
-
rhel_mgmtコレクション。パッケージ名はansible-collection-redhat-rhel_mgmtです。 -
新しい
ansible-collection-redhat-rhel_mgmtパッケージの一部である RHEL 8 AppStream。
次の IPMI モジュールが rhel_mgmt コレクションで使用可能です。
-
ipmi_boot: ブートデバイスの順序の管理 -
ipmi_power: マシンの電力管理
IPMI モジュールに使用される必須パラメーターは次のとおりです。
-
ipmi_bootパラメーター:
| モジュール名 | 説明 |
|---|---|
| name | BMC のホスト名または IP アドレス。 |
| password | BMC に接続するためのパスワード |
| bootdev | 次回起動時に使用するデバイス * network * floppy * hd * safe * optical * setup * default |
| User | BMC に接続するためのユーザー名 |
-
ipmi_powerパラメーター:
| モジュール名 | 説明 |
|---|---|
| name | BMC ホスト名または IP アドレス |
| password | BMC に接続するためのパスワード |
| user | BMC に接続するためのユーザー名 |
| State | マシンが目的のステータスにあるかどうかを確認します * on * off * shutdown * reset * boot |
4.2. CLI を使用した rhel mgmt コレクションのインストール リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインを使用して rhel_mgmt コレクションをインストールできます。
前提条件
-
ansible-coreパッケージがインストールされている。
手順
RPM パッケージからコレクションをインストールします。
yum install ansible-collection-redhat-rhel_mgmt
# yum install ansible-collection-redhat-rhel_mgmtCopy to Clipboard Copied! Toggle word wrap Toggle overflow インストールが完了すると、IPMI モジュールは
redhat.rhel_mgmtAnsible コレクションで使用できるようになります。
4.3. ipmi_boot モジュールの使用例 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、Playbook で ipmi_boot モジュールを使用して、次回の起動用に起動デバイスを設定する方法を示しています。わかりやすくするために、ここに示す例では Ansible コントロールホストおよび管理対象ホストと同じホストを使用しているため、Playbook が実行されるのと同じホストでモジュールを実行します。
前提条件
- rhel_mgmt コレクションがインストールされている。
python3-pyghmiパッケージのpyghmiライブラリーが、次のいずれかの場所にインストールされている。- Playbook を実行するホスト。
-
管理対象ホスト。localhost を管理対象ホストとして使用する場合は、代わりに、Playbook を実行するホストに
python3-pyghmiパッケージをインストールします。
- 制御する IPMI BMC は、Playbook を実行するホスト、または管理対象ホスト (localhost を管理対象ホストとして使用していない場合) からネットワーク経由でアクセスできます。モジュールが IPMI プロトコルを使用してネットワーク経由で BMC に接続するため、通常、モジュールによって BMC が設定されているホストはモジュールが実行されているホスト (Ansible 管理対象ホスト) とは異なることに注意してください。
- 適切なレベルのアクセスで BMC にアクセスするためのクレデンシャルがあります。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow localhost に対して Playbook を実行します。
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その結果、出力は値 success を返します。
4.4. ipmi_power モジュールの使用例 リンクのコピーリンクがクリップボードにコピーされました!
この例は、Playbook で ipmi_boot モジュールを使用して、システムがオンになっているかどうかを確認する方法を示しています。わかりやすくするために、ここに示す例では Ansible コントロールホストおよび管理対象ホストと同じホストを使用しているため、Playbook が実行されるのと同じホストでモジュールを実行します。
前提条件
- rhel_mgmt コレクションがインストールされている。
python3-pyghmiパッケージのpyghmiライブラリーが、次のいずれかの場所にインストールされている。- Playbook を実行するホスト。
-
管理対象ホスト。localhost を管理対象ホストとして使用する場合は、代わりに、Playbook を実行するホストに
python3-pyghmiパッケージをインストールします。
- 制御する IPMI BMC は、Playbook を実行するホスト、または管理対象ホスト (localhost を管理対象ホストとして使用していない場合) からネットワーク経由でアクセスできます。モジュールが IPMI プロトコルを使用してネットワーク経由で BMC に接続するため、通常、モジュールによって BMC が設定されているホストはモジュールが実行されているホスト (Ansible 管理対象ホスト) とは異なることに注意してください。
- 適切なレベルのアクセスで BMC にアクセスするためのクレデンシャルがあります。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
Copy 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
出力は値 true を返します。
第5章 RHEL の Redfish モジュール リンクのコピーリンクがクリップボードにコピーされました!
デバイスのリモート管理用の Redfish モジュールは、redhat.rhel_mgmt Ansible コレクションの一部になりました。Redfish モジュールを使用すると、標準の HTTPS トランスポートと JSON 形式を使用して、サーバーに関する情報を取得したり、帯域外 (OOB) コントローラーを介してそれらを制御したりして、ベアメタルサーバーとプラットフォームハードウェアで管理の自動化を簡単に使用できます。
5.1. Redfish モジュール リンクのコピーリンクがクリップボードにコピーされました!
redhat.rhel_mgmt Ansible コレクションは、Redfish 上の Ansible でのハードウェア管理をサポートする Redfish モジュールを提供します。redhat.rhel_mgmt コレクションは ansible-collection-redhat-rhel_mgmt パッケージで利用できます。インストールするには、CLI を使用した redhat.rhel_mgmt コレクションのインストール を参照してください。
次の Redfish モジュールは、redhat.rhel_mgmt コレクションで利用できます。
-
redfish_info:redfish_infoモジュールは、システムインベントリーなどのリモートアウトオブバンド (OOB) コントローラーに関する情報を取得します。 -
redfish_command:redfish_commandモジュールは、ログ管理やユーザー管理などの帯域外 (OOB) コントローラー操作と、システムの再起動、電源のオンとオフなどの電源操作を実行します。 -
redfish_config:redfish_configモジュールは、OOB 設定の変更や BIOS 設定の設定などの OOB コントローラー操作を実行します。
5.2. Redfish モジュールのパラメーター リンクのコピーリンクがクリップボードにコピーされました!
Redfish モジュールに使用されるパラメーターは次のとおりです。
redfish_info パラメーター: | 説明 |
|---|---|
|
| (必須) - OOB コントローラーのベース URI。 |
|
| (必須) - OOB コントローラーで実行するカテゴリーのリスト。デフォルト値は ["Systems"] です。 |
|
| (必須) - OOB コントローラーで実行するコマンドのリスト。 |
|
| OOB コントローラーへの認証用のユーザー名。 |
|
| OOB コントローラーへの認証用のパスワード。 |
redfish_command パラメーター: | 説明 |
|---|---|
|
| (必須) - OOB コントローラーのベース URI。 |
|
| (必須) - OOB コントローラーで実行するカテゴリーのリスト。デフォルト値は ["Systems"] です。 |
|
| (必須) - OOB コントローラーで実行するコマンドのリスト。 |
|
| OOB コントローラーへの認証用のユーザー名。 |
|
| OOB コントローラーへの認証用のパスワード。 |
redfish_config パラメーター: | 説明 |
|---|---|
|
| (必須) - OOB コントローラーのベース URI。 |
|
| (必須) - OOB コントローラーで実行するカテゴリーのリスト。デフォルト値は ["Systems"] です。 |
|
| (必須) - OOB コントローラーで実行するコマンドのリスト。 |
|
| OOB コントローラーへの認証用のユーザー名。 |
|
| OOB コントローラーへの認証用のパスワード。 |
|
| 更新する BIOS 属性。 |
5.3. redfish_info モジュールの使用 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、Playbook で redfish_info モジュールを使用して CPU インベントリーに関する情報を取得する方法を示しています。わかりやすくするために、ここに示す例では Ansible コントロールホストおよび管理対象ホストと同じホストを使用しているため、Playbook が実行されるのと同じホストでモジュールを実行します。
前提条件
-
redhat.rhel_mgmtコレクションがインストールされます。 -
python3-pyghmiパッケージのpyghmiライブラリーが管理対象ホストにインストールされます。管理対象ホストとして localhost を使用する場合は、Playbook を実行するホストにpython3-pyghmiパッケージをインストールします。 - OOB コントローラーアクセスの詳細。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow localhost に対して Playbook を実行します。
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その結果、出力は CPU インベントリーの詳細を返します。
5.4. redfish_command モジュールの使用 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、playbook で redfish_command モジュールを使用してシステムをオンにする方法を示しています。わかりやすくするために、ここに示す例では Ansible コントロールホストおよび管理対象ホストと同じホストを使用しているため、Playbook が実行されるのと同じホストでモジュールを実行します。
前提条件
-
redhat.rhel_mgmtコレクションがインストールされます。 -
python3-pyghmiパッケージのpyghmiライブラリーが管理対象ホストにインストールされます。管理対象ホストとして localhost を使用する場合は、Playbook を実行するホストにpython3-pyghmiパッケージをインストールします。 - OOB コントローラーアクセスの詳細。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow localhost に対して Playbook を実行します。
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その結果、システムの電源が入ります。
5.5. redfish_config モジュールの使用 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、Playbook で redfish_config モジュールを使用して、UEFI で起動するようにシステムを設定する方法を示しています。わかりやすくするために、ここに示す例では Ansible コントロールホストおよび管理対象ホストと同じホストを使用しているため、Playbook が実行されるのと同じホストでモジュールを実行します。
前提条件
-
redhat.rhel_mgmtコレクションがインストールされます。 -
python3-pyghmiパッケージのpyghmiライブラリーが管理対象ホストにインストールされます。管理対象ホストとして localhost を使用する場合は、Playbook を実行するホストにpython3-pyghmiパッケージをインストールします。 - OOB コントローラーアクセスの詳細。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow localhost に対して Playbook を実行します。
ansible-playbook playbook.yml
# ansible-playbook playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その結果、システムの起動モードは UEFI に設定されます。
第6章 Ansible ロールを使用したカーネルパラメーターの永続的な設定 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat Ansible の詳しい知識がある経験のあるユーザーは、kernel_settings ロールを使用して、複数のクライアントにカーネルパラメーターを一度に設定することができます。この解決策は以下のとおりです。
- 効率的な入力設定を持つ使いやすいインターフェイスを提供します。
- すべてのカーネルパラメーターを 1 か所で保持します。
コントロールマシンから kernel_settings ロールを実行すると、カーネルパラメーターはすぐに管理システムに適用され、再起動後も維持されます。
RHEL チャネルで提供される RHEL システムロールは、デフォルトの App Stream リポジトリーの RPM パッケージとして RHEL のお客様が利用できることに注意してください。RHEL システムロールは、Ansible Automation Hub を介して Ansible サブスクリプションを使用しているお客様のコレクションとしても利用できます。
6.1. カーネル設定のロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、複数のシステムをリモートで管理する、一貫した設定インターフェイスを提供する一連のロールです。
kernel_settings システムロールを使用して、カーネルの自動設定に RHEL システムロールが導入されました。rhel-system-roles パッケージには、このシステムロールと参考ドキュメントも含まれます。
カーネルパラメーターを自動的に 1 つ以上のシステムに適用するには、Playbook で選択したロール変数を 1 つ以上使用して、kernel_settings ロールを使用します。Playbook は人間が判読でき、YAML 形式で記述される 1 つ以上のプレイの一覧です。
インベントリーファイルを使用して、Ansible が Playbook に従って設定するシステムセットを定義することができます。
kernel_settings ロールを使用して、以下を設定できます。
-
kernel_settings_sysctlロールを使用したカーネルパラメーター -
kernel_settings_sysfsロールを使用したさまざまなカーネルサブシステム、ハードウェアデバイス、およびデバイスドライバー -
systemdサービスマネージャーの CPU アフィニティーを、kernel_settings_systemd_cpu_affinityロール変数を使用してフォーク処理します。 -
kernel_settings_transparent_hugepagesおよびkernel_settings_transparent_hugepages_defragのロール変数を使用したカーネルメモリーサブシステムの Transparent Huge Page
6.2. kernel_settings ロールを使用した選択したカーネルパラメーターの適用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、Ansible Playbook を準備および適用し、複数の管理システムで永続化の影響でカーネルパラメーターをリモートに設定します。
前提条件
-
root権限がある。 -
RHEL サブスクリプションの資格を取得して、
ansible-coreおよびrhel-system-rolesパッケージをコントロールマシンにインストールしている。 - 管理対象ホストのインベントリーが制御マシンに存在し、Ansible から接続できる。
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、 ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールすべてが含まれています。Ansible Engine を入手してインストールする方法については、Red Hat Ansible Engine をダウンロードしてインストールする方法 を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-coreRPM として提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、および組み込みの Ansible プラグインセットが少し含まれています。App Stream リポジトリーには、ansible-core が含まれていますが、サポートの範囲が限定されています。詳細は、RHEL 9App Stream に含まれている ansible-core パッケージのサポート範囲 を確認してください。
手順
必要に応じて、図の目的で
inventoryファイルを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルは
[testingservers]グループと他のグループを定義します。これにより、特定のシステムセットに対して Ansible をより効果的に実行できます。設定ファイルを作成して、Ansible 操作のデフォルトと特権昇格を設定します。
新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
vi /home/jdoe/<ansible_project_name>/ansible.cfg
# vi /home/jdoe/<ansible_project_name>/ansible.cfgCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容をファイルに挿入します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow [defaults]セクションは、管理対象ホストのインベントリーファイルへのパスを指定します。[privilege_escalation]セクションでは、指定した管理対象ホストのユーザー権限がrootに移行されることを定義します。これは、カーネルパラメーターを正常に設定するために必要です。Ansible Playbook を実行すると、ユーザーパスワードの入力が求められます。管理対象ホストへの接続後に、sudoによりrootに自動的に切り替わります。
kernel_settingsロールを使用する Ansible Playbook を作成します。新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
vi /home/jdoe/<ansible_project_name>/kernel-roles.yml
# vi /home/jdoe/<ansible_project_name>/kernel-roles.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow このファイルは Playbook を表し、通常は、
inventoryファイルから選択した特定の管理対象ホストに対して実行される、プレイ とも呼ばれるタスクの順序付きリストが含まれます。以下の内容をファイルに挿入します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow nameキーは任意です。任意の文字列をラベルとしてプレイに関連付け、プレイの対象を特定します。プレイのhostsキーは、プレイを実行するホストを指定します。このキーの値または値は、管理対象ホストの個別名またはinventoryファイルで定義されているホストのグループとして指定できます。varsセクションは、設定する必要がある、選択したカーネルパラメーター名および値が含まれる変数の一覧を表します。rolesキーは、varsセクションで説明されているパラメーターおよび値を設定するシステムロールを指定します。注記必要に応じて、Playbook のカーネルパラメーターとその値を変更することができます。
必要に応じて、プレイ内の構文が正しいことを確認します。
ansible-playbook --syntax-check kernel-roles.yml
# ansible-playbook --syntax-check kernel-roles.yml playbook: kernel-roles.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例では、Playbook の検証が成功したことを示しています。
Playbook を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible が Playbook を実行する前に、パスワードの入力を求められます。これにより、管理対象ホストのユーザーが
rootに切り替わります。これは、カーネルパラメーターの設定に必要です。recap セクションは、すべての管理対象ホストのプレイが正常に終了したこと (
failed=0)、および 4 つのカーネルパラメーターが適用されたこと (changed=4) を示しています。- 管理対象ホストを再起動して、影響を受けるカーネルパラメーターをチェックし、変更が適用され、再起動後も維持されていることを確認します。
第7章 RHEL システムロールを使用したネットワーク設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL System Role を使用して、ネットワーク関連の設定および管理タスクを自動化できます。
7.1. ネットワーク RHEL システムロールとインターフェイス名を使用した静的 IP アドレスでのイーサネット接続設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL System Role を使用して、イーサネット接続をリモートで設定できます。
たとえば、以下の手順では、以下の設定で enp7s0 デバイスの NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス: サブネットマスクが
/24の192.0.2.1 -
静的 IPv6 アドレス -
2001:db8:1::1(/64サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254 -
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe -
IPv4 DNS サーバー -
192.0.2.200 -
IPv6 DNS サーバー -
2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-static-IP.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/ethernet-static-IP.yml
# ansible-playbook ~/ethernet-static-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.2. ネットワーク RHEL システムロールとデバイスパスを使用した静的 IP アドレスでのイーサネット接続設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL System Role を使用して、イーサネット接続をリモートで設定できます。
デバイスパスは、次のコマンドで識別できます。
udevadm info /sys/class/net/<device_name> | grep ID_PATH=
# udevadm info /sys/class/net/<device_name> | grep ID_PATH=
たとえば、以下の手順では、PCI ID 0000:00:0[1-3].0 式に一致するが、0000:00:02.0 は一致しないデバイスに対して、以下の設定で NetworkManager 接続プロファイルを作成します。
-
静的 IPv4 アドレス: サブネットマスクが
/24の192.0.2.1 -
静的 IPv6 アドレス -
2001:db8:1::1(/64サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254 -
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe -
IPv4 DNS サーバー -
192.0.2.200 -
IPv6 DNS サーバー -
2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-static-IP.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例の
matchパラメーターは、Ansible が PCI ID0000:00:0[1-3].0に一致するデバイスに再生を適用するが、0000:00:02.0には適用しないことを定義します。使用できる特殊な修飾子およびワイルドカードの詳細は、/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルーのmatchパラメーターの説明を参照してください。Playbook を実行します。
ansible-playbook ~/ethernet-static-IP.yml
# ansible-playbook ~/ethernet-static-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.3. ネットワーク RHEL システムロールとインターフェイス名を使用した動的 IP アドレスでのイーサネット接続設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL System Role を使用して、イーサネット接続をリモートで設定できます。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
- 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-dynamic-IP.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/ethernet-dynamic-IP.yml
# ansible-playbook ~/ethernet-dynamic-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.4. ネットワーク RHEL システムロールとデバイスパスを使用した動的 IP アドレスでのイーサネット接続設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL System Role を使用して、イーサネット接続をリモートで設定できます。動的 IP アドレス設定との接続の場合、NetworkManager は、DHCP サーバーから接続の IP 設定を要求します。
デバイスパスは、次のコマンドで識別できます。
udevadm info /sys/class/net/<device_name> | grep ID_PATH=
# udevadm info /sys/class/net/<device_name> | grep ID_PATH=
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、物理または仮想のイーサネットデバイスが設定されている。
- DHCP サーバーをネットワークで使用できる。
- 管理対象ホストは、NetworkManager を使用してネットワークを設定します。
手順
~/ethernet-dynamic-IP.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例の
matchパラメーターは、Ansible が PCI ID0000:00:0[1-3].0に一致するデバイスに再生を適用するが、0000:00:02.0には適用しないことを定義します。使用できる特殊な修飾子およびワイルドカードの詳細は、/usr/share/ansible/roles/rhel-system-roles.network/README.mdファイルーのmatchパラメーターの説明を参照してください。Playbook を実行します。
ansible-playbook ~/ethernet-dynamic-IP.yml
# ansible-playbook ~/ethernet-dynamic-IP.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5. ネットワーク RHEL システムロールを使用した VLAN タギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールを使用して、VLAN タグ付けを設定できます。この例では、イーサネット接続と、このイーサネット接続の上に ID 10 の VLAN を追加します。子デバイスの VLAN 接続には、IP、デフォルトゲートウェイ、および DNS の設定が含まれます。
環境に応じて、プレイを適宜調整します。以下はその例です。
-
ボンディングなどの他の接続でポートとして VLAN を使用する場合は、
ip属性を省略し、子設定で IP 設定を行います。 -
VLAN でチーム、ブリッジ、またはボンディングデバイスを使用するには、
interface_nameと VLAN で使用するポートのtype属性を調整します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/vlan-ethernet.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow VLAN プロファイルの
parent属性は、enp1s0デバイス上で動作する VLAN を設定します。Playbook を実行します。
ansible-playbook ~/vlan-ethernet.yml
# ansible-playbook ~/vlan-ethernet.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.6. ネットワーク RHEL システムロールを使用したネットワークブリッジの設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールを使用して、Linux ブリッジを設定できます。たとえば、2 つのイーサネットデバイスを使用するネットワークブリッジを設定し、IPv4 アドレスおよび IPv6 アドレス、デフォルトゲートウェイ、および DNS 設定を設定します。
Linux ブリッジのポートではなく、ブリッジに IP 設定を指定します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
手順
~/bridge-ethernet.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/bridge-ethernet.yml
# ansible-playbook ~/bridge-ethernet.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.7. ネットワーク RHEL システムロールを使用したネットワークボンディングの設定 リンクのコピーリンクがクリップボードにコピーされました!
network の RHEL システムロールを使用して、Linux ボンディングを設定できます。たとえば、2 つのイーサネットデバイスを使用する active-backup モードでネットワークボンディングを設定し、IPv4 アドレスおよび IPv6 アドレス、デフォルトゲートウェイ、および DNS 設定を設定します。
Linux ボンディングのポートではなく、ボンディングに IP 設定を設定します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- サーバーに、2 つ以上の物理ネットワークデバイスまたは仮想ネットワークデバイスがインストールされている。
手順
~/bond-ethernet.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/bond-ethernet.yml
# ansible-playbook ~/bond-ethernet.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.8. ネットワーク RHEL システムロールを使用した IPoIB 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールを使用して、IP over InfiniBand (IPoIB) デバイスの NetworkManager 接続プロファイルをリモートで作成できます。たとえば、Ansible Playbook を実行して、次の設定で mlx4_ib0 インターフェイスの InfiniBand 接続をリモートで追加します。
-
IPoIB デバイス -
mlx4_ib0.8002 -
パーティションキー
p_key-0x8002 -
静的
IPv4アドレス -192.0.2.1と/24サブネットマスク -
静的
IPv6アドレス -2001:db8:1::1(/64サブネットマスクあり)
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象のノードで Playbook を実行できるユーザーとして制御ノードにログインしました。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
-
mlx4_ib0という名前の InfiniBand デバイスが管理対象ノードにインストールされます。 - 管理ノードは、NetworkManager を使用してネットワークを設定します。
手順
~/IPoIB.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この例のように
p_keyパラメーターを設定する場合は、IPoIB デバイスでinterface_nameパラメーターを設定しないでください。Playbook を実行します。
ansible-playbook ~/IPoIB.yml
# ansible-playbook ~/IPoIB.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
managed-node-01.example.comホストで、mlx4_ib0.8002デバイスの IP 設定を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow mlx4_ib0.8002デバイスのパーティションキー (P_Key) を表示します。cat /sys/class/net/mlx4_ib0.8002/pkey 0x8002
# cat /sys/class/net/mlx4_ib0.8002/pkey 0x8002Copy to Clipboard Copied! Toggle word wrap Toggle overflow mlx4_ib0.8002デバイスのモードを表示します。cat /sys/class/net/mlx4_ib0.8002/mode datagram
# cat /sys/class/net/mlx4_ib0.8002/mode datagramCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.9. ネットワーク RHEL システムロールを使用した特定のサブネットから別のデフォルトゲートウェイへのトラフィックのルーティング リンクのコピーリンクがクリップボードにコピーされました!
ポリシーベースのルーティングを使用して、特定のサブネットからのトラフィックに対して別のデフォルトゲートウェイを設定できます。たとえば、デフォルトルートを使用してすべてのトラフィックをインターネットプロバイダー A にルーティングするルーターとして RHEL を設定できます。ただし、内部ワークステーションサブネットから受信したトラフィックはプロバイダー B にルーティングされます。
ポリシーベースのルーティングをリモートで複数のノードに設定するには、RHEL network システムロールを使用できます。Ansible コントロールノードで以下の手順を実行します。
この手順では、次のネットワークトポロジーを想定しています。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
-
管理対象ノードは、
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ネットワークインターフェイスに割り当てます。
手順
~/pbr.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/pbr.yml
# ansible-playbook ~/pbr.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
内部ワークステーションサブネットの RHEL ホストで、以下を行います。
tracerouteパッケージをインストールします。yum install traceroute
# yum install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow tracerouteユーティリティーを使用して、インターネット上のホストへのルートを表示します。traceroute redhat.com
# 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.1 (192.0.2.1) 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パッケージをインストールします。yum install traceroute
# yum install tracerouteCopy to Clipboard Copied! Toggle word wrap Toggle overflow tracerouteユーティリティーを使用して、インターネット上のホストへのルートを表示します。traceroute redhat.com
# 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
# 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
# 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
# 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
7.10. ネットワーク RHEL システムロールを使用した 802.1X ネットワーク認証による静的イーサネット接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールを使用して、802.1X 規格を使用してクライアントを認証するイーサネット接続の作成を自動化できます。たとえば、Ansible Playbook を実行して、以下の設定で enp1s0 インターフェイスのイーサネット接続をリモートで追加します。
-
静的 IPv4 アドレス: サブネットマスクが
/24の192.0.2.1 -
静的 IPv6 アドレス -
2001:db8:1::1(/64サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254 -
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe -
IPv4 DNS サーバー -
192.0.2.200 -
IPv6 DNS サーバー -
2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com -
TLSExtensible Authentication Protocol (EAP) を使用した 802.1X ネットワーク認証
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
- ネットワークは 802.1X ネットワーク認証をサポートしている。
- 管理対象ノードは NetworkManager を使用します。
TLS 認証に必要な以下のファイルがコントロールノードにある。
-
クライアントキーは、
/srv/data/client.keyファイルに保存されます。 -
クライアント証明書は
/srv/data/client.crtファイルに保存されます。 -
認証局 (CA) 証明書は、
/srv/data/ca.crtファイルに保存されます。
-
クライアントキーは、
手順
~/enable-802.1x.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/enable-802.1x.yml
# ansible-playbook ~/enable-802.1x.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.11. ネットワーク RHEL システムロールを使用した既存の接続でのデフォルトゲートウェイの設定 リンクのコピーリンクがクリップボードにコピーされました!
network の RHEL システムロールを使用して、デフォルトゲートウェイを設定できます。
network の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定がすでに存在している場合でも、プレイでネットワーク接続プロファイルの設定全体を指定する必要があります。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。
この手順では、すでに存在するかどうかに応じて、以下の設定で enp1s0 接続プロファイルを作成または更新します。
-
静的 IPv4 アドレス -
/24サブネットマスクを持つ198.51.100.20 -
静的 IPv6 アドレス -
2001:db8:1::1(/64サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
198.51.100.254 -
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe -
IPv4 DNS サーバー -
198.51.100.200 -
IPv6 DNS サーバー -
2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/ethernet-connection.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/ethernet-connection.yml
# ansible-playbook ~/ethernet-connection.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.12. ネットワーク RHEL システムロールを使用した静的ルートの設定 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL System Role を使用して、静的ルートを設定できます。
network の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定がすでに存在している場合でも、プレイでネットワーク接続プロファイルの設定全体を指定する必要があります。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。
この手順では、すでに存在するかどうかに応じて、以下の設定で enp7s0 接続プロファイルを作成または更新します。
-
静的 IPv4 アドレス: サブネットマスクが
/24の192.0.2.1 -
静的 IPv6 アドレス -
2001:db8:1::1(/64サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
192.0.2.254 -
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe -
IPv4 DNS サーバー -
192.0.2.200 -
IPv6 DNS サーバー -
2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com 静的ルート:
-
198.51.100.0/24のゲートウェイ192.0.2.10 -
2001:db8:2::/64とゲートウェイ2001:db8:1::10
-
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/add-static-routes.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/add-static-routes.yml
# ansible-playbook ~/add-static-routes.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで以下を行います。
IPv4 ルートを表示します。
ip -4 route
# ip -4 route ... 198.51.100.0/24 via 192.0.2.10 dev enp7s0Copy to Clipboard Copied! Toggle word wrap Toggle overflow IPv6 ルートを表示します。
ip -6 route
# ip -6 route ... 2001:db8:2::/64 via 2001:db8:1::10 dev enp7s0 metric 1024 pref mediumCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.13. ネットワーク RHEL システムロールを使用した ethtool オフロード機能の設定 リンクのコピーリンクがクリップボードにコピーされました!
network の RHEL システムロールを使用して、NetworkManager 接続の ethtool 機能を設定できます。
network の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定などがすでに存在している場合でも、常にネットワーク接続プロファイルの設定全体をプレイで指定します。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。
この手順では、すでに存在するかどうかに応じて、以下の設定で enp1s0 接続プロファイルを作成または更新します。
-
静的
IPv4アドレス -/24サブネットマスクを持つ198.51.100.20 -
静的
IPv6アドレス -2001:db8:1::1(/64サブネットマスクあり) -
IPv4デフォルトゲートウェイ -198.51.100.254 -
IPv6デフォルトゲートウェイ -2001:db8:1::fffe -
IPv4DNS サーバー -198.51.100.200 -
IPv6DNS サーバー -2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com ethtool機能:- 汎用受信オフロード (GRO): 無効
- Generic segmentation offload(GSO): 有効化
- TX stream control transmission protocol (SCTP) segmentation: 無効
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
Playbook ファイル (例:
~/configure-ethernet-device-with-ethtool-features.yml) を次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/configure-ethernet-device-with-ethtool-features.yml
# ansible-playbook ~/configure-ethernet-device-with-ethtool-features.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.14. ネットワーク RHEL システムロールを使用した ethtool 結合設定の設定 リンクのコピーリンクがクリップボードにコピーされました!
network の RHEL システムロールを使用して、NetworkManager 接続の ethtool を設定できます。
network の RHEL システムロールを使用する再生を実行すると、設定値が再生で指定されたものと一致しない場合に、システムロールが同じ名前の既存の接続プロファイルを上書きします。したがって、IP 設定などがすでに存在している場合でも、常にネットワーク接続プロファイルの設定全体をプレイで指定します。それ以外の場合は、ロールはこれらの値をデフォルト値にリセットします。
この手順では、すでに存在するかどうかに応じて、以下の設定で enp1s0 接続プロファイルを作成または更新します。
-
静的 IPv4 アドレス -
/24サブネットマスクを持つ198.51.100.20 -
静的 IPv6 アドレス -
2001:db8:1::1(/64サブネットマスクあり) -
IPv4 デフォルトゲートウェイ -
198.51.100.254 -
IPv6 デフォルトゲートウェイ -
2001:db8:1::fffe -
IPv4 DNS サーバー -
198.51.100.200 -
IPv6 DNS サーバー -
2001:db8:1::ffbb -
DNS 検索ドメイン -
example.com ethtoolcoalesce の設定:-
RX フレーム:
128 -
TX フレーム:
128
-
RX フレーム:
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/configure-ethernet-device-with-ethtoolcoalesce-settings.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/configure-ethernet-device-with-ethtoolcoalesce-settings.yml
# ansible-playbook ~/configure-ethernet-device-with-ethtoolcoalesce-settings.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
7.15. ネットワーク RHEL システムロールのネットワーク状態 リンクのコピーリンクがクリップボードにコピーされました!
network RHEL システムロールは、Playbook でデバイスを設定するための状態設定をサポートしています。これには、network_state 変数の後に状態設定を使用します。
Playbook で network_state 変数を使用する利点:
- 状態設定で宣言型の方法を使用すると、インターフェイスを設定でき、NetworkManager はこれらのインターフェイスのプロファイルをバックグラウンドで作成します。
-
network_state変数を使用すると、変更が必要なオプションを指定できます。他のすべてのオプションはそのまま残ります。ただし、network_connections変数を使用して、ネットワーク接続プロファイルを変更するには、すべての設定を指定する必要があります。
たとえば、動的 IP アドレス設定でイーサネット接続を作成するには、Playbook で次の vars ブロックを使用します。
| 状態設定を含むプレイブック | 通常のプレイブック |
|
|
|
たとえば、上記のように作成した動的 IP アドレス設定の接続ステータスのみを変更するには、Playbook で次の vars ブロックを使用します。
| 状態設定を含むプレイブック | 通常のプレイブック |
|
|
|
第8章 システムロールを使用した firewalld の設定 リンクのコピーリンクがクリップボードにコピーされました!
firewall システムロールを使用すると、一度に複数のクライアントに firewalld サービスを設定できます。この解決策は以下のとおりです。
- 入力設定が効率的なインターフェイスを提供する。
-
目的の
firewalldパラメーターを 1 か所で保持する。
コントロールノードで firewall ロールを実行すると、システムロールは firewalld パラメーターを管理対象ノードに即座に適用し、再起動後も維持されます。
8.1. RHEL システムロール firewall の概要 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、Ansible 自動化ユーティリティーのコンテンツセットです。このコンテンツは、Ansible 自動化ユーティリティーとともに、複数のシステムをリモートで管理するための一貫した設定インターフェイスを提供します。
firewalld サービスの自動設定に、RHEL システムロールからの rhel-system-roles.firewall ロールが導入されました。rhel-system-roles パッケージには、このシステムロールと参考ドキュメントも含まれます。
firewalld パラメーターを自動化された方法で 1 つ以上のシステムに適用するには、Playbook で firewall システムロール変数を使用します。Playbook は、テキストベースの YAML 形式で記述された 1 つ以上のプレイの一覧です。
インベントリーファイルを使用して、Ansible が設定するシステムセットを定義できます。
firewall ロールを使用すると、以下のような異なる firewalld パラメーターを設定できます。
- ゾーン。
- パケットが許可されるサービス。
- ポートへのトラフィックアクセスの付与、拒否、または削除。
- ゾーンのポートまたはポート範囲の転送。
8.2. ファイアウォール RHEL システムロールを使用した firewalld 設定のリセット リンクのコピーリンクがクリップボードにコピーされました!
firewall RHEL システムロールを使用すると、firewalld 設定をデフォルトの状態にリセットできます。previous:replaced パラメーターを変数リストに追加すると、システムロールは既存のユーザー定義の設定をすべて削除し、firewalld をデフォルトにリセットします。previous:replaced パラメーターを他の設定と組み合わせると、firewall ロールは新しい設定を適用する前に既存の設定をすべて削除します。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/reset-firewalld.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/configuring-a-dmz.yml
# ansible-playbook ~/configuring-a-dmz.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで
rootとして次のコマンドを実行し、すべてのゾーンを確認します。firewall-cmd --list-all-zones
# firewall-cmd --list-all-zonesCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. 別のローカルポートへの着信トラフィックの転送 リンクのコピーリンクがクリップボードにコピーされました!
firewall ロールを使用すると、複数の管理対象ホストで設定が永続化されるので firewalld パラメーターをリモートで設定できます。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/port_forwarding.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/port_forwarding.yml
# ansible-playbook ~/port_forwarding.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ホストで、
firewalld設定を表示します。firewall-cmd --list-forward-ports
# firewall-cmd --list-forward-portsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.4. システムロールを使用したポートの設定 リンクのコピーリンクがクリップボードにコピーされました!
RHEL firewall システムロールを使用すると、着信トラフィックに対してローカルファイアウォールでポートを開くか、または閉じて、再起動後に新しい設定を永続化できます。たとえば、HTTPS サービスの着信トラフィックを許可するようにデフォルトゾーンを設定できます。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/opening-a-port.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow permanent: trueオプションを使用すると、再起動後も新しい設定が維持されます。Playbook を実行します。
ansible-playbook ~/opening-a-port.yml
# ansible-playbook ~/opening-a-port.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで、
HTTPSサービスに関連付けられた443/tcpポートが開いていることを確認します。firewall-cmd --list-ports
# firewall-cmd --list-ports 443/tcpCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.5. firewalld RHEL システムロールを使用した DMZ firewalld ゾーンの設定 リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、firewall システムロールを使用して、enp1s0 インターフェイスで dmz ゾーンを設定し、ゾーンへの HTTPS トラフィックを許可できます。これにより、外部ユーザーが Web サーバーにアクセスできるようにします。
Ansible コントロールノードで以下の手順を実行します。
前提条件
- 制御ノードと管理対象ノードを準備している。
- 管理対象ノードで Playbook を実行できるユーザーとして制御ノードにログインします。
-
管理対象ノードへの接続に使用するアカウントには、そのノードに対する
sudo権限があります。 - この Playbook を実行する管理対象のノードまたは管理対象のノードのグループは、Ansible インベントリーファイルにリストされています。
手順
~/configuring-a-dmz.ymlなどの Playbook ファイルを次の内容で作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook ~/configuring-a-dmz.yml
# ansible-playbook ~/configuring-a-dmz.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理ノードで、
dmzゾーンに関する詳細情報を表示します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第9章 システムロールの postfix ロールの変数 リンクのコピーリンクがクリップボードにコピーされました!
postfix ロール変数により、ユーザーは postfix Mail Transfer Agent (MTA) をインストール、設定、および起動できます。
以下のロール変数がこのセクションで定義されています。
-
postfix_conf: 対応している
postfix設定パラメーターすべてのキー/値のペアが含まれます。初期設定では、このpostfix_confには値が設定されていません。
postfix_conf: relayhost: example.com
postfix_conf:
relayhost: example.com
シナリオで既存の設定を削除し、必要な設定を Postfix のクリーンインストールの上に適用する必要がある場合は、postfix_conf ディクショナリー内で previous: replaced オプションを指定します。
previous: replaced オプション:
postfix_conf: relayhost: example.com previous: replaced
postfix_conf:
relayhost: example.com
previous: replaced
-
postfix_check: 設定変更を検証するために、
postfixの起動時に確認が実行されたかどうかを判断します。デフォルト値は true です。
以下はその例です。
postfix_check: true
postfix_check: true
-
postfix_backup: 設定のバックアップコピーを 1 つ作成するかどうかを指定します。デフォルトでは、
postfix_backupの値は false です。
以前のバックアップを上書きする場合は、以下のコマンドを実行します。
*cp /etc/postfix/main.cf /etc/postfix/main.cf.backup*
# *cp /etc/postfix/main.cf /etc/postfix/main.cf.backup*
postfix_backup の値を true に変更した場合は、postfix_backup_multiple の値も false に設定する必要があります。
以下はその例です。
postfix_backup: true postfix_backup_multiple: false
postfix_backup: true
postfix_backup_multiple: false
- postfix_backup_multiple - ロールが設定のタイムスタンプ付きバックアップコピーを作成するかどうかを決定します。
複数のバックアップコピーを保持するには、次のコマンドを実行します。
*cp /etc/postfix/main.cf /etc/postfix/main.cf.$(date -Isec)*
# *cp /etc/postfix/main.cf /etc/postfix/main.cf.$(date -Isec)*
デフォルトでは、postfix_backup_multiple の値は true です。postfix_backup_multiple:true 設定は postfix_backup をオーバーライドします。postfix_backup を使用する場合は、postfix_backup_multiple:false を設定する必要があります。
設定パラメーターは削除できません。postfix ロールを実行する前に、postfix_conf を必要なすべてにの設定パラメーター設定し、ファイルモジュールを使用して /etc/postfix/main.cf を削除します。
第10章 システムロールを使用した SElinux の設定 リンクのコピーリンクがクリップボードにコピーされました!
10.1. selinux システムロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、複数の RHEL システムをリモートで管理する一貫した設定インターフェイスを提供する Ansible ロールおよびモジュールの集合です。selinux システムロールでは、以下の操作が可能になります。
- SELinux ブール値、ファイルコンテキスト、ポート、およびログインに関連するローカルポリシーの変更を消去します。
- SELinux ポリシーブール値、ファイルコンテキスト、ポート、およびログインの設定
- 指定されたファイルまたはディレクトリーでファイルコンテキストを復元します。
- SELinux モジュールの管理
以下の表は、selinux システムロールで利用可能な入力変数の概要を示しています。
| ロール変数 | 説明 | CLI の代替手段 |
|---|---|---|
| selinux_policy | ターゲットプロセスまたは複数レベルのセキュリティー保護を保護するポリシーを選択します。 |
|
| selinux_state | SELinux モードを切り替えます。 |
|
| selinux_booleans | SELinux ブール値を有効または無効にします。 |
|
| selinux_fcontexts | SELinux ファイルコンテキストマッピングを追加または削除します。 |
|
| selinux_restore_dirs | ファイルシステムツリー内の SELinux ラベルを復元します。 |
|
| selinux_ports | ポートに SELinux ラベルを設定します。 |
|
| selinux_logins | ユーザーを SELinux ユーザーマッピングに設定します。 |
|
| selinux_modules | SELinux モジュールのインストール、有効化、無効化、または削除を行います。 |
|
rhel-system-roles パッケージによりインストールされる /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml のサンプル Playbook は、Enforcing モードでターゲットポリシーを設定する方法を示しています。Playbook は、複数のローカルポリシーの変更を適用し、tmp/test_dir/ ディレクトリーのファイルコンテキストを復元します。
selinux ロール変数の詳細は、rhel-system-roles パッケージをインストールし、/usr/share/doc/rhel-system-roles/selinux/ ディレクトリーの README.md または README.html ファイルを参照してください。
10.2. selinux システムロールを使用した、複数のシステムでの SELinux 設定の適用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、検証した SELinux 設定を使用して Ansible Playbook を準備し、適用します。
前提条件
-
1 つまたは複数の 管理対象ノード へのアクセスとパーミッション (
selinuxシステムロールで設定するシステム)。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
Playbook を準備します。ゼロから開始するか、
rhel-system-rolesパッケージの一部としてインストールされたサンプル Playbook を変更してください。cp /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml my-selinux-playbook.yml vi my-selinux-playbook.yml
# cp /usr/share/doc/rhel-system-roles/selinux/example-selinux-playbook.yml my-selinux-playbook.yml # vi my-selinux-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow シナリオに合わせて Playbook の内容を変更します。たとえば、次の部分では、システムが SELinux モジュール
selinux-local-1.ppをインストールして有効にします。selinux_modules: - { path: "selinux-local-1.pp", priority: "400" }selinux_modules: - { path: "selinux-local-1.pp", priority: "400" }Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 変更を保存し、テキストエディターを終了します。
host1、host2 および host3 システムで Playbook を実行します。
ansible-playbook -i host1,host2,host3 my-selinux-playbook.yml
# ansible-playbook -i host1,host2,host3 my-selinux-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第11章 Logging システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、Logging システムロールを使用して、RHEL ホストをロギングサーバーとして設定し、多くのクライアントシステムからログを収集できます。
11.1. Logging システムロール リンクのコピーリンクがクリップボードにコピーされました!
Logging システムロールを使用すると、ローカルおよびリモートホストにロギング設定をデプロイできます。
Logging システムロールを 1 つ以上のシステムに適用するには、Playbook でロギング設定を定義します。Playbook は、1 つ以上の play の一覧です。Playbook は YAML 形式で表現され、人が判読できるようになっています。Playbook の詳細は、Ansible ドキュメントの Working with playbooks を参照してください。
Playbook に従って設定するシステムのセットは、インベントリーファイル で定義されます。インベントリーの作成および使用に関する詳細は、Ansible ドキュメントの How to build your inventory を参照してください。
ロギングソリューションは、ログと複数のログ出力を読み取る複数の方法を提供します。
たとえば、ロギングシステムは以下の入力を受け取ることができます。
- ローカルファイル
-
systemd/journal - ネットワーク上で別のロギングシステム
さらに、ロギングシステムでは以下を出力できます。
-
/var/logディレクトリーのローカルファイルに保存されているログ - Elasticsearch に送信されたログ
- 別のロギングシステムに転送されたログ
Logging システムロールでは、シナリオに合わせて入出力を組み合わせることができます。たとえば、journal からの入力をローカルのファイルに保存しつつも、複数のファイルから読み込んだ入力を別のロギングシステムに転送してそのローカルのログファイルに保存するようにロギングソリューションを設定できます。
11.2. Logging システムロールのパラメーター リンクのコピーリンクがクリップボードにコピーされました!
logging システムロール Playbook では、logging_inputs パラメーターで入力を、logging_outputs パラメーターで出力を、そして logging_flows パラメーターで入力と出力の関係を定義します。Logging システムロールは、ロギングシステムの追加設定オプションで、上記の変数を処理します。暗号化を有効にすることもできます。
現在、Logging システムロールで利用可能な唯一のロギングシステムは Rsyslog です。
logging_inputs: ロギングソリューションの入力一覧。-
name: 入力の一意の名前。logging_flowsでの使用: 入力一覧および生成されたconfigファイル名の一部で使用されます。 type: 入力要素のタイプ。type は、roles/rsyslog/{tasks,vars}/inputs/のディレクトリー名に対応するタスクタイプを指定します。basics:systemdジャーナルまたはunixソケットからの入力を設定する入力。-
kernel_message:trueに設定されている場合にimklogを読み込みます。デフォルトはfalseです。 -
use_imuxsock:imjournalではなくimuxsockを使用します。デフォルトはfalseです。 -
ratelimit_burst:ratelimit_interval内に出力できるメッセージの最大数。use_imuxsockが false の場合、デフォルトで20000に設定されます。use_imuxsockが true の場合、デフォルトで200に設定されます。 -
ratelimit_interval:ratelimit_burstを評価する間隔。use_imuxsockが false の場合、デフォルトで 600 秒に設定されます。use_imuxsockが true の場合、デフォルトで 0 に設定されます。0 はレート制限がオフであることを示します。 -
persist_state_interval: ジャーナルの状態は、valueメッセージごとに永続化されます。デフォルトは10です。use_imuxsockが false の場合のみ、有効です。
-
-
files: ローカルファイルからの入力を設定する入力。 -
Remote: ネットワークを介して他のロギングシステムからの入力を設定する入力。
-
状態: 設定ファイルの状態。presentまたはabsent。デフォルトはpresentです。
-
logging_outputs: ロギングソリューションの出力一覧。-
files: ローカルファイルへの出力を設定する出力。 -
forwards: 別のロギングシステムへの出力を設定する出力。 -
remote_files: 別のロギングシステムからの出力をローカルファイルに設定する出力。
-
logging_flows:logging_inputsおよびlogging_outputsの関係を定義するフローの一覧。logging_flows変数には以下が含まれます。-
name: フローの一意の名前。 -
inputs:logging_inputs名の値の一覧。 -
outputs:logging_outputs名の値の一覧。
-
11.3. ローカルの Logging システムロールの適用 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Playbook を準備して適用し、別のマシンにロギングソリューションを設定します。各マシンはログをローカルに記録します。
前提条件
-
Logging システムロールを設定する
管理対象ノード1 つ以上へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
デプロイメント時にシステムロールが rsyslog をインストールするため、rsyslog パッケージをインストールする必要はありません。
手順
必要なロールを定義する Playbook を作成します。
新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容を挿入します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
特定のインベントリーで Playbook を実行します。
ansible-playbook -i inventory-file /path/to/file/logging-playbook.yml
# ansible-playbook -i inventory-file /path/to/file/logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。
-
inventory-fileはインベントリーファイルに置き換えます。 -
logging-playbook.ymlは、使用する Playbook に置き換えます。
-
検証
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1
# 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 システムがログにメッセージを送信していることを確認します。
テストメッセージを送信します。
logger test
# logger testCopy to Clipboard Copied! Toggle word wrap Toggle overflow /var/log/messages ログを表示します。以下に例を示します。cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: test
# cat /var/log/messages Aug 5 13:48:31 hostname root[6778]: testCopy to Clipboard Copied! Toggle word wrap Toggle overflow `hostname` はクライアントシステムのホスト名です。ログには、logger コマンドを入力したユーザーのユーザー名 (この場合は
root) が含まれていることに注意してください。
11.4. ローカルの Logging システムロールでのログのフィルターリング リンクのコピーリンクがクリップボードにコピーされました!
rsyslog プロパティーベースのフィルターをもとにログをフィルターするロギングソリューションをデプロイできます。
前提条件
-
Logging システムロールを設定する
管理対象ノード1 つ以上へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
- Red Hat Ansible Core がインストールされている。
-
rhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
デプロイメント時にシステムロールが rsyslog をインストールするため、rsyslog パッケージをインストールする必要はありません。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この設定を使用すると、
error文字列を含むメッセージはすべて/var/log/errors.logに記録され、その他のメッセージはすべて/var/log/others.logに記録されます。errorプロパティーの値はフィルターリングする文字列に置き換えることができます。設定に合わせて変数を変更できます。
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1
# 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) が含まれていることに注意してください。
11.5. Logging システムロールを使用したリモートロギングソリューションの適用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、Red Hat Ansible Core Playbook を準備および適用し、リモートロギングソリューションを設定します。この Playbook では、1 つ以上のクライアントが systemd-journal からログを取得し、リモートサーバーに転送します。サーバーは、remote_rsyslog および remote_files からリモート入力を受信し、リモートホスト名によって名付けられたディレクトリーのローカルファイルにログを出力します。
前提条件
-
Logging システムロールを設定する
管理対象ノード1 つ以上へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
デプロイメント時にシステムロールが rsyslog をインストールするため、rsyslog パッケージをインストールする必要はありません。
手順
必要なロールを定義する Playbook を作成します。
新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
vi logging-playbook.yml
# vi logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容をファイルに挿入します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow host1.example.comはロギングサーバーに置き換えます。注記必要に応じて、Playbook のパラメーターを変更することができます。
警告ロギングソリューションは、サーバーまたはクライアントシステムの SELinux ポリシーで定義され、ファイアウォールで開放されたポートでしか機能しません。デフォルトの SELinux ポリシーには、ポート 601、514、6514、10514、および 20514 が含まれます。別のポートを使用するには、クライアントシステムおよびサーバーシステムで SELinux ポリシーを変更 します。システムロールを使用したファイアウォールの設定は、まだサポートされていません。
サーバーおよびクライアントを一覧表示するインベントリーファイルを作成します。
新しいファイルを作成してテキストエディターで開きます。以下に例を示します。
vi inventory.ini
# vi inventory.iniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコンテンツをインベントリーファイルに挿入します。
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.com
[servers] server ansible_host=host1.example.com [clients] client ansible_host=host2.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。
-
host1.example.comはロギングサーバーです。 -
host2.example.comはロギングクライアントです。
-
インベントリーで Playbook を実行します。
ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.yml
# ansible-playbook -i /path/to/file/inventory.ini /path/to/file/_logging-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。
-
inventory.iniはインベントリーファイルに置き換えます。 -
logging-playbook.ymlは作成した Playbook に置き換えます。
-
検証
クライアントとサーバーシステムの両方で、
/etc/rsyslog.confファイルの構文をテストします。rsyslogd -N 1
# 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/messagesログを表示します。以下に例を示します。cat /var/log/messages Aug 5 13:48:31 host2.example.com root[6778]: test
# cat /var/log/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) が含まれていることに注意してください。
11.6. TLS での logging システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
Transport Layer Security (TLS) は、コンピューターネットワーク上で安全に通信するために設計された暗号プロトコルです。
管理者は、logging RHEL システムロールを使用し、Red Hat Ansible Automation Platform を使用したセキュアなログ転送を設定できます。
11.6.1. TLS を使用したクライアントロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging システムロールを使用して、ローカルマシンにログインしている RHEL システムでロギングを設定し、Ansible Playbook を実行して、ログを TLS でリモートロギングシステムに転送できます。
この手順では、Ansible インベントリーの client グループ内の全ホストに TLS を設定します。TLS プロトコルは、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- TLS を設定する管理ノードで Playbook の実行権限がある。
- 管理対象ノードがコントロールノードのインベントリーファイルに記載されている。
-
ansibleパッケージおよびrhel-system-rolesパッケージがコントロールノードにインストールされている。
手順
以下の内容を含む
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook は以下のパラメーターを使用します。
logging_pki_files-
このパラメーターを使用して、TLS を設定し、
ca_cert_src、cert_srcおよびprivate_key_srcパラメーターを指定する必要があります。 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を指定している場合は、その場所にコピーされます。 tls-
このパラメーターを使用すると、ネットワーク経由でログを安全に転送できるようになります。セキュアなラッパーが必要ない場合は、
tls: 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 -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.6.2. TLS を使用したサーバーロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging システムロールを使用して、RHEL システムのログインをサーバーとして設定し、Ansible Playbook を実行して TLS でリモートロギングシステムからログを受信できます。
以下の手順では、Ansible インベントリーの server グループ内の全ホストに TLS を設定します。
前提条件
- TLS を設定する管理ノードで Playbook の実行権限がある。
- 管理対象ノードがコントロールノードのインベントリーファイルに記載されている。
-
ansibleパッケージおよびrhel-system-rolesパッケージがコントロールノードにインストールされている。
手順
以下の内容を含む
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook は以下のパラメーターを使用します。
logging_pki_files-
このパラメーターを使用して、TLS を設定し、
ca_cert_src、cert_srcおよびprivate_key_srcパラメーターを指定する必要があります。 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を指定している場合は、その場所にコピーされます。 tls-
このパラメーターを使用すると、ネットワーク経由でログを安全に転送できるようになります。セキュアなラッパーが必要ない場合は、
tls: 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 -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.7. RELP での logging システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
Reliable Event Logging Protocol (RELP) とは、TCP ネットワークを使用する、データとメッセージロギング用のネットワーキングプロトコルのことです。イベントメッセージを確実に配信するので、メッセージの損失が許されない環境で使用できます。
RELP の送信側はコマンド形式でログエントリーを転送し、受信側は処理後に確認応答します。RELP は、一貫性を保つために、転送されたコマンドごとにトランザクション番号を保存し、各種メッセージの復旧します。
RELP Client と RELP Server の間に、リモートロギングシステムを検討することができます。RELP Client はリモートロギングシステムにログを転送し、RELP Server はリモートロギングシステムから送信されたすべてのログを受け取ります。
管理者は logging システムロールを使用して、ログエントリーが確実に送受信されるようにロギングシステムを設定することができます。
11.7.1. RELP を使用したクライアントロギングの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging システムロールを使用して、ローカルマシンにログインしている RHEL システムでロギングを設定し、Ansible Playbook を実行して、ログを RELP でリモートロギングシステムに転送できます。
この手順では、Ansible インベントリーの client グループ内の全ホストに RELP を設定します。RELP 設定は Transport Layer Security (TLS) を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- RELP を設定する管理ノードで Playbook の実行権限がある。
- 管理対象ノードがコントロールノードのインベントリーファイルに記載されている。
-
ansibleパッケージおよびrhel-system-rolesパッケージがコントロールノードにインストールされている。
手順
以下の内容を含む
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 の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
11.7.2. RELP を使用したサーバーログの設定 リンクのコピーリンクがクリップボードにコピーされました!
logging システムロールを使用して、RHEL システムのログインをサーバーとして設定し、Ansible Playbook を実行して RELP でリモートロギングシステムからログを受信できます。
以下の手順では、Ansible インベントリーの server グループ内の全ホストに RELP を設定します。RELP 設定は TLS を使用して、メッセージ送信を暗号化し、ネットワーク経由でログを安全に転送します。
前提条件
- RELP を設定する管理ノードで Playbook の実行権限がある。
- 管理対象ノードがコントロールノードのインベントリーファイルに記載されている。
-
ansibleパッケージおよびrhel-system-rolesパッケージがコントロールノードにインストールされている。
手順
以下の内容を含む
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 の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第12章 ssh システムロールを使用した安全な通信の設定 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、sshd システムロールを使用して SSH サーバーを設定し、ssh システムロールを使用して任意数の RHEL システムに同時に同じ設定の SSH クライアントを Red Hat Ansible Automation Platform で設定できます。
12.1. ssh Server のシステムロール変数 リンクのコピーリンクがクリップボードにコピーされました!
sshd システムロール Playbook では、設定と制限に応じて、SSH 設定ファイルのパラメーターを定義できます。
これらの変数が設定されていない場合には、システムロールは RHEL のデフォルト値と同じ sshd_config ファイルを作成します。
どのような場合でも、ブール値は sshd 設定で適切に 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 ::
sshd システムロールの変数
sshd_enable-
Falseに設定すると、ロールは完全に無効になります。デフォルトはTrueです。 sshd_skip_defaults-
Trueに設定すると、システムロールではデフォルト値が適用されません。代わりに、sshddict またはsshd_Key変数のいずれかを使用して、設定のデフォルト値をすべて指定します。デフォルトはFalseです。 sshd_manage_service-
Falseに設定すると、サービスは管理対象ではなくなるので、起動時に有効化されず、起動または再読み込みされません。Ansible サービスモジュールが現在 AIX でenabledになっていないため、コンテナーまたは AIX 内で実行する時以外はデフォルトでTrueに設定されます。 sshd_allow_reload-
Falseに設定すると、設定の変更後にsshdは再読み込みされません。これはトラブルシューティングで役立ちます。変更した設定を適用するには、sshdを手動で再読み込みします。AIX を除き、sshd_manage_serviceと同じ値にデフォルト設定されます。ここで、sshd_manage_serviceはデフォルトでFalseに設定されますが、sshd_allow_reloadはデフォルトでTrueに設定されます。 sshd_install_serviceTrueに設定すると、ロールはsshdサービスのサービスファイルをインストールします。これにより、オペレーティングシステムで提供されるファイルが上書きされます。2 つ目のインスタンスを設定し、sshd_service変数も変更しない限り、Trueに設定しないでください。デフォルトはFalseです。ロールは、以下の変数でテンプレートとして参照するファイルを使用します。
sshd_service_template_service (default: templates/sshd.service.j2) sshd_service_template_at_service (default: templates/sshd@.service.j2) sshd_service_template_socket (default: templates/sshd.socket.j2)
sshd_service_template_service (default: templates/sshd.service.j2) sshd_service_template_at_service (default: templates/sshd@.service.j2) sshd_service_template_socket (default: templates/sshd.socket.j2)Copy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_service-
この変数により
sshdサービス名が変更されます。これは、2 つ目のsshdサービスインスタンスを設定するのに役立ちます。 sshd設定が含まれる dict。以下に例を示します。
sshd: Compression: yes ListenAddress: - 0.0.0.0sshd: Compression: yes ListenAddress: - 0.0.0.0Copy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_OptionNamedict の代わりに、
sshd_接頭辞とオプション名で設定される単純な変数を使用してオプションを定義できます。簡単な変数は、sshddict の値を上書きします。以下に例を示します。sshd_Compression: no
sshd_Compression: noCopy to Clipboard Copied! Toggle word wrap Toggle overflow sshd_matchandsshd_match_1tosshd_match_9-
dict のリスト、または Match セクションの dict のみ。これらの変数は、
sshddict で定義されている一致するブロックを上書きしないことに注意してください。すべてのソースは作成された設定ファイルに反映されます。
sshd システムロールのセカンダリー変数
これらの変数を使用して、サポートされている各プラットフォームに対応するデフォルトを上書きすることができます。
sshd_packages- この変数を使用して、インストール済みパッケージのデフォルト一覧を上書きできます。
sshd_config_owner、sshd_config_group、sshd_config_mode-
このロールは、これらの変数を使用して生成する
openssh設定ファイルの所有権およびパーミッションを設定できます。 sshd_config_file-
このロールが作成した
opensshサーバー設定を保存するパス。 sshd_config_namespaceこの変数のデフォルト値は null です。これは、ロールがシステムのデフォルトを含む設定ファイルの内容全体を定義することを意味します。または、この変数を使用して、他のロールから、またはドロップインディレクトリーをサポートしないシステムの 1 つの Playbook 内の複数の場所から、このロールを呼び出すことができます。
sshd_skip_defaults変数は無視され、この場合、システムのデフォルトは使用されません。この変数が設定されている場合、ロールは指定された namespace の下の既存の設定ファイルの設定スニペットに指定する設定を配置します。シナリオにロールを複数回適用する必要がある場合は、アプリケーションごとに異なる namespace を選択する必要があります。
注記openssh設定ファイルの制限は引き続き適用されます。たとえば、設定ファイルで指定した最初のオプションだけが、ほとんどの設定オプションで有効です。技術的には、ロールは他の一致ブロックが含まれていない限り、スニペットを "Match all" ブロックに配置し、既存の設定ファイル内の以前の一致ブロックに関係なく適用されるようにします。これにより、異なるロール呼び出しから競合しないオプションを設定できます。
sshd_binary-
opensshのsshd実行可能ファイルへのパス。 sshd_service-
sshdサービスの名前。デフォルトでは、この変数には、ターゲットプラットフォームが使用するsshdサービスの名前が含まれます。ロールがsshd_install_service変数を使用する場合は、これを使用してカスタムのsshdサービスの名前を設定することもできます。 sshd_verify_hostkeys-
デフォルトは
autoです。autoに設定すると、生成された設定ファイルに存在するホストキーがすべて一覧表示され、存在しないパスが生成されます。また、パーミッションおよびファイルの所有者はデフォルト値に設定されます。これは、ロールがデプロイメント段階で使用され、サービスが最初の試行で起動できるようにする場合に便利です。このチェックを無効にするには、この変数を空のリスト[]に設定します。 sshd_hostkey_owner,sshd_hostkey_group,sshd_hostkey_mode-
これらの変数を使用して、
sshd_verify_hostkeysからホストキーの所有権とパーミッションを設定します。 sshd_sysconfig-
RHEL ベースのシステムでは、この変数は
sshdサービスに関する追加情報を設定します。trueに設定すると、このロールは以下の設定に基づいて/etc/sysconfig/sshd設定ファイルも管理します。デフォルトはfalseです。 sshd_sysconfig_override_crypto_policy-
RHEL では、
trueに設定すると、この変数はシステム全体の暗号化ポリシーを上書きします。デフォルトはfalseです。 sshd_sysconfig_use_strong_rng-
RHEL ベースのシステムでは、この変数により、
sshdは、引数として指定されたバイト数を使用して、openssl乱数ジェネレーターを強制的に再シードすることができます。デフォルトは0で、この機能を無効にします。システムにハードウェア乱数ジェネレーターがない場合は、この機能を有効にしないでください。
12.2. sshd システムロールを使用した OpenSSH サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
sshd システムロールを使用して、Ansible Playbook を実行することで複数の SSH サーバーを設定できます。
sshd システムロールは、SSH および SSHD 設定を変更する他のシステムロール (ID 管理 RHEL システムロールなど) とともに使用できます。設定が上書きされないようにするには、sshd ロールがネームスペース (RHEL 8 以前のバージョン) またはドロップインディレクトリー (RHEL 9) を使用していることを確認してください。
前提条件
-
1 つ以上の 管理対象ノード (
sshdシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
sshdシステムロールの Playbook の例をコピーします。cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.yml
# cp /usr/share/doc/rhel-system-roles/sshd/example-root-login-playbook.yml path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の例のように、テキストエディターでコピーした Playbook を開きます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook は、以下のように、管理対象ノードを SSH サーバーとして設定します。
-
パスワードと
rootユーザーのログインが無効である -
192.0.2.0/24のサブネットからのパスワードおよびrootユーザーのログインのみが有効である
設定に合わせて変数を変更できます。詳細は、SSHD Server System Role variables を参照してください。
-
パスワードと
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check path/custom-playbook.yml
# ansible-playbook --syntax-check path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
SSH サーバーにログインします。
ssh user1@10.1.1.1
$ ssh user1@10.1.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。
-
user1は、SSH サーバーのユーザーです。 -
10.1.1.1は、SSH サーバーの IP アドレスです。
-
SSH サーバーの
sshd_configファイルの内容を確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 192.0.2.0/24サブネットから root としてサーバーに接続できることを確認します。IP アドレスを確認します。
hostname -I
$ 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@10.1.1.1
$ ssh root@10.1.1.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.3. ssh システムロール変数 リンクのコピーリンクがクリップボードにコピーされました!
ssh システムロール Playbook では、設定および制限に応じて、クライアント SSH 設定ファイルのパラメーターを定義できます。
これらの変数が設定されていない場合には、システムロールは RHEL のデフォルト値と同じグローバル ssh_config ファイルを作成します。
どのような場合でも、ブール値は ssh 設定で適切に 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
設定オプションでは、大文字と小文字が区別されます。
ssh システムロールの変数
ssh_user-
システムロールでユーザー固有の設定を変更するように、既存のユーザー名を定義できます。ユーザー固有の設定は、指定したユーザーの
~/.ssh/configに保存されます。デフォルト値は null で、すべてのユーザーに対するグローバル設定を変更します。 ssh_skip_defaults-
デフォルトは
autoです。autoに設定すると、システムロールはシステム全体の設定ファイル/etc/ssh/ssh_configを読み取り、そこで定義した RHEL のデフォルトを保持します。ssh_drop_in_name変数を定義してドロップイン設定ファイルを作成すると、ssh_skip_defaults変数が自動的に無効化されます。 ssh_drop_in_nameシステム全体のドロップインディレクトリーに置かれたドロップイン設定ファイルの名前を定義します。この名前は、変更する設定ファイルを参照するテンプレート
/etc/ssh/ssh_config.d/{ssh_drop_in_name}.confで使用されます。システムがドロップインディレクトリーに対応していない場合、デフォルト値は null です。システムがドロップインディレクトリーに対応している場合、デフォルト値は00-ansibleです。警告システムがドロップインディレクトリーに対応していない場合は、このオプションを設定すると、プレイに失敗します。
推奨される形式は
NN-nameです。NNは、設定ファイルの指定に使用する 2 桁の番号で、nameはコンテンツまたはファイルの所有者を示す名前になります。ssh- 設定オプションとその値が含まれる dict。
ssh_OptionName-
dict の代わりに、
ssh_接頭辞とオプション名で設定される単純な変数を使用してオプションを定義できます。簡単な変数は、sshdict の値を上書きします。 ssh_additional_packages-
このロールは、一般的なユースケースに必要な
opensshパッケージおよびopenssh-clientsパッケージを自動的にインストールします。ホストベースの認証用にopenssh-keysignなどの追加のパッケージをインストールする必要がある場合は、この変数で指定できます。 ssh_config_fileロールが生成した設定ファイルを保存するパス。デフォルト値:
-
システムにドロップインディレクトリーがある場合、デフォルト値は
/etc/ssh/ssh_config.d/{ssh_drop_in_name}.confテンプレートで定義されます。 -
システムにドロップインディレクトリーがない場合、デフォルト値は
/etc/ssh/ssh_configになります。 -
ssh_user変数が定義されている場合、デフォルト値は~/.ssh/configになります。
-
システムにドロップインディレクトリーがある場合、デフォルト値は
ssh_config_owner,ssh_config_group,ssh_config_mode-
作成した設定ファイルの所有者、グループ、およびモード。デフォルトでは、ファイルの所有者は
root:rootで、モードは0644です。ssh_userが定義されている場合、モードは0600で、owner と group はssh_user変数で指定したユーザー名から派生します。
12.4. ssh システムロールを使用した OpenSSH クライアントの設定 リンクのコピーリンクがクリップボードにコピーされました!
ssh システムロールを使用して、Ansible Playbook を実行して複数の SSH クライアントを設定できます。
ssh システムロールは、SSH および SSHD 設定を変更する他のシステムロール (ID 管理 RHEL システムロールなど) とともに使用できます。設定が上書きされないようにするには、ssh ロールがドロップインディレクトリー (RHEL 8 から デフォルト) を使用していることを確認してください。
前提条件
-
1 つ以上の 管理対象ノード (
sshシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Playbook は、以下の設定を使用して、管理対象ノードで
rootユーザーの SSH クライアント設定を行います。- 圧縮が有効になっている。
-
ControlMaster multiplexing が
autoに設定されている。 -
example.comホストに接続するためのexampleエイリアスがuser1である。 -
ホストエイリアスの
exampleが作成されている。(これはユーザー名がuser1のexample.comホストへの接続を表します。) - X11 転送が無効化されている。
必要に応じて、これらの変数は設定に合わせて変更できます。詳細は、
sshSystem Role variables を参照してください。オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check path/custom-playbook.yml
# ansible-playbook --syntax-check path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory_file path/custom-playbook.yml
# ansible-playbook -i inventory_file path/custom-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
テキストエディターで SSH 設定ファイルを開いて、管理対象ノードが正しく設定されていることを確認します。以下に例を示します。
vi ~root/.ssh/config
# vi ~root/.ssh/configCopy to Clipboard Copied! Toggle word wrap Toggle overflow 上記の Playbook の例の適用後に、設定ファイルの内容は以下のようになるはずです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
12.5. 非排他的な設定のための sshd システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
通常、sshd システムロールを適用すると、設定全体が上書きされます。これは、たとえば別のシステムロールや Playbook などを使用して、以前に設定を調整している場合に問題が発生する可能性があります。他のオプションをそのまま維持しながら、選択した設定オプションのみに sshd システムロールを適用するには、非排他的設定を使用できます。
RHEL 8 以前では、設定スニペットを使用して非排他的設定を適用することができます。
前提条件
-
1 つ以上の 管理対象ノード (
sshdシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
- 別の RHEL システムロールの Playbook。
-
手順
sshd_config_namespace変数を含む設定スニペットを Playbook に追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook をインベントリーに適用すると、ロールは次のスニペットがない場合は
/etc/ssh/sshd_configファイルに追加します。BEGIN sshd system role managed block: namespace <my-application> END sshd system role managed block: namespace <my-application>
# BEGIN sshd system role managed block: namespace <my-application> Match all AcceptEnv LANG LS_COLORS EDITOR # END sshd system role managed block: namespace <my-application>Copy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml -i inventory_file
# ansible-playbook --syntax-check playbook.yml -i inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第13章 VPN RHEL システムロールを使用した IPsec との vpn 接続の設定 リンクのコピーリンクがクリップボードにコピーされました!
vpn システムロールを使用すると、Red Hat Ansible Automation Platform を使用して RHEL システムで VPN 接続を設定できます。これを使用して、ホスト間、ネットワーク間、VPN リモートアクセスサーバー、およびメッシュ設定をセットアップできます。
ホスト間接続の場合、ロールは、必要に応じてキーを生成するなど、デフォルトのパラメーターを使用して、vpn_connections のリスト内のホストの各ペア間に VPN トンネルを設定します。または、リストされているすべてのホスト間に日和見メッシュ設定を作成するように設定することもできます。このロールは、hosts の下にあるホストの名前が Ansible インベントリーで使用されているホストの名前と同じであり、それらの名前を使用してトンネルを設定できることを前提としています。
vpn RHEL システムロールは現在、VPN プロバイダーとして IPsec 実装であ る Libreswan のみをサポートしています。
13.1. vpn システムロールを使用して IPsec でホスト間 VPN の作成 リンクのコピーリンクがクリップボードにコピーされました!
vpn システムロールを使用して、コントロールノードで Ansible Playbook を実行することにより、ホスト間接続を設定できます。これにより、インベントリーファイルにリストされているすべての管理対象ノードが設定されます。
前提条件
-
1 つ以上の 管理対象ノード (
vpnシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Playbook は、システムロールによって自動生成されたキーを使用した事前共有キー認証を使用して、
managed_node1からmanaged_node2への接続を設定します。必要に応じて、ホストの
vpn_connectionsリストに次のセクションを追加して、管理対象ホストから、インベントリーファイルに記述されていない外部ホストへの接続を設定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow これは、追加の接続 (
managed_node1からexternal_node) へと (managed_node2からexternal_node) を設定します。
接続は管理対象ノードでのみ設定され、外部ノードでは設定されません。
必要に応じて、
vpn_connections内の追加セクション (コントロールプレーンやデータプレーンなど) を使用して、管理対象ノードに複数の VPN 接続を指定できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
必要に応じて、設定に合わせて変数を変更できます。詳細は、
/usr/share/doc/rhel-system-roles/vpn/README.mdファイルを参照してください。 オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_file
# ansible-playbook --syntax-check /path/to/file/playbook.yml -i /path/to/file/inventory_fileCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.yml
# ansible-playbook -i /path/to/file/inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
管理対象ノードで、接続が正常にロードされていることを確認します。
ipsec status | grep connection.name
# ipsec status | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow connection.nameを、このノードからの接続の名前 (たとえば、
managed_node1-to-managed_node2) に置き換えます。
デフォルトでは、ロールは、各システムの観点から作成する接続ごとにわかりやすい名前を生成します。たとえば、managed_node1 と managed_node2 との間の接続を作成するときに、managed_node1 上のこの接続のわかりやすい名前は managed_node1-to-managed_node2 ですが、managed_node2 では、この接続の名前は managed_node2-to-managed_node1 となります。
管理対象ノードで、接続が正常に開始されたことを確認します。
ipsec trafficstatus | grep connection.name
# ipsec trafficstatus | grep connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要に応じて、接続が正常に読み込まれなかった場合は、次のコマンドを入力して手動で接続を追加します。これにより、接続の確立に失敗した理由を示す、より具体的な情報が提供されます。
ipsec auto --add connection.name
# ipsec auto --add connection.nameCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記接続の読み込みおよび開始のプロセス中に発生した可能性のあるエラーは、ログに報告されます。ログは、
/var/log/pluto.logにあります。これらのログは解析が難しいため、代わりに接続を手動で追加して、標準出力からログメッセージを取得してみてください。
13.2. vpn システムロールを使用して IPsec で日和見メッシュ VPN 接続の作成 リンクのコピーリンクがクリップボードにコピーされました!
vpn システムロールを使用して、コントロールノードで Ansible Playbook を実行することにより、認証に証明書を使用する日和見メッシュ VPN 接続を設定できます。これにより、インベントリーファイルにリストされているすべての管理対象ノードが設定されます。
証明書による認証は、Playbook で auth_method: cert パラメーターを定義することによって設定されます。vpn システムロールは、/etc/ipsec.d ディレクトリーで定義されている IPsec ネットワークセキュリティーサービス (NSS) 暗号ライブラリーに必要な証明書が含まれていることを前提としています。デフォルトでは、ノード名が証明書のニックネームとして使用されます。この例では、これは managed_node1 です。インベントリーで cert_name 属性を使用して、さまざまな証明書名を定義できます。
次の手順例では、Ansible Playbook を実行するシステムであるコントロールノードは、両方の管理対象ノード (192.0.2.0/24) と同じクラスレスドメイン間ルーティング (CIDR) 番号を共有し、IP アドレスは 192.0.2.7 になります。したがって、コントロールノードは、CIDR 192.0.2.0/24 用に自動的に作成されるプライベートポリシーに該当します。
再生中の SSH 接続の損失を防ぐために、コントロールノードの明確なポリシーがポリシーのリストに含まれています。ポリシーリストには、CIDR がデフォルトと等しい項目もあることに注意してください。これは、この Playbook がデフォルトポリシーのルールを上書きして、private-or-clear ではなく private にするためです。
前提条件
1 つ以上の 管理対象ノード (
vpnシステムロールで設定するシステム) へのアクセスおよびパーミッション。-
すべての管理対象ノードで、
/etc/ipsec.dディレクトリーの NSS データベースには、ピア認証に必要なすべての証明書が含まれています。デフォルトでは、ノード名が証明書のニックネームとして使用されます。
-
すべての管理対象ノードで、
コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
必要に応じて、設定に合わせて変数を変更できます。詳細は、
/usr/share/doc/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 -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第14章 システム間でのカスタム暗号化ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、システム全体の crypto_policies RHEL システムロールを使用して、Red Hat Ansible Automation Platform を使用する多くの異なるシステム間でカスタム暗号化ポリシーを迅速かつ一貫して設定できます。
14.1. crypto_policies システムロール変数およびファクト リンクのコピーリンクがクリップボードにコピーされました!
Ccrypto_policies システムロール Playbook では、設定および制限に合わせて、crypto_policies 設定ファイルのパラメーターを定義できます。
変数を設定しない場合には、システムロールではシステムが設定されず、ファクトのみが報告されます。
crypto_policies システムロールの一部の変数
crypto_policies_policy- 管理対象ノードにシステムロールを適用する暗号化ポリシーを決定します。異なる暗号化ポリシーの詳細は、システム全体の暗号化ポリシー を参照してください。
crypto_policies_reload-
yesに設定すると、暗号化ポリシーの適用後に、影響を受けるサービス (現在ipsec、バインド、およびsshdサービス) でリロードされます。デフォルトはyesです。 crypto_policies_reboot_ok-
yesに設定されており、システムロールで暗号化ポリシーを変更した後に再起動が必要な場合には、crypto_policies_reboot_requiredをyesに設定します。デフォルトはnoです。
crypto_policies システムロールにより設定されるファクト
crypto_policies_active- 現在選択されているポリシーを一覧表示します。
crypto_policies_available_policies- システムで利用可能なすべてのポリシーを表示します。
crypto_policies_available_subpolicies- システムで利用可能なすべてのサブポリシーを表示します。
14.2. crypto_policies システムロールを使用したカスタム暗号化ポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
crypto_policies システムロールを使用して、単一の制御ノードから多数の管理対象ノードを一貫して設定できます。
前提条件
-
crypto_policiesシステムロールで設定するシステムである 1 つ以上の 管理対象ノード へのアクセスとパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow FUTURE の値は、任意の暗号化ポリシー (例:
DEFAULT、LEGACY、およびFIPS:OSPP) に置き換えることができます。crypto_policies_reboot_ok: true変数を設定すると、システムロールで暗号化ポリシーを変更した後にシステムが再起動されます。詳細については、crypto_policies システムロールの変数とファクト を参照してください。
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory_file playbook.yml
# ansible-playbook -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
コントロールノードで (例:
verify_playbook.yml) という名前の別の Playbook を作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow この Playbook では、システムの設定は変更されず、管理対象ノードのアクティブなポリシーだけを報告します。
同じインベントリーファイルで Playbook を実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow "crypto_policies_active":変数は、管理対象ノードでアクティブなポリシーを表示します。
第15章 nbde_client および nbde_server システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
15.1. nbde_client および nbde_server システムロールの概要 (Clevis および Tang) リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、複数の RHEL システムをリモートで管理する一貫した設定インターフェイスを提供する Ansible ロールおよびモジュールの集合です。
RHEL 8.3 では、Clevis および Tang を使用した PBD (Policy-Based Decryption) ソリューションの自動デプロイメント用 Ansible ロールが導入されました。rhel-system-roles パッケージには、これらのシステムロール、関連する例、リファレンスドキュメントが含まれます。
nbde_client システムロールにより、複数の Clevis クライアントを自動的にデプロイできます。nbde_client ロールは、Tang バインディングのみをサポートしており、現時点では TPM2 バインディングには使用できない点に留意してください。
nbde_client ロールには、LUKS を使用して暗号化済みのボリュームが必要です。このロールは、LUKS 暗号化ボリュームの 1 つ以上の Network-Bound (NBDE) サーバー (Tang サーバー) へのバインドに対応します。パスフレーズを使用して既存のボリュームの暗号化を保持するか、または削除できます。パスフレーズを削除したら、NBDE だけを使用してボリュームのロックを解除できます。これは、システムのプロビジョニング後に削除する必要がある一時鍵またはパスワードを使用して、ボリュームが最初に暗号化されている場合に役立ちます。
パスフレーズと鍵ファイルの両方を指定する場合には、ロールは最初に指定した内容を使用します。有効なバインディングが見つからない場合は、既存のバインディングからパスフレーズの取得を試みます。
PBD では、デバイスをスロットにマッピングするものとしてバインディングを定義します。つまり、同じデバイスに複数のバインディングを指定できます。デフォルトのスロットは 1 です。
nbde_client ロールでは、state 変数も指定できます。新しいバインディングを作成するか、既存のバインディングを更新する場合は、present を使用します。clevis luks bind とは異なり、state: present を使用してデバイススロットにある既存のバインディングを上書きすることもできます。absent に設定すると、指定したバインディングが削除されます。
nbde_client システムロールを使用すると、自動ディスク暗号化ソリューションの一部として、Tang サーバーをデプロイして管理できます。このロールは以下の機能をサポートします。
- Tang 鍵のローテーション
- Tang 鍵のデプロイおよびバックアップ
15.2. 複数の Tang サーバーをセットアップするための nbde_server システムロールの使用 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、Tang サーバー設定を含む Ansible Playbook を準備および適用します。
前提条件
-
1 つ以上の 管理対象ノード (
nbde_serverシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
Tang サーバーの設定が含まれる Playbook を準備します。ゼロから開始するか、または
/usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/ディレクトリーにある Playbook のいずれかのサンプルを使用することができます。cp /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/simple_deploy.yml ./my-tang-playbook.yml
# cp /usr/share/ansible/roles/rhel-system-roles.nbde_server/examples/simple_deploy.yml ./my-tang-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 選択したテキストエディターで Playbook を編集します。以下に例を示します。
vi my-tang-playbook.yml
# vi my-tang-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なパラメーターを追加します。以下の Playbook の例では、Tang サーバーのデプロイと鍵のローテーションを確実に実行します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 終了した Playbook を適用します。
ansible-playbook -i inventory-file my-tang-playbook.yml
# ansible-playbook -i inventory-file my-tang-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここで、*
inventory-fileはインベントリーファイルに置き換えます。*logging-playbook.ymlは、使用する Playbook に置き換えます。
Clevis がインストールされているシステムで grubby ツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにするには、次のコマンドを実行します。
grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"
15.3. 複数の Clevis クライアントの設定に nbde_client システムロールを使用 リンクのコピーリンクがクリップボードにコピーされました!
手順に従って、Clevis クライアント設定を含む Ansible Playbook を準備および適用します。
nbde_client システムロールは、Tang バインディングのみをサポートします。これは、現時点では TPM2 バインディングに使用できないことを意味します。
前提条件
-
1 つ以上の 管理対象ノード (
nbde_clientシステムロールで設定するシステム) へのアクセスおよびパーミッション。 - コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
rhel-system-rolesパッケージが、Playbook を実行するシステムにインストールされている。
手順
Clevis クライアントの設定が含まれる Playbook を準備します。ゼロから開始するか、または
/usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/ディレクトリーにある Playbook のいずれかのサンプルを使用することができます。cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ./my-clevis-playbook.yml
# cp /usr/share/ansible/roles/rhel-system-roles.nbde_client/examples/high_availability.yml ./my-clevis-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 選択したテキストエディターで Playbook を編集します。以下に例を示します。
vi my-clevis-playbook.yml
# vi my-clevis-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 必要なパラメーターを追加します。以下の Playbook の例では、2 つの Tang サーバーのうち少なくとも 1 台が利用可能な場合に、LUKS で暗号化した 2 つのボリュームを自動的にアンロックするように Clevis クライアントを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 終了した Playbook を適用します。
ansible-playbook -i host1,host2,host3 my-clevis-playbook.yml
# ansible-playbook -i host1,host2,host3 my-clevis-playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Clevis がインストールされているシステムで grubby ツールを使用して、システム起動時の早い段階で Tang ピンのネットワークを利用できるようにするには、次のコマンドを実行します。
grubby --update-kernel=ALL --args="rd.neednet=1"
# grubby --update-kernel=ALL --args="rd.neednet=1"
第16章 RHEL システムロールを使用した証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
certificate システムロールを使用すると、Red Hat Ansible Core を使用して証明書の発行および管理ができます。
本章では、以下のトピックについて説明します。
16.1. certificate システムロール リンクのコピーリンクがクリップボードにコピーされました!
certificate システムロールを使用して、Ansible Core を使用し、TLS および SSL の証明書の発行および更新を管理できます。
ロールは certmonger を証明書プロバイダーとして使用し、自己署名証明書の発行と更新、および IdM 統合認証局 (CA) の使用を現時点でサポートしています。
certificate システムロールを使用すると、Ansible Playbook で以下の変数を使用できます。
certificate_wait- タスクが証明書を発行するまで待機するかどうかを指定します。
certificate_requests- 発行する各証明書とそのパラメーターを表すには、次のコマンドを実行します。
16.2. certificate システムロールを使用した新しい自己署名証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
certificate システムロールでは、Ansible Core を使用して自己署名の証明書を発行できます。
このプロセスは、certmonger プロバイダーを使用し、getcert コマンドで証明書を要求します。
デフォルトでは、certmonger は有効期限が切れる前に証明書の更新を自動的に試行します。これは、Ansible Playbook の auto_renew パラメーターを no に設定すると無効にできます。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。
手順
オプション:
inventory.fileなどのインベントリーファイルを作成します。*touch inventory.file*
$ *touch inventory.file*Copy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルを開き、証明書を要求するホストを定義します。以下に例を示します。
[webserver] server.idm.example.com
[webserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook ファイルを作成します (例:
request-certificate.yml)。-
webserverなど、証明書を要求するホストを含むようにhostsを設定します。 certificate_requests変数を設定して以下を追加します。-
nameパラメーターを希望する証明書の名前 (mycertなど) に設定します。 -
dnsパラメーターを*.example.comなどの証明書に含むドメインに設定します。 -
caパラメーターをself-signに設定します。
-
rolesの下にrhel-system-roles.certificateロールを設定します。以下は、この例の Playbook ファイルです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- ファイルを保存します。
Playbook を実行します。
*ansible-playbook -i inventory.file request-certificate.yml*
$ *ansible-playbook -i inventory.file request-certificate.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.3. certificate システムロールを使用した IdM CA からの新しい証明書の要求 リンクのコピーリンクがクリップボードにコピーされました!
certificate システムロールでは、統合認証局 (CA) で IdM サーバーを使用しているときに、anible-core を使用して証明書を発行できます。したがって、IdM を CA として使用する場合に、複数のシステムの証明書トラストチェーンを効率的かつ一貫して管理できます。
このプロセスは、certmonger プロバイダーを使用し、getcert コマンドで証明書を要求します。
デフォルトでは、certmonger は有効期限が切れる前に証明書の更新を自動的に試行します。これは、Ansible Playbook の auto_renew パラメーターを no に設定すると無効にできます。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。
手順
オプション:
inventory.fileなどのインベントリーファイルを作成します。*touch inventory.file*
$ *touch inventory.file*Copy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルを開き、証明書を要求するホストを定義します。以下に例を示します。
[webserver] server.idm.example.com
[webserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook ファイルを作成します (例:
request-certificate.yml)。-
webserverなど、証明書を要求するホストを含むようにhostsを設定します。 certificate_requests変数を設定して以下を追加します。-
nameパラメーターを希望する証明書の名前 (mycertなど) に設定します。 -
dnsパラメーターをドメインに設定し、証明書に追加します (例:www.example.com)。 -
principalパラメーターを設定し、Kerberos プリンシパルを指定します (例:HTTP/www.example.com@EXAMPLE.COM)。 -
caパラメーターをipaに設定します。
-
rolesの下にrhel-system-roles.certificateロールを設定します。以下は、この例の Playbook ファイルです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- ファイルを保存します。
Playbook を実行します。
*ansible-playbook -i inventory.file request-certificate.yml*
$ *ansible-playbook -i inventory.file request-certificate.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.4. certificate システムロールを使用して、証明書の発行前または発行後に実行するコマンドの指定 リンクのコピーリンクがクリップボードにコピーされました!
certificate ロールでは、Ansible Core を使用して、証明書の発行または更新の前後にコマンドを実行できます。
以下の例では、管理者が www.example.com の自己署名証明書を発行または更新する前に httpd サービスを停止し、後で再起動します。
デフォルトでは、certmonger は有効期限が切れる前に証明書の更新を自動的に試行します。これは、Ansible Playbook の auto_renew パラメーターを no に設定すると無効にできます。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。
手順
オプション:
inventory.fileなどのインベントリーファイルを作成します。*touch inventory.file*
$ *touch inventory.file*Copy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルを開き、証明書を要求するホストを定義します。以下に例を示します。
[webserver] server.idm.example.com
[webserver] server.idm.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook ファイルを作成します (例:
request-certificate.yml)。-
webserverなど、証明書を要求するホストを含むようにhostsを設定します。 certificate_requests変数を設定して以下を追加します。-
nameパラメーターを希望する証明書の名前 (mycertなど) に設定します。 -
dnsパラメーターをドメインに設定し、証明書に追加します (例:www.example.com)。 -
caパラメーターを証明書を発行する際に使用する CA に設定します (例:self-sign)。 -
この証明書を発行または更新する前に、
run_beforeパラメーターを実行するコマンドに設定します (例:systemctl stop httpd.service)。 -
この証明書を発行または更新した後に、
run_afterパラメーターを実行するコマンドに設定します (例:systemctl start httpd.service)。
-
rolesの下にrhel-system-roles.certificateロールを設定します。以下は、この例の Playbook ファイルです。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
- ファイルを保存します。
Playbook を実行します。
*ansible-playbook -i inventory.file request-certificate.yml*
$ *ansible-playbook -i inventory.file request-certificate.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第17章 RHEL システムロールを使用した kdump の設定 リンクのコピーリンクがクリップボードにコピーされました!
Ansible を使用して kdump を管理するには、RHEL 8 で使用可能な RHEL システムロールの 1 つである kdump ロールを使用できます。
kdump ロールを使用すると、後で分析するためにシステムのメモリーの内容を保存する場所を指定できます。
RHEL システムロールと、その適用方法の詳細は、RHEL システムロールの概要 を参照してください。
17.1. kdump RHEL システムロール リンクのコピーリンクがクリップボードにコピーされました!
kdump システムロールを使用すると、複数のシステムに基本的なカーネルダンプパラメーターを設定できます。
17.2. kdump ロールのパラメーター リンクのコピーリンクがクリップボードにコピーされました!
kdump RHEL システムロールに使用されるパラメーターは次のとおりです。
| ロール変数 | 説明 |
|---|---|
| kdump_path |
|
17.3. RHEL システムロールを使用した kdump の設定 リンクのコピーリンクがクリップボードにコピーされました!
Ansible Playbook を実行して kdump システムロールを使用し、複数のシステムに基本的なカーネルダンプパラメーターを設定できます。
kdump ロールは、/etc/kdump.conf ファイルを置き換えることで、管理対象ホストの kdump 設定全体を置き換えます。また、kdump ロールが適用されると、 /etc/sysconfig/kdump ファイルを置き換えて、ロール変数で指定されていない場合でも、以前の kdump の設定もすべて置き換えられます。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 -
kdumpをデプロイするシステムを一覧表示するインベントリーファイルがある。
手順
以下の内容を含む新しい
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 -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第18章 RHEL システムロールを使用したローカルストレージの管理 リンクのコピーリンクがクリップボードにコピーされました!
Ansible を使用して LVM とローカルファイルシステム (FS) を管理するには、RHEL 8 で使用可能な RHEL システムロールの 1 つである storage ロールを使用できます。
storage ロールを使用すると、ディスク上のファイルシステム、複数のマシンにある論理ボリューム、および RHEL 7.7 以降の全バージョンでのファイルシステムの管理を自動化できます。
RHEL システムロールと、その適用方法の詳細は、RHEL システムロールの概要 を参照してください。
18.1. storage RHEL システムロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
storage ロールは以下を管理できます。
- パーティションが分割されていないディスクのファイルシステム
- 論理ボリュームとファイルシステムを含む完全な LVM ボリュームグループ
- MD RAID ボリュームとそのファイルシステム
storage ロールを使用すると、次のタスクを実行できます。
- ファイルシステムを作成する
- ファイルシステムを削除する
- ファイルシステムをマウントする
- ファイルシステムをアンマウントする
- LVM ボリュームグループを作成する
- LVM ボリュームグループを削除する
- 論理ボリュームを作成する
- 論理ボリュームを削除する
- RAID ボリュームを作成する
- RAID ボリュームを削除する
- RAID で LVM ボリュームグループを作成する
- RAID で LVM ボリュームグループを削除する
- 暗号化された LVM ボリュームグループを作成する
- RAID で LVM 論理ボリュームを作成する
18.2. storage システムロールでストレージデバイスを識別するパラメーター リンクのコピーリンクがクリップボードにコピーされました!
storage ロールの設定は、以下の変数に記載されているファイルシステム、ボリューム、およびプールにのみ影響します。
storage_volumes管理対象のパーティションが分割されていない全ディスク上のファイルシステムの一覧
storage_volumesにはraidボリュームを含めることもできます。現在、パーティションはサポートされていません。
storage_pools管理するプールの一覧
現在、サポートされている唯一のプールタイプは LVM です。LVM では、プールはボリュームグループ (VG) を表します。各プールの下には、ロールで管理されるボリュームの一覧があります。LVM では、各ボリュームは、ファイルシステムを持つ論理ボリューム (LV) に対応します。
18.3. ブロックデバイスに XFS ファイルシステムを作成する Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook では、storage ロールを適用し、デフォルトパラメーターを使用してブロックデバイスに XFS ファイルシステムを作成します。
storage ロールは、パーティションが分割されていないディスク全体または論理ボリューム (LV) でのみファイルシステムを作成できます。パーティションにファイルシステムを作成することはできません。
例18.1 /dev/sdb に XFS を作成する Playbook
-
現在、ボリューム名 (この例では
barefs) は任意です。storageロールは、disks:属性に一覧表示されているディスクデバイスでボリュームを特定します。 -
XFS は RHEL 8 のデフォルトファイルシステムであるため、
fs_type: xfs行を省略することができます。 論理ボリュームにファイルシステムを作成するには、エンクロージングボリュームグループを含む
disks:属性の下に LVM 設定を指定します。詳細は、Example Ansible playbook to manage logical volumes を参照してください。LV デバイスへのパスを指定しないでください。
18.4. ファイルシステムを永続的にマウントする Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage ロールをすぐに適用して、XFS ファイルシステムを永続的にマウントします。
例18.2 /dev/sdb のファイルシステムを /mnt/data にマウントする Playbook
-
この Playbook では、ファイルシステムが
/etc/fstabファイルに追加され、すぐにファイルシステムをマウントします。 -
/dev/sdbデバイス上のファイルシステム、またはマウントポイントのディレクトリーが存在しない場合は、Playbook により作成されます。
18.5. 論理ボリュームを管理する Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage ロールを適用して、ボリュームグループに LVM 論理ボリュームを作成します。
例18.3 myvg ボリュームグループに mylv 論理ボリュームを作成する Playbook
myvgボリュームグループは、次のディスクで設定されます。-
/dev/sda -
/dev/sdb -
/dev/sdc
-
-
myvgボリュームグループがすでに存在する場合は、Playbook により論理ボリュームがボリュームグループに追加されます。 -
myvgボリュームグループが存在しない場合は、Playbook により作成されます。 -
Playbook は、
mylv論理ボリューム上に Ext4 ファイルシステムを作成し、/mntファイルシステムを永続的にマウントします。
18.6. オンラインのブロック破棄を有効にする Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook では、storage ロールを適用して、オンラインのブロック破棄を有効にして XFS ファイルシステムをマウントします。
例18.4 /mnt/data/ でのオンラインのブロック破棄を有効にする Playbook
18.7. Ext4 ファイルシステムを作成してマウントする Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage ロールを適用して、Ext4 ファイルシステムを作成してマウントします。
例18.5 /dev/sdb に Ext4 を作成し、/mnt/data にマウントする Playbook
-
Playbook は、
/dev/sdbディスクにファイルシステムを作成します。 -
Playbook は、
/mnt/dataディレクトリーにファイルシステムを永続的にマウントします。 -
ファイルシステムのラベルは
label-nameです。
18.8. ext3 ファイルシステムを作成してマウントする Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage ロールを適用して、Ext3 ファイルシステムを作成してマウントします。
例18.6 /dev/sdb に Ext3 を作成し、/mnt/data にマウントする Playbook
-
Playbook は、
/dev/sdbディスクにファイルシステムを作成します。 -
Playbook は、
/mnt/dataディレクトリーにファイルシステムを永続的にマウントします。 -
ファイルシステムのラベルは
label-nameです。
18.9. storage RHEL システムロールを使用して既存の Ext4 または Ext3 ファイルシステムのサイズを変更する Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage ロールを適用して、ブロックデバイスにある既存の Ext4 または Ext3 ファイルシステムのサイズを変更します。
例18.7 ディスクに単一ボリュームを設定する Playbook
-
直前の例のボリュームがすでに存在する場合に、ボリュームサイズを変更するには、異なるパラメーター
sizeの値で、同じ Playbook を実行する必要があります。以下に例を示します。
例18.8 /dev/sdb で ext4 のサイズを変更する Playbook
- 現在、ボリューム名 (この例では barefs) は任意です。Storage ロールは、disks: 属性に一覧表示されているディスクデバイスでボリュームを特定します。
他のファイルシステムで Resizing アクションを使用すると、作業しているデバイスのデータを破棄する可能性があります。
18.10. storage RHEL システムロールを使用して LVM 上の既存のファイルシステムのサイズを変更する Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage RHEL システムロールを適用して、ファイルシステムを使用して LVM 論理ボリュームのサイズを変更します。
他のファイルシステムで Resizing アクションを使用すると、作業しているデバイスのデータを破棄する可能性があります。
例18.9 myvg ボリュームグループの既存の mylv1 および myvl2 論理ボリュームのサイズを変更する Playbook
この Playbook は、以下の既存のファイルシステムのサイズを変更します。
-
/opt/mount1にマウントされるmylv1ボリュームの Ext4 ファイルシステムは、そのサイズを 10 GiB に変更します。 -
/opt/mount2にマウントされるmylv2ボリュームの Ext4 ファイルシステムは、そのサイズを 50 GiB に変更します。
-
18.11. storage RHEL System Role を使用してスワップボリュームを作成する Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は、storage ロールを適用して、スワップボリュームが存在しない場合は作成し、スワップボリュームが既に存在する場合は、デフォルトのパラメーターを使用してブロックデバイスに変更します。
例18.10 /dev/sdb で既存の XFS を作成または変更する Playbook
-
現在、ボリューム名 (この例では
swap_fs) は任意です。storageロールは、disks:属性に一覧表示されているディスクデバイスでボリュームを特定します。
18.12. Storage システムロールを使用した RAID ボリュームの設定 リンクのコピーリンクがクリップボードにコピーされました!
storage システムロールを使用すると、Red Hat Ansible Automation Platform と Ansible-Core を使用して RHEL に RAID ボリュームを設定できます。要件に合わせて RAID ボリュームを設定するためのパラメーターを使用して、Ansible Playbook を作成します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 -
storageシステムロールを使用して、RAID ボリュームをデプロイするシステムの詳細を記録したインベントリーファイルがある。
手順
以下のコンテンツを含む新しい playbook.yml ファイルを作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 警告特定の状況でデバイス名が変更する場合があります。たとえば、新しいディスクをシステムに追加するときなどです。したがって、データの損失を防ぐために、Playbook で特定のディスク名を使用しないでください。
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Playbook を実行します。
ansible-playbook -i inventory.file /path/to/file/playbook.yml
# ansible-playbook -i inventory.file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.13. storage RHEL System Role を使用して RAID で LVM プールを設定する リンクのコピーリンクがクリップボードにコピーされました!
storage システムロールを使用すると、Red Hat Ansible Automation Platform を使用して RHEL に LVM pool with RAID を設定できます。本セクションでは、利用可能なパラメーターを使用して Ansible Playbook を設定し、LVM pool with RAID を設定する方法を説明します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 -
storageシステムロールを使用して、LVM pool with RAID を設定するシステムの詳細を記録したインベントリーファイルがある。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記LVM pool with RAID を作成するには、
raid_levelパラメーターを使用して RAID タイプを指定する必要があります。オプション:Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory.file /path/to/file/playbook.yml
# ansible-playbook -i inventory.file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.14. storage RHEL システムロールを使用し、LVM 上の VDO ボリュームを圧縮および重複排除する Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook は storage RHEL System Role を適用して、Virtual Data Optimizer (VDO) を使用して論理ボリューム (LVM) の圧縮および重複排除を有効にします。
例18.11 myvg ボリュームグループに、mylv1 LVM VDO ボリュームを作成する Playbook
この例では、compression プールおよび deduplication プールを true に設定します。これは、VDO が使用されることを指定します。以下では、このパラメーターの使用方法を説明します。
-
deduplicationは、ストレージボリュームに保存されている重複データの重複排除に使用されます。 - 圧縮は、ストレージボリュームに保存されているデータを圧縮するために使用されます。これにより、より大きなストレージ容量が得られます。
-
vdo_pool_size は、ボリュームがデバイスで使用する実際のサイズを指定します。VDO ボリュームの仮想サイズは、
sizeパラメーターで設定します。注記: LVM VDO はストレージロールで使用されるため、プールごとに圧縮と重複排除を使用できるボリュームは 1 つだけです。
18.15. storage RHEL System Role を使用して LUKS 暗号化ボリュームを作成する リンクのコピーリンクがクリップボードにコピーされました!
storage ロールを使用し、Ansible Playbook を実行して、LUKS で暗号化されたボリュームを作成および設定できます。
前提条件
-
crypto_policiesシステムロールで設定するシステムである 1 つ以上の 管理対象ノード へのアクセスとパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。
-
RHEL 8.0-8.5 では、別の Ansible リポジトリーへのアクセス権を指定されており、Ansible をベースにする自動化用の Ansible Engine 2.9 が含まれています。Ansible Engine には、ansible、ansible-playbook などのコマンドラインユーティリティー、docker や podman などのコネクター、プラグインとモジュールが多く含まれています。Ansible Engine を入手してインストールする方法については、ナレッジベースの How to download and install Red Hat Ansible Engine を参照してください。
RHEL 8.6 および 9.0 では、Ansible Core (ansible-core パッケージとして提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、およびビルトイン Ansible プラグインのセットが含まれています。RHEL は、AppStream リポジトリーを介してこのパッケージを提供し、サポート範囲は限定的です。詳細については、ナレッジベースの Scope of support for the Ansible Core package included in the RHEL 9 and RHEL 8.6 and later AppStream repositories を参照してください。
- 管理対象ノードが記載されているインベントリーファイルがある。
手順
以下の内容を含む新しい
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 -i inventory.file /path/to/file/playbook.yml
# ansible-playbook -i inventory.file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
18.16. storage RHEL システムロールを使用し、プールのボリュームサイズをパーセンテージで表す Ansible Playbook の例 リンクのコピーリンクがクリップボードにコピーされました!
本セクションでは、Ansible Playbook の例を紹介します。この Playbook では、storage システムロールを適用して、論理マネージャーボリューム (LVM) ボリュームのサイズをプールの合計サイズのパーセンテージで表現できるようにします。
例18.12 ボリュームのサイズをプールの合計サイズのパーセンテージで表現する Playbook
この例では、LVM ボリュームのサイズを、プールサイズのパーセンテージで指定します (例: "60%")。また、LVM ボリュームのサイズを、人間が判読できるファイルシステムのサイズ ("10g" や "50 GiB" など) で、プールサイズのパーセンテージで指定することもできます。
第19章 RHEL システムロールを使用した時刻同期の設定 リンクのコピーリンクがクリップボードにコピーされました!
timesync RHEL システムロールを使用すると、Red Hat Ansible Automation Platform を使用して RHEL の複数のターゲットマシンで時刻同期を管理できます。
19.1. timesync RHEL システムロール リンクのコピーリンクがクリップボードにコピーされました!
timesync RHEL システムロールを使用して、複数のターゲットマシンで時刻同期を管理できます。
システムクロックが NTP サーバーまたは PTP ドメインのグランドマスターに同期するように、timesync ロールが NTP 実装または PTP 実装をインストールし、NTP クライアントまたは PTP レプリカとして動作するように設定します。
timesync ロールを使用すると、システムが ntp または chrony を使用して NTP プロトコルを実装するかどうかにかかわらず、RHEL 6 以降のすべてのバージョンの Red Hat Enterprise Linux で同じ Playbook を使用できるため、chrony への移行 が容易になります。
19.2. サーバーの 1 つのプールへの timesync システムロールの適用 リンクのコピーリンクがクリップボードにコピーされました!
以下の例は、サーバーにプールが 1 つしかない場合に、timesync ロールを適用する方法を示しています。
timesync ロールは、管理対象ホストで指定または検出されたプロバイダーサービスの設定を置き換えます。以前の設定は、ロール変数で指定されていなくても失われます。timesync_ntp_provider 変数が定義されていない場合は、プロバイダーの唯一の設定が適用されます。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 -
timesyncシステムロールをデプロイするシステムを一覧表示するインベントリーファイルがある。
手順
以下の内容を含む新しい
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 -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
19.3. クライアントサーバーでの timesync システムロールの適用 リンクのコピーリンクがクリップボードにコピーされました!
timesync ロールを使用すると、NTP クライアントで Network Time Security (NTS) を有効にできます。Network Time Security (NTS) は、Network Time Protocol (NTP) で指定される認証メカニズムです。サーバーとクライアント間で交換される NTP パケットが変更されていないことを確認します。
timesync ロールは、管理対象ホストで指定または検出されたプロバイダーサービスの設定を置き換えます。以前の設定は、ロール変数で指定されていなくても失われます。timesync_ntp_provider 変数が定義されていない場合は、プロバイダーの唯一の設定が適用されます。
前提条件
-
timesyncソリューションをデプロイするシステムに Red Hat Ansible Automation Platform をインストールする必要はありません。 -
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 -
timesyncシステムロールをデプロイするシステムの一覧を示すインベントリーファイルがある。 -
chronyの NTP プロバイダーバージョンは 4.0 以降。
手順
以下の内容を含む
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ptbtime1.ptb.deは、公開サーバーの例です。別のパブリックサーバーまたは独自のサーバーを使用できます。オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
クライアントマシンでテストを実行します。
chronyc -N authdata
# chronyc -N authdata Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen ===================================================================== ptbtime1.ptb.de NTS 1 15 256 157 0 0 8 100Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 報告された cookie の数がゼロよりも多いことを確認します。
19.4. timesync システムロール変数 リンクのコピーリンクがクリップボードにコピーされました!
以下の変数を timesync ロールに渡すことができます。
-
timesync_ntp_servers:
| ロール変数の設定 | 説明 |
|---|---|
| hostname: host.example.com | サーバーのホスト名またはアドレス。 |
| minpoll: number | 最小ポーリング間隔。デフォルト: 6 |
| maxpoll: number | 最大ポーリングの間隔。デフォルト: 10 |
| iburst: yes | 高速な初期同期を有効にするフラグ。デフォルト: no |
| pool: yes | ホスト名の解決された各アドレスが別の NTP サーバーであることを示すフラグ。デフォルト: no |
| nts: yes | Network Time Security (NTS) を有効にするフラグ。デフォルト: no. Supported only with chrony >= 4.0. |
第20章 RHEL システムロールを使用したパフォーマンスの監視 リンクのコピーリンクがクリップボードにコピーされました!
システム管理者は、Ansible Automation Platform コントロールノードで metrics RHEL システムロールを使用して、システムのパフォーマンスを監視できます。
20.1. metrics システムロールの概要 リンクのコピーリンクがクリップボードにコピーされました!
RHEL システムロールは、複数の RHEL システムをリモートで管理する一貫した設定インターフェイスを提供する Ansible ロールおよびモジュールの集合です。metrics システムロールは、ローカルシステムのパフォーマンス分析サービスを設定します。これには、オプションでローカルシステムによって監視されるリモートシステムの一覧が含まれます。metrics システムロールを使用すると、pcp の設定とデプロイメントが Playbook によって処理されるため、pcp を個別に設定せずに、pcp を使用してシステムパフォーマンスを監視できます。
| ロール変数 | 説明 | 使用例 |
|---|---|---|
| metrics_monitored_hosts |
ターゲットホストが分析するリモートホストの一覧。これらのホストにはターゲットホストにメトリックが記録されるため、各ホストの |
|
| metrics_retention_days | 削除前のパフォーマンスデータの保持日数を設定します。 |
|
| metrics_graph_service |
|
|
| metrics_query_service |
|
|
| metrics_provider |
メトリックを提供するために使用するメトリックコレクターを指定します。現在、サポートされている唯一のメトリックプロバイダーは |
|
metrics_connections で使用されるパラメーターの詳細と、metrics システムロールに関する追加情報は、/usr/share/ansible/roles/rhel-system-roles.metrics/README.md ファイルを参照してください。
20.2. metrics システムロールを使用した視覚化によるローカルシステムの監視 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、metrics RHEL システムロールを使用してローカルシステムを監視し、Grafana でデータ可視化を同時にプロビジョニングする方法を説明します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
監視するマシンに
rhel-system-rolesパッケージがインストールされている。
手順
以下のコンテンツをインベントリーに追加して、
/etc/ansible/hostsAnsible インベントリーのlocalhostを設定します。localhost ansible_connection=local
localhost ansible_connection=localCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容を含む Ansible Playbook を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible Playbook の実行:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記metrics_graph_serviceのブール値が value="yes" に設定されているため、Grafanaは自動的にインストールされ、データソースとして追加されたpcpでプロビジョニングされます。-
マシンで収集されるメトリックを視覚化するには、Grafana Web UI へのアクセス の説明どおりに
grafanaWeb インターフェイスにアクセスします。
20.3. metrics システムロールを使用した自己監視のための個別システムフリートの設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、metrics システムロールを使用して、それ自体を監視するマシンフリートの設定方法を説明します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook の実行に使用するマシンに
rhel-system-rolesパッケージがインストールされている。 - SSH 接続が確立している。
手順
Playbook 経由で監視するマシンの名前または IP を、括弧で囲まれた識別グループ名で
/etc/ansible/hostsAnsible インベントリーファイルに追加します。[remotes] webserver.example.com database.example.com
[remotes] webserver.example.com database.example.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容を含む Ansible Playbook を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible Playbook の実行:
ansible-playbook name_of_your_playbook.yml -k
# ansible-playbook name_of_your_playbook.yml -kCopy to Clipboard Copied! Toggle word wrap Toggle overflow
リモートシステムに接続するためのパスワードを求められる -k です。
20.4. metrics システムロールを使用したローカルマシン経由でのマシンフリートの一元監視 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、grafana を介したデータの視覚化のプロビジョニングおよび redis 経由でのデータのクエリーをしながら、metrics システムロールを使用して、マシンフリートを一元管理するローカルマシンの設定方法を説明します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook の実行に使用するマシンに
rhel-system-rolesパッケージがインストールされている。
手順
以下の内容を含む Ansible Playbook を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible Playbook の実行:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注記metrics_graph_serviceおよびmetrics_query_serviceのブール値は value="yes" に設定されているため、grafanaは、redisにインデックス化されたpcpデータの記録のあるデータソースとして追加されたpcpで自動的にインストールおよびプロビジョニングされます。これにより、pcpクエリー言語をデータの複雑なクエリーに使用できます。-
マシンによって一元的に収集されるメトリックのグラフィック表示とデータのクエリーを行うには、Grafana Web UI へのアクセス で説明されているように、
grafanaWeb インターフェイスにアクセスします。
20.5. metrics システムロールを使用したシステム監視中の認証設定 リンクのコピーリンクがクリップボードにコピーされました!
PCP は、Simple Authentication Security Layer (SASL) フレームワークを介して scram-sha-256 認証メカニズムに対応します。metrics RHEL システムロールは、scram-sha-256 認証メカニズムを使用して認証を設定する手順を自動化します。この手順では、metrics RHEL システムロールを使用して、認証を設定する方法を説明します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
Playbook の実行に使用するマシンに
rhel-system-rolesパッケージがインストールされている。
手順
認証を設定する Ansible Playbook に、以下の変数を追加します。
--- vars: metrics_username: your_username metrics_password: your_password--- vars: metrics_username: your_username metrics_password: your_passwordCopy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible Playbook の実行:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
sasl設定を確認します。pminfo -f -h "pcp://ip_adress?username=your_username" disk.dev.read
# pminfo -f -h "pcp://ip_adress?username=your_username" disk.dev.read Password: disk.dev.read inst [0 or "sda"] value 19540Copy to Clipboard Copied! Toggle word wrap Toggle overflow ip_adress は、ホストの IP アドレスに置き換える必要があります。
20.6. metrics システムロールを使用した SQL サーバーのメトリクスコレクションの設定と有効化 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、metrics RHEL システムロールを使用して、ローカルシステムの pcp を使用して Microsoft SQL Server のメトリック収集の設定と有効化を自動化する方法を説明します。
前提条件
- Ansible Core パッケージがコントロールマシンにインストールされている。
-
監視するマシンに
rhel-system-rolesパッケージがインストールされている。 - Red Hat Enterprise Linux に Microsoft SQL Server をインストールし、SQL Server への信頼できる接続を確立している。Red Hat に SQL Server をインストールしてデータベースを作成する を参照してください。
- Red Hat Enterprise Linux 用の SQL Server の Microsoft ODBC ドライバーがインストールされている。Red Hat Enterprise Server および Oracle Linux を参照してください。
手順
以下のコンテンツをインベントリーに追加して、
/etc/ansible/hostsAnsible インベントリーのlocalhostを設定します。localhost ansible_connection=local
localhost ansible_connection=localCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下の内容が含まれる Ansible Playbook を作成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible Playbook の実行:
ansible-playbook name_of_your_playbook.yml
# ansible-playbook name_of_your_playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証手順
pcpコマンドを使用して、SQL Server PMDA エージェント (mssql) が読み込まれ、実行されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow
第21章 microsoft.sql.server Ansible ロールを使用した Microsoft SQL Server の設定 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、microsoft.sql.server Ansible ロールを使用して、Microsoft SQL Server (SQL Server) をインストール、設定、および起動できます。microsoft.sql.server Ansible ロールは、オペレーティングシステムを最適化して、SQL Server のパフォーマンスとスループットを向上させます。このロールは、SQL Server ワークロードを実行するために推奨される設定を使用し、RHEL ホストの設定を簡素化して自動化します。
21.1. 前提条件 リンクのコピーリンクがクリップボードにコピーされました!
- 2GB の RAM
-
SQL Server を設定する管理対象ノードへの
rootアクセス 事前設定済みファイアウォール
ロールがファイアウォールを自動的に管理できるように、
mssql_manage_firewall変数をtrueに設定できます。または、
mssql_tcp_port変数で設定された SQL Server TCP ポートで接続を有効にします。この変数を定義しないと、ロールのデフォルトは TCP ポート番号1443になります。新しいポートを追加するには、次のコマンドを実行します。
firewall-cmd --add-port=xxxx/tcp --permanent firewall-cmd --reload
# firewall-cmd --add-port=xxxx/tcp --permanent # firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow xxx を TCP ポート番号に置き換え、ファイアウォールルールを再読み込みします。
-
オプション - SQL ステートメントと、それを SQL Server に入力するプロシージャーを含む、
.sql拡張子を持つファイルを作成します。
21.2. microsoft.sql.server Ansible ロールのインストール リンクのコピーリンクがクリップボードにコピーされました!
microsoft.sql.server Ansible ロールは、ansible-collection-microsoft-sql パッケージに含まれています。
前提条件
-
rootアクセス
手順
RHEL 8 AppStream リポジトリーで利用可能な Ansible Core をインストールします。
*yum install ansible-core*
# *yum install ansible-core*Copy to Clipboard Copied! Toggle word wrap Toggle overflow microsoft.sql.serverAnsible ロールをインストールします。*yum install ansible-collection-microsoft-sql*
# *yum install ansible-collection-microsoft-sql*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.3. microsoft.sql.server Ansible ロールを使用した SQL サーバーのインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
microsoft.sql.server Ansible ロールを使用して、SQL サーバーをインストールおよび設定できます。
前提条件
- Ansible インベントリーが作成されます。
手順
-
拡張子が
.ymlのファイルを作成します。例:mssql-server.yml 以下の内容を
.ymlに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow <password> を、使用している SQL Server のパスワードに置き換えます。
mssql-server.ymlAnsible Playbook を実行します。*ansible-playbook mssql-server.yml*
# *ansible-playbook mssql-server.yml*Copy to Clipboard Copied! Toggle word wrap Toggle overflow
21.4. TLS 変数 リンクのコピーリンクがクリップボードにコピーされました!
次の変数を使用して、トランスポートレベルセキュリティー (TLS) プロトコルを設定できます。
| ロール変数 | 説明 |
|---|---|
| mssql_tls_enable | この変数は、TLS 暗号化を有効または無効にします。
|
| mssql_tls_cert | この変数を定義するには、TLS 証明書ファイルのパスを入力します。 |
| mssql_tls_private_key | この変数を定義するには、秘密鍵ファイルのパスを入力します。 |
| mssql_tls_remote_src |
ロールが
デフォルトの
|
| mssql_tls_version | この変数を定義して、使用する TSL バージョンを選択します。
既定値は |
| mssql_tls_force |
この変数を
デフォルトは |
21.5. MLServices の EULA への同意 リンクのコピーリンクがクリップボードにコピーされました!
必要な SQL Server Machine Learning Services (MLServices) をインストールするには、Python パッケージおよび R パッケージのオープンソースディストリビューション用のすべての EULA に同意する必要があります。
使用許諾条件は、/usr/share/doc/mssql-server を参照してください。
| ロール変数 | 説明 |
|---|---|
| mssql_accept_microsoft_sql_server_standard_eula |
この変数は、
条件に同意する場合は、この変数を
デフォルトは |
21.6. Microsoft ODBC 17 向け EULA への同意 リンクのコピーリンクがクリップボードにコピーされました!
すべての EULA に同意し、Microsoft Open Database Connectivity (ODBC) ドライバーをインストールする必要があります。
使用許諾条件については、/usr/share/doc/msodbcsql17/LICENSE.txt および /usr/share/doc/mssql-tools/LICENSE.txt を参照してください。
| ロール変数 | 説明 |
|---|---|
| mssql_accept_microsoft_odbc_driver_17_for_sql_server_eula |
この変数は、
条件に同意する場合は、この変数を
デフォルトは |
| mssql_accept_microsoft_cli_utilities_for_sql_server_eula |
この変数は、
条件に同意する場合は、この変数を
デフォルトは |
21.7. 高可用性変数 リンクのコピーリンクがクリップボードにコピーされました!
次の表の変数を使用して、Microsoft SQL Server の高可用性を設定できます。
| 変数 | 説明 |
|---|---|
|
|
デフォルト値は
|
|
|
この変数は、ホストで設定できるレプリカのタイプを指定します。この変数は、 |
|
|
デフォルトのポートは ロールは、この TCP ポートを使用して、Always On 可用性グループのデータをレプリケートします。 |
|
| Always On 可用性グループのメンバー間のトランザクションを保護するには、証明書の名前を定義する必要があります。 |
|
| 証明書で使用するマスターキーのパスワードを設定する必要があります。 |
|
| 証明書で使用する秘密鍵のパスワードを設定する必要があります。 |
|
|
デフォルト値は
|
|
| 設定するエンドポイントの名前を定義する必要があります。 |
|
| 設定する可用性グループの名前を定義する必要があります。 |
|
| レプリケートするデータベースのリストを定義できます。それ以外の場合、ロールはデータベースをレプリケートせずにクラスターを作成します。 |
|
| SQL Server Pacemaker リソースエージェントは、このユーザーを使用してデータベースの正常性チェックを実行し、レプリカからプライマリーサーバーへの状態遷移を管理します。 |
|
|
SQL Server の |
|
|
デフォルト値は
この変数は、このロールが
この制限を回避するために、
|
このロールは、データベースを /var/opt/mssql/data/ ディレクトリーにバックアップすることに注意してください。
Microsoft SQL Server で高可用性変数を使用する方法の例:
-
Automation Hub からロールをインストールする場合は、サーバー上の
~/.ansible/collections/ansible_collections/microsoft/sql/roles/server/README.mdファイルを参照してください。 -
パッケージからロールをインストールする場合は、ブラウザーで
/usr/share/microsoft/sql-server/README.htmlファイルを開きます。
第22章 tlog RHEL システムロールを使用したセッションの記録用のシステムの設定 リンクのコピーリンクがクリップボードにコピーされました!
tlog RHEL システムロールを使用すると、Red Hat Ansible Automation Platform を使用して RHEL で端末セッションを録画するようにシステムを設定できます。
22.1. tlog システムロール リンクのコピーリンクがクリップボードにコピーされました!
tlog RHEL システムロールを使用して、RHEL での端末セッションの録画用に RHEL システムを設定できます。
SSSD サービスを使用して、ユーザーごと、またはユーザーグループごとに録画を行うように設定できます。
22.2. tlog システムロールのコンポーネントおよびパラメーター リンクのコピーリンクがクリップボードにコピーされました!
セッションの録画ソリューションには、以下のコンポーネントがあります。
-
tlogユーティリティー - System Security Services Daemon (SSSD)
- オプション: Web コンソールインターフェイス
tlog RHEL システムロールに使用されるパラメーターは以下のとおりです。
| ロール変数 | 説明 |
|---|---|
| tlog_use_sssd (default: yes) | SSSD を使用してセッションの録画を設定します (録画したユーザーまたはグループの管理方法として推奨)。 |
| tlog_scope_sssd (default: none) | SSSD 録画スコープの設定: all / some / none |
| tlog_users_sssd (default: []) | 録画するユーザーの YAML リスト |
| tlog_groups_sssd (default: []) | 録画するグループの YAML リスト |
-
tlogで使用されるパラメーターの詳細と、tlogシステムロールに関する追加情報は、/usr/share/ansible/roles/rhel-system-roles.tlog/README.mdファイルを参照してください。
22.3. tlog RHEL システムロールのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、Ansible Playbook を準備および適用し、RHEL システムが systemd ジャーナルにセッションの録画データをログに記録するように設定します。
前提条件
-
コントロールノードから
tlogシステムロールが設定されるターゲットシステムへアクセスするための SSH キーを設定している。 -
tlogシステムロールを設定するシステムが 1 つ以上ある。 - Ansible Core パッケージがコントロールマシンにインストールされている。
-
rhel-system-rolesパッケージがコントロールマシンにインストールされている。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。
tlog_scope_sssd:-
someは、allまたはnoneではなく、特定のユーザーおよびグループのみを録画することを指定します。
-
tlog_users_sssd:-
recorded-userは、セッションを録画するユーザーを指定します。ただし、ユーザーは追加されない点に留意してください。ユーザーを独自に設定する必要があります。
-
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i IP_Address /path/to/file/playbook.yml -v
# ansible-playbook -i IP_Address /path/to/file/playbook.yml -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その結果、Playbook は指定したシステムに tlog RHEL システムロールをインストールします。このロールには、ユーザーのログインシェルとして機能するターミナルセッション I/O ロギングプログラムである tlog-rec-session が含まれます。また、定義したユーザーおよびグループで使用できる SSSD 設定ドロップファイルを作成します。SSSD は、これらのユーザーとグループを解析して読み取り、ユーザーシェルを tlog-rec-session に置き換えます。さらに、cockpit パッケージがシステムにインストールされている場合、Playbook は cockpit-session-recording パッケージもインストールします。これは、Web コンソールインターフェイスで録画を表示および再生できるようにする Cockpit モジュールです。
検証手順
システムで SSSD 設定ドロップファイルが作成されることを確認するには、以下の手順を実行します。
SSSD 設定ドロップファイルが作成されるフォルダーに移動します。
cd /etc/sssd/conf.d
# cd /etc/sssd/conf.dCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルの内容を確認します。
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 に設定したパラメーターがファイルに含まれていることが確認できます。
22.4. グループまたはユーザーの一覧を除外するための tlog RHEL システムロールのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
tlog システムロールを使用すると、SSSD セッションの録画設定オプション exclude_users および exclude_groups をサポートできます。以下の手順に従って、Ansible Playbook を準備および適用し、ユーザーまたはグループがセッションを録画して systemd ジャーナルにロギングしないように RHEL システムを設定します。
前提条件
-
コントロールノードから
tlogシステムロールを設定するターゲットシステムへアクセスするための SSH キーを設定している。 -
tlogシステムロールを設定するシステムが 1 つ以上ある。 - Ansible Core パッケージがコントロールマシンにインストールされている。
-
rhel-system-rolesパッケージがコントロールマシンにインストールされている。
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 詳細は以下のようになります。
tlog_scope_sssd:-
all: ユーザーおよびグループをすべて録画するように指定します。
-
tlog_exclude_users_sssd:- User name: セッションの録画から除外するユーザーのユーザー名を指定します。
tlog_exclude_groups_sssd:-
adminsは、セッションの録画から除外するグループを指定します。
-
オプションで Playbook の構文を確認します。
ansible-playbook --syntax-check playbook.yml
# ansible-playbook --syntax-check playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i IP_Address /path/to/file/playbook.yml -v
# ansible-playbook -i IP_Address /path/to/file/playbook.yml -vCopy to Clipboard Copied! Toggle word wrap Toggle overflow
その結果、Playbook は指定したシステムに tlog RHEL システムロールをインストールします。このロールには、ユーザーのログインシェルとして機能するターミナルセッション I/O ロギングプログラムである tlog-rec-session が含まれます。また、除外対象外のユーザーおよびグループが使用できる /etc/sssd/conf.d/sssd-session-recording.conf SSSD 設定ドロップファイルを作成します。SSSD は、これらのユーザーとグループを解析して読み取り、ユーザーシェルを tlog-rec-session に置き換えます。さらに、cockpit パッケージがシステムにインストールされている場合、Playbook は cockpit-session-recording パッケージもインストールします。これは、Web コンソールインターフェイスで録画を表示および再生できるようにする Cockpit モジュールです。
検証手順
システムで SSSD 設定ドロップファイルが作成されることを確認するには、以下の手順を実行します。
SSSD 設定ドロップファイルが作成されるフォルダーに移動します。
cd /etc/sssd/conf.d
# cd /etc/sssd/conf.dCopy to Clipboard Copied! Toggle word wrap Toggle overflow ファイルの内容を確認します。
cat sssd-session-recording.conf
# cat sssd-session-recording.confCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Playbook に設定したパラメーターがファイルに含まれていることが確認できます。
22.5. CLI でデプロイされた tlog システムロールを使用したセッションの録画 リンクのコピーリンクがクリップボードにコピーされました!
指定したシステムに tlog システムロールをデプロイしたら、コマンドラインインターフェイス (CLI) を使用してユーザー端末セッションを録画できます。
前提条件
-
ターゲットシステムに
tlogシステムロールをデプロイしている。 -
SSSD 設定ドロップファイルが
/etc/sssd/conf.dディレクトリーに作成されていること。Deploying the Terminal Session Recording RHEL System Role を参照してください。
手順
ユーザーを作成し、このユーザーにパスワードを割り当てます。
useradd recorded-user passwd recorded-user
# useradd recorded-user # passwd recorded-userCopy to Clipboard Copied! Toggle word wrap Toggle overflow 作成したユーザーとしてシステムにログインします。
ssh recorded-user@localhost
# ssh recorded-user@localhostCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 認証用に yes または no を入力するようにシステムが求めたら、yes を入力します。
recorded-user の パスワードを挿入します。
システムは、録画しているセッションに関するメッセージを表示します。
ATTENTION! Your session is being recorded!
ATTENTION! Your session is being recorded!Copy to Clipboard Copied! Toggle word wrap Toggle overflow セッションの録画が完了したら、以下を入力します。
exit
# exitCopy to Clipboard Copied! Toggle word wrap Toggle overflow システムはユーザーからログアウトし、ローカルホストとの接続を閉じます。
これにより、ユーザーセッションは録画および保存され、ジャーナルを使用して再生することができます。
検証手順
ジャーナルで録画したセッションを表示するには、以下の手順を実施します。
以下のコマンドを実行します。
journalctl -o verbose -r
# journalctl -o verbose -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow 録画したジャーナルエントリー
tlog-recのMESSAGEフィールドを検索します。journalctl -xel _EXE=/usr/bin/tlog-rec-session
# journalctl -xel _EXE=/usr/bin/tlog-rec-sessionCopy to Clipboard Copied! Toggle word wrap Toggle overflow
22.6. CLI を使用した録画したセッションの表示 リンクのコピーリンクがクリップボードにコピーされました!
コマンドラインインターフェイス (CLI) を使用して、ジャーナルからユーザーセッションの録画を再生できます。
前提条件
- ユーザーセッションを録画している。CLI でデプロイされた tlog システムロールを使用したセッションの録画 を参照してください。
手順
CLI 端末で、ユーザーセッションの録画を再生します。
journalctl -o verbose -r
# journalctl -o verbose -rCopy to Clipboard Copied! Toggle word wrap Toggle overflow tlog録画を検索します。/tlog-rec
$ /tlog-recCopy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のような詳細が表示されます。
- ユーザーセッションの録画用のユーザー名
-
out_txtフィールド (録画したセッションの raw 出力エンコード) - 識別子番号 TLOG_REC=ID_number
- 識別子番号 TLOG_REC=ID_number をコピーします。
識別子番号 TLOG_REC=ID_number を使用して録画を再生します。
tlog-play -r journal -M TLOG_REC=ID_number
# tlog-play -r journal -M TLOG_REC=ID_numberCopy to Clipboard Copied! Toggle word wrap Toggle overflow
これにより、ユーザーセッションの録画端末の出力が再生されることがわかります。
第23章 システムロールを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster システムロールを使用すると、Pacemaker の高可用性クラスターリソースマネージャーを使用する高可用性クラスターを設定し、管理できます。
23.1. ha_cluster システムロール変数 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster システムロール Playbook では、クラスターデプロイメントの要件に従って、高可用性クラスターの変数を定義します。
ha_cluster システムロールに設定できる変数は以下のとおりです。
ha_cluster_enable_repos-
ha_clusterシステムロールで必要なパッケージを含むリポジトリーを有効にするブール値フラグ。これがこの変数のデフォルト値であるyesに設定されている場合は、クラスターメンバーとして使用するシステムで RHEL および RHEL 高可用性アドオンのアクティブなサブスクリプションカバレッジが必要です。そうでない場合、システムロールは失敗します。 ha_cluster_cluster_presentyesに設定されている場合には、ロールに渡される変数に従って、HA クラスターがホストで設定されるブール値フラグを決定します。ロールで指定されておらず、ロールによってサポートされないクラスター設定は失われます。ha_cluster_cluster_presentをnoに設定すると、すべての HA クラスター設定がターゲットホストから削除されます。この変数のデフォルト値は
yesです。以下の Playbook の例では、
node1およびnode2のすべてのクラスター設定を削除します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow ha_cluster_start_on_boot-
起動時にクラスターサービスが起動するように設定されるかどうかを決定するブール値フラグ。この変数のデフォルト値は
yesです。 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ユーザーには、クラスターへの完全アクセスがあります。Ansible 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_clusterシステムロールが新しいキーを生成する場合は、鍵をノードのハイパーバイザーにコピーして、フェンシングが機能するようにする必要があります。この変数が設定されている場合は、このキーで
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_regenerate_keysyesに設定されるブール値フラグは、共有前の鍵と 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の説明を参照してください。この変数のデフォルト値は
noです。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 8.7 以降) クラスター転送方法を設定します。この変数を使用して設定するアイテムは以下のとおりです。
-
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) マニュアルページのclusterセクションのセットアップの説明を参照してください。詳細な説明については、corosync.conf(5) の man ページを参照してください。ha_cluster_transport変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow トランスポート方式を設定する
ha_clusterSystem Role Playbook の例については、高可用性クラスターでの Corosync 値の設定 を参照してください。
-
ha_cluster_totem(RHEL 8.7 以降) Corosync トーテムを設定します。許可されているオプションのリストについては、
pcs -h cluster setupのヘルプページ、またはpcs(8) マニュアルページのclusterセクションのセットアップの説明を参照してください。詳細な説明については、corosync.conf(5) の man ページを参照してください。ha_cluster_totem変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Corosync トーテムを設定する
ha_clusterSystem Role Playbook の例については、高可用性クラスターでの Corosync 値の設定 を参照してください。ha_cluster_quorum(RHEL 8.7 以降) クラスタークォーラムを設定します。
auto_tie_breaker、last_man_standing、last_man_standing_window、およびwait_for_allクォーラムオプションを設定できます。クォーラムオプションの詳細については、votequorum(5) のマニュアルページを参照してください。ha_cluster_quorum変数の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスタークォーラムを設定する
ha_clusterSystem Role playbook の例については、高可用性クラスターでの Corosync 値の設定 を参照してください。ha_cluster_sbd_enabled(RHEL 8.7 以降) クラスターが SBD ノードフェンシングメカニズムを使用できるかどうかを決定するブールフラグ。この変数のデフォルト値は
noです。SBD を有効にする
ha_clusterSystem Role Playbook の例については。SBD ノードフェンシングを使用した高可用性クラスターの設定 を参照してください。ha_cluster_sbd_options(RHEL 8.7 以降) SBD オプションを指定する名前と値の辞書のリスト。サポートされているオプションは次のとおりです。
-
delay-start- デフォルトはno -
startmode- デフォルトはalways -
timeout-action- デフォルトはflush,reboot watchdog-timeout- デフォルトは5これらのオプションの詳細については、
sbd(8) man ページのConfiguration via environmentセクションを参照してください。SBD を有効にする
ha_clusterSystem Role Playbook の例については、Configuring a high availability cluster with SBD node fencing を参照してください。
SBD を使用する場合、オプションで、インベントリー内のノードごとにウォッチドッグと SBD デバイスを設定できます。インベントリーファイルでウォッチドッグおよび SBD デバイスを設定する方法 については、ha_cluster システムロールのインベントリーの指定 を参照してください。
-
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_resource_primitivesこの変数は、stonith リソースなど、システムロールにより設定された Pacemaker リソースを定義します。各リソースに設定できるアイテムは次のとおりです。
-
id(必須) - リソースの ID。 -
agent(必須) - リソースまたは stonith エージェントの名前 (例:ocf:pacemaker:Dummyまたはstonith:fence_xvm)。stonith エージェントには、stonith:を指定する必要があります。リソースエージェントの場合は、ocf:pacemaker:Dummyではなく、Dummyなどの短縮名を使用することができます。ただし、同じ名前の複数のエージェントがインストールされていると、使用するエージェントを決定できないため、ロールは失敗します。そのため、リソースエージェントを指定する場合はフルネームを使用することが推奨されます。 -
instance_attrs(オプション): リソースのインスタンス属性のセットの一覧。現在、1 つのセットのみがサポートされています。属性の名前と値、必須かどうか、およびリソースまたは stonith エージェントによって異なります。 -
meta_attrs(オプション): リソースのメタ属性のセットの一覧。現在、1 つのセットのみがサポートされています。 operations(任意): リソースの操作のリスト。-
action(必須): pacemaker と、リソースまたは stonith エージェントで定義されている操作アクション。 -
attrs(必須): 少なくとも 1 つのオプションを指定する必要があります。
-
-
ha_clusterシステムロールで設定するリソース定義の構造は以下のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、リソースは定義されません。
リソース設定を含む
ha_clusterシステムロール Playbook の例については、フェンシングおよびリソースを使用した高可用性クラスターの設定 を参照してください。
をクリックします。
ha_cluster_resource_groupsこの変数は、システムロールによって設定される Pacemaker リソースグループを定義します。各リソースグループに設定可能な項目は、以下のとおりです。
-
id(必須): グループの ID。 -
resources(必須): グループのリソースの一覧。各リソースは ID によって参照され、リソースはha_cluster_resource_primitives変数に定義する必要があります。1 つ以上のリソースを一覧表示する必要があります。 -
meta_attrs(オプション): グループのメタ属性のセットの一覧。現在、1 つのセットのみがサポートされています。
-
ha_clusterシステムロールで設定するリソースグループ定義の構造は以下のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、リソースグループが定義されていません。
リソースグループ設定を含む
ha_clusterシステムロール Playbook の例については、フェンシングおよびリソースを使用した高可用性クラスターの設定 を参照してください。
をクリックします。
ha_cluster_resource_clonesこの変数は、システムロールによって設定された Pacemaker リソースクローンを定義します。リソースクローンに設定できるアイテムは次のとおりです。
-
resource_id(必須): クローンを作成するリソース。リソースはha_cluster_resource_primitives変数またはha_cluster_resource_groups変数に定義する必要があります。 -
promotable(任意): 作成するリソースクローンが昇格可能なクローンであるかどうかを示します。これは、yesまたはnoと示されます。 -
id(任意): クローンのカスタム ID。ID が指定されていない場合は、生成されます。このオプションがクラスターでサポートされない場合は、警告が表示されます。 -
meta_attrs(任意): クローンのメタ属性のセットの一覧。現在、1 つのセットのみがサポートされています。
-
ha_clusterシステムロールで設定するリソースクローン定義の構造は次のとおりです。Copy to Clipboard Copied! Toggle word wrap Toggle overflow デフォルトでは、リソースのクローンが定義されていません。
リソースクローン設定を含む
ha_clusterシステムロール 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_clusterシステムロール 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_clusterシステムロール Playbook の例については、リソースに制約のある高可用性クラスターの設定 を参照してください。
をクリックします。
ha_cluster_constraints_orderこの変数は、リソースの順序に対する制約を定義します。リソース順序の制約は、特定のリソースアクションが発生する順序を示します。リソース順序の制約には、2 つのリソースに対する単純な順序制約と、複数のリソースに対するセット順序制約の 2 種類があります。
単純なリソース順序制約に対して設定できる項目は次のとおりです。
resource_first(必須) -resource_thenリソースが依存するリソース。-
id(必須) - リソース ID。 -
action(オプション) -resource_thenリソースに対してアクションを開始する前に完了する必要のあるアクション。許可される値:start、stop、promote、demode。
-
resource_then(必須) - 依存リソース。-
id(必須) - リソース ID。 -
action(オプション) -resource_firstリソースに対するアクションが完了した後にのみリソースが実行できるアクション。許可される値:start、stop、promote、demode。
-
-
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_clusterシステムロール 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_clusterシステムロール Playbook の例については、リソースに制約のある高可用性クラスターの設定 を参照してください。
をクリックします。
23.2. ha_cluster システムロールのインベントリーの指定 リンクのコピーリンクがクリップボードにコピーされました!
ha_cluster システムロール Playbook を使用して HA クラスターを設定する場合は、インベントリー内のクラスターの名前とアドレスを設定します。
23.2.1. インベントリーでのノード名とアドレスの設定 リンクのコピーリンクがクリップボードにコピーされました!
インベントリー内の各ノードには、必要に応じて以下の項目を指定することができます。
-
node_name- クラスター内のノードの名前。 -
pcs_address- ノードと通信するためにpcsが使用するアドレス。名前、FQDN、または IP アドレスを指定でき、ポート番号を含めることができます。 -
corosync_addresses: Corosync が使用するアドレスの一覧。特定のクラスターを形成するすべてのノードは、同じ数のアドレスが必要で、アドレスの順序が重要です。
以下の例は、ターゲット node1 および node2 を持つインベントリーを示しています。node1 および node2 は完全修飾ドメイン名のいずれかである必要があります。そうでないと、たとえば、名前が /etc/hosts ファイルで解決可能である場合などに、ノードに接続できる必要があります。
23.2.2. インベントリーでのウォッチドッグおよび SBD デバイスの設定 (RHEL 8.7 以降) リンクのコピーリンクがクリップボードにコピーされました!
SBD を使用する場合、オプションで、インベントリー内のノードごとにウォッチドッグと SBD デバイスを設定できます。すべての SBD デバイスを共有し、すべてのノードからアクセスできるようにする必要がありますが、各ノードはデバイスに異なる名前を使用できます。ウォッチドッグデバイスもノードごとに異なる場合があります。システムロール Playbook で設定できる SBD 変数については、ha_cluster システムロール変数 の ha_cluster_sbd_enabled および ha_cluster_sbd_options のエントリーを参照してください。
インベントリー内の各ノードには、必要に応じて以下の項目を指定することができます。
-
sbd_watchdog- SBD が使用するウォッチドッグデバイス。設定されていない場合、デフォルトは/dev/watchdogです。 -
sbd_devices- SBD メッセージの交換と監視に使用するデバイス。設定されていない場合、デフォルトで空のリストになります。
次の例は、ターゲット node1 および node2 のウォッチドッグおよび SBD デバイスを設定するインベントリーを示しています。
23.3. リソースを実行していない高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、ha_cluster システムロールを使用して、フェンシングが設定されていない高可用性クラスターと、リソースを実行しない高可用性クラスターを作成します。
前提条件
Playbook を実行するノードに
ansible-coreがインストールされている。注記ansible-coreをクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
-
ha_clusterシステムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。 Playbook ファイルを作成します (例:
new-cluster.yml)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
以下の Playbook ファイルの例では、フェンシングが設定されていないクラスターと、リソースを実行しないクラスターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.4. フェンシングおよびリソースを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、ha_cluster システムロールを使用して、フェンスデバイス、クラスターリソース、リソースグループ、およびクローンされたリソースを含む高可用性クラスターを作成します。
前提条件
Playbook を実行するノードに
ansible-coreがインストールされている。注記ansible-coreをクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
-
ha_clusterシステムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。 Playbook ファイルを作成します (例:
new-cluster.yml)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
以下の Playbook ファイルの例では、フェンシング、複数のリソース、およびリソースグループを含むクラスターを設定します。また、リソースグループのリソースクローンも含まれます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.5. リソースに制約のある高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
次の手順では、ha_cluster システムロールを使用して、リソースの場所の制約、リソースコロケーションの制約、リソース順序の制約、およびリソースチケットの制約を含む高可用性クラスターを作成します。
前提条件
Playbook を実行するノードに
ansible-coreがインストールされている。注記ansible-coreをクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
- ha_cluster システムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。
Playbook ファイルを作成します (例:
new-cluster.yml)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
次の Playbook ファイルの例は、リソースの場所の制約、リソースコロケーションの制約、リソース順序の制約、およびリソースチケットの制約を含むクラスターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.6. 高可用性クラスターでの Corosync 値の設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 8.7 以降) 次の手順では、ha_cluster システムロールを使用して、Corosync 値を設定する高可用性クラスターを作成します。
前提条件
Playbook を実行するノードに
ansible-coreがインストールされている。注記ansible-coreをクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
-
ha_clusterシステムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。 Playbook ファイルを作成します (例:
new-cluster.yml)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
次の Playbook ファイルの例では、Corosync プロパティーを設定するクラスターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.7. SBD ノードフェンシングを使用した高可用性クラスターの設定 リンクのコピーリンクがクリップボードにコピーされました!
(RHEL 8.7 以降) 次の手順では、ha_cluster システムロールを使用して、SBD ノードフェンシングを使用する高可用性クラスターを作成します。
前提条件
Playbook を実行するノードに
ansible-coreがインストールされている。注記ansible-coreをクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
ha_clusterシステムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。必要に応じて、クラスター内の各ノードのウォッチドッグデバイスと SBD デバイスをインベントリーファイルで設定できます。
Playbook ファイルを作成します (例:
new-cluster.yml)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
次の Playbook ファイルの例では、SBD フェンシングを使用するクラスターを設定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory new-cluster.yml
# ansible-playbook -i inventory new-cluster.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
23.8. ha_cluster システムロールを使用した高可用性クラスターでの Apache HTTP サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
この手順では、ha_cluster システムロールを使用して、2 ノードの Red Hat Enterprise Linux High Availability Add-On クラスターでアクティブ/パッシブな Apache HTTP サーバーを設定します。
前提条件
Playbook を実行するノードに
ansible-coreがインストールされている。注記ansible-coreをクラスターメンバーノードにインストールする必要はありません。-
Playbook を実行するシステムに
rhel-system-rolesパッケージがインストールされている。 - クラスターメンバーとして使用するシステムに、RHEL および RHEL High Availability Add-On の有効なサブスクリプション範囲が必要。
- システムに Apache に必要なパブリック仮想 IP アドレスが含まれている。
- システムに、iSCSI、ファイバーチャネル、またはその他の共有ネットワークブロックデバイスを使用する、クラスターのノードに対する共有ストレージが含まれます。
- Pacemaker クラスターで XFS ファイルシステムを持つ LVM ボリュームを設定する の説明に従って、XFS ファイルシステムを使用して LVM 論理ボリュームを設定している。
- Configuring an Apache HTTP Server の説明に従って、Apache HTTP サーバーを設定している。
- システムに、クラスターノードをフェンスするのに使用される APC 電源スイッチが含まれます。
ha_cluster システムロールは、指定されたノードの既存のクラスター設定を置き換えます。ロールで指定されていない設定は失われます。
手順
-
ha_clusterシステムロールのインベントリーの指定 で説明されているように、クラスター内のノードを指定するインベントリーファイルを作成します。 Playbook ファイルを作成します (例:
http-cluster.yml)。注記実稼働環境の Playbook ファイルを作成する場合は、Ansible Vault を使用したコンテンツの暗号化 で説明されているように、パスワード vault を暗号化することが推奨されます。
以下の Playbook ファイルの例では、アクティブ/パッシブの 2 ノード HA クラスターで事前に作成した Apache HTTP サーバーを設定します。
この例では、ホスト名が
zapc.example.comの APC 電源スイッチを使用します。クラスターが他のフェンスエージェントを使用しない場合は、以下の例のように、ha_cluster_fence_agent_packages変数を定義するときに、クラスターが必要とするフェンスエージェントのみを任意で一覧表示できます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存します。
手順 1 で作成したインベントリーファイル inventory へのパスを指定して、Playbook を実行します。
ansible-playbook -i inventory http-cluster.yml
# ansible-playbook -i inventory http-cluster.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 RHEL 8.6 以降では、削除した行を以下の 3 行に置き換え、Web サイトが Apache リソースの名前である PID ファイルパスとして
/var/run/httpd- website .pidを指定します。この例では、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 RHEL 8.5 以前の場合は、削除した行を以下の 3 行に置き換えます。
/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /run/httpd.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /run/httpd.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /run/httpd.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /run/httpd.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メタ属性については、現在のノードを優先するようにリソースを設定する を参照してください。
第24章 Cockpit RHEL システムロールを使用した Web コンソールのインストールと設定 リンクのコピーリンクがクリップボードにコピーされました!
cockpit RHEL システムロールを使用すると、システムに Web コンソールをインストールして設定できます。
24.1. cockpit システムロール リンクのコピーリンクがクリップボードにコピーされました!
cockpit システムロールを使用して、Web コンソールを自動的にデプロイして有効にできます。その結果、Web ブラウザーから RHEL システムを管理できるようになります。
24.2. cockpit RHEL システムロールの変数 リンクのコピーリンクがクリップボードにコピーされました!
cockpit RHEL システムロールに使用されるパラメーターは次のとおりです。
| ロール変数 | 説明 |
|---|---|
| cockpit_packages: (default: default) | 事前定義されたパッケージセット (default、minimal、full) の 1 つを設定します。 * cockpit_packages: (default: default) - 最も一般的なページとオンデマンドインストール UI * cockpit_packages: (default: minimal) - 概要、ターミナル、ログ、アカウント、およびメトリックのページのみ。最小限の依存関係。 * cockpit_packages: (default: full) - 利用可能なすべてのページ。 必要に応じて、インストールするコックピットパッケージを独自に選択します。 |
| cockpit_enabled: (default:yes) | Web コンソール Web サーバーが起動時に自動起動できるかどうかを設定します。 |
| cockpit_started: (default:yes) | Web コンソールを起動する必要があるかどうかを設定します。 |
| cockpit_config: (default: nothing) |
|
24.3. cockpit RHEL システムロールを使用した Web コンソールのインストール リンクのコピーリンクがクリップボードにコピーされました!
以下の手順に従って、システムに Web コンソールをインストールし、システム内でサービスにアクセスできるようにします。
前提条件
-
1 つ以上の 管理対象ノード (
vpnシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
手順
以下の内容を含む新しい
playbook.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記デフォルトでコックピットポートは firewalld で開いているため、Web コンソールのファイアウォール設定タスクは、システム管理者がこれをカスタマイズした場合にのみ適用されます。
オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check -i inventory_file playbook.yml
# ansible-playbook --syntax-check -i inventory_file playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory_file /path/to/file/playbook.yml
# ansible-playbook -i inventory_file /path/to/file/playbook.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
24.4. certificate RHEL システムロールを使用した新しい証明書の設定 リンクのコピーリンクがクリップボードにコピーされました!
デフォルトでは、Web コンソールは最初の起動時に自己署名証明書を作成します。セキュリティー上の理由から、自己署名証明書をカスタマイズできます。新しい証明書を生成するには、certificate ロールを使用できます。そのためには、以下の手順に従います。
前提条件
-
1 つ以上の 管理対象ノード (
vpnシステムロールで設定するシステム) へのアクセスおよびパーミッション。 コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
コントロールノードでは、
-
ansible-coreパッケージおよびrhel-system-rolesパッケージがインストールされている。 - 管理対象ノードが記載されているインベントリーファイルがある。
-
手順
以下の内容を含む新しい
playbook2.ymlファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow オプション: Playbook の構文を確認します。
ansible-playbook --syntax-check -i inventory_file playbook2.yml
# ansible-playbook --syntax-check -i inventory_file playbook2.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow インベントリーファイルで Playbook を実行します。
ansible-playbook -i inventory_file /path/to/file/playbook2.yml
# ansible-playbook -i inventory_file /path/to/file/playbook2.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
第25章 podman RHEL システムロールを使用したコンテナーの管理 リンクのコピーリンクがクリップボードにコピーされました!
Podman 4.2 以降、podman RHEL システムロールを使用して、Podman コンテナーを実行する Podman 設定、コンテナー、および systemd サービスを管理できます。
25.1. podman RHEL システムロール リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールを使用して、Podman コンテナーを実行する Podman 設定、コンテナー、および systemd サービスを管理できます。
25.2. podman RHEL システムロールの変数 リンクのコピーリンクがクリップボードにコピーされました!
podman RHEL システムロールに使用されるパラメーターは次のとおりです。
| 変数 | 説明 |
|---|---|
|
| では、podman Pod と管理する対応する systemd ユニットを説明します。
|
|
|
true の場合、ロールは 注記 ロールがそれらを管理できるようにするには、ディレクトリーは絶対パス(ルートコンテナーの場合)、またはホームディレクトリーへの相対パス(root 以外のコンテナーの場合)として指定する必要があります。その他のものは無視されます。
ロールは、そのデフォルトの所有権またはパーミッションをディレクトリーに適用します。所有権またはパーミッションを設定する必要がある場合は、 |
|
|
これは dict です。 |
|
| これは dict の一覧です。ファイアウォールでロールを管理するポートを指定します。これは、firewall RHEL システムロールで使用されるのと同じ形式を使用します。 |
|
| これは dict の一覧です。ロールが使用するポートの SELinux ポリシーを管理するポートを指定します。これは、selinux RHEL システムロールで使用されるのと同じ形式を使用します。 |
|
|
すべてのルートレスコンテナーに使用するユーザーの名前を指定します。 注記 ユーザーがすでに存在している必要があります。 |
|
|
すべてのルートレスコンテナーに使用するグループの名前を指定します。 注記 グループがすでに存在している必要があります。 |
|
|
すべての |
|
|
|
|
|
|
|
|
|
|
|
|