11.4. firewall RHEL システムロールを使用したカスタム firewalld サービスの作成
firewalld において、サービスとは、特定のアプリケーションに対するトラフィックを許可するルールをまとめて名前を付けたものです。管理者は、個々のポートとプロトコルを手動で管理する代わりに、サービス名を使用してトラフィックを許可することができます。
firewall RHEL システムロールを使用すると、カスタムサービスファイルの作成を自動化できます。これにより、ファイアウォールの設定がよりシンプルになり、再利用しやすくなります。
前提条件
- コントロールノードと管理対象ノードの準備が完了している。
- 管理対象ノードで Playbook を実行できるユーザーとしてコントロールノードにログインしている。
-
管理対象ノードへの接続に使用するアカウントに、そのノードに対する
sudo権限がある。
手順
次の内容を含む Playbook ファイル (例:
~/playbook.yml) を作成します。--- - name: Configure firewalld hosts: managed-node-01.example.com tasks: - name: Create a firewalld service ansible.builtin.include_role: name: redhat.rhel_system_roles.firewall vars: firewall: service: custom_service short: A custom firewalld service description: >- A custom firewalld service that opens port 2222/tcp and the ports opened by the http and https firewalld services. port: 2222/tcp includes: - http - https state: present permanent: trueサンプル Playbook で指定されている設定は次のとおりです。
service: <service_name>- サービスの名前を設定します。
short: <short_description>- サービスの簡単な説明を設定します。
description: <description>- サービスの詳細な説明を設定します。
port: <port>/<protocol>- サービスファイルで許可されるポートとプロトコルを定義します。複数のエントリーを定義するには、YAML リストを使用します。
includes: <services>-
オプション: 作成するサービスに含めるその他の
firewalldサービスファイルを定義します。 state: present- サービスを追加します。そのサービスがすでに存在する場合、ロールは定義されたとおりにそのサービスを変更します。
permanent: truefirewalldの永続的な設定の変更を有効にします。Playbook で使用されるすべての変数の詳細は、コントロールノードの
/usr/share/ansible/roles/rhel-system-roles.firewall/README.mdファイルを参照してください。
Playbook の構文を検証します。
$ ansible-playbook --syntax-check ~/playbook.ymlこのコマンドは構文を検証するだけであり、有効だが不適切な設定から保護するものではないことに注意してください。
Playbook を実行します。
$ ansible-playbook ~/playbook.yml
検証
作成したサービス定義を表示します。
# ansible managed-node-01.example.com -m ansible.builtin.command -a 'firewall-cmd --info-service=custom_service'