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-core
RPM として提供) が導入されました。これには、Ansible コマンドラインユーティリティー、コマンド、および組み込みの Ansible プラグインセットが少し含まれています。App Stream リポジトリーには、ansible-core
が含まれていますが、サポートの範囲が限定されています。詳細は、RHEL 9App Stream に含まれている ansible-core パッケージのサポート範囲 を確認してください。
手順
必要に応じて、図の目的で
inventory
ファイルを確認します。# cat /home/jdoe/<ansible_project_name>/inventory [testingservers] pdoe@192.168.122.98 fdoe@192.168.122.226 [db-servers] db1.example.com db2.example.com [webservers] web1.example.com web2.example.com 192.0.2.42
ファイルは
[testingservers]
グループと他のグループを定義します。これにより、特定のシステムセットに対して Ansible をより効果的に実行できます。設定ファイルを作成して、Ansible 操作のデフォルトと特権昇格を設定します。
新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
# vi /home/jdoe/<ansible_project_name>/ansible.cfg
以下の内容をファイルに挿入します。
[defaults] inventory = ./inventory [privilege_escalation] become = true become_method = sudo become_user = root become_ask_pass = true
[defaults]
セクションは、管理対象ホストのインベントリーファイルへのパスを指定します。[privilege_escalation]
セクションでは、指定した管理対象ホストのユーザー権限がroot
に移行されることを定義します。これは、カーネルパラメーターを正常に設定するために必要です。Ansible Playbook を実行すると、ユーザーパスワードの入力が求められます。管理対象ホストへの接続後に、sudo
によりroot
に自動的に切り替わります。
kernel_settings
ロールを使用する Ansible Playbook を作成します。新しい YAML ファイルを作成し、これをテキストエディターで開きます。以下に例を示します。
# vi /home/jdoe/<ansible_project_name>/kernel-roles.yml
このファイルは Playbook を表し、通常は、
inventory
ファイルから選択した特定の管理対象ホストに対して実行される、プレイ とも呼ばれるタスクの順序付きリストが含まれます。以下の内容をファイルに挿入します。
--- - hosts: testingservers name: "Configure kernel settings" roles: - rhel-system-roles.kernel_settings vars: kernel_settings_sysctl: - name: fs.file-max value: 400000 - name: kernel.threads-max value: 65536 kernel_settings_sysfs: - name: /sys/class/net/lo/mtu value: 65000 kernel_settings_transparent_hugepages: madvise
name
キーは任意です。任意の文字列をラベルとしてプレイに関連付け、プレイの対象を特定します。プレイのhosts
キーは、プレイを実行するホストを指定します。このキーの値または値は、管理対象ホストの個別名またはinventory
ファイルで定義されているホストのグループとして指定できます。vars
セクションは、設定する必要がある、選択したカーネルパラメーター名および値が含まれる変数の一覧を表します。roles
キーは、vars
セクションで説明されているパラメーターおよび値を設定するシステムロールを指定します。注記必要に応じて、Playbook のカーネルパラメーターとその値を変更することができます。
必要に応じて、プレイ内の構文が正しいことを確認します。
# ansible-playbook --syntax-check kernel-roles.yml playbook: kernel-roles.yml
以下の例では、Playbook の検証が成功したことを示しています。
Playbook を実行します。
# ansible-playbook kernel-roles.yml ... BECOME password: PLAY [Configure kernel settings] ********************************************************************************** PLAY RECAP ******************************************************************************************************** fdoe@192.168.122.226 : ok=10 changed=4 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0 pdoe@192.168.122.98 : ok=10 changed=4 unreachable=0 failed=0 skipped=6 rescued=0 ignored=0
Ansible が Playbook を実行する前に、パスワードの入力を求められます。これにより、管理対象ホストのユーザーが
root
に切り替わります。これは、カーネルパラメーターの設定に必要です。recap セクションは、すべての管理対象ホストのプレイが正常に終了したこと (
failed=0
)、および 4 つのカーネルパラメーターが適用されたこと (changed=4
) を示しています。- 管理対象ホストを再起動して、影響を受けるカーネルパラメーターをチェックし、変更が適用され、再起動後も維持されていることを確認します。
関連情報
- RHEL System Roles を使用するための制御ノードと管理対象ノードの準備
-
/usr/share/doc/rhel-system-roles/kernel_settings/
ディレクトリーのREADME.html
ファイルおよびREADME.md
ファイル - インベントリーの構築
- Ansible の設定
- Playbook の使用
- 変数の使用
- ロール