Menu Close
Settings Close

Language and Page Formatting Options

1.16.3. システムロールを使用したポートの設定

Red Hat Enterprise Linux (RHEL) firewalld システムロールを使用すると、着信トラフィックに対してローカルファイアウォールでポートを開くか、または閉じて、再起動後に新しい設定を永続化できます。この例では、HTTPS サービスの着信トラフィックを許可するデフォルトゾーンを設定する方法を説明します。

Ansible コントロールノードで以下の手順を実行します。

前提条件

  • 1 つ以上の 管理対象ノード (firewalld システムロールで設定するシステム) へのアクセスおよびパーミッション。
  • コントロールノード (このシステムから Red Hat Ansible Core は他のシステムを設定) へのアクセスおよびパーミッション。
  • ansible-core パッケージおよび rhel-system-roles パッケージが制御ノードにインストールされている。
  • Playbook の実行時に root 以外のリモートユーザーを使用する場合は、管理ノードで適切な sudo 権限が付与される。
  • ホストは NetworkManager を使用してネットワークを設定している。

手順

  1. Playbook の命令を実行するホストのインベントリーがまだ指定されていない場合は、そのホストの IP または名前を Ansible インベントリーファイル /etc/ansible/hosts に追加します。

    node.example.com
  2. ~/adding-and-removing-ports.yml Playbook を以下の内容で作成します。

    ---
    - name: Allow incoming HTTPS traffic to the local host
      hosts: node.example.com
      become: true
    
      tasks:
        - include_role:
            name: linux-system-roles.firewall
    
          vars:
            firewall:
              - port: 443/tcp
                service: http
                state: enabled
                runtime: true
                permanent: true

    permanent: true オプションを使用すると、再起動後も新しい設定が維持されます。

  3. Playbook を実行します。

    • root ユーザーとして管理対象ホストに接続するには、次のコマンドを実行します。

      # ansible-playbook -u root ~/adding-and-removing-ports.yml
    • 管理ホストにユーザーとして接続するには、次のコマンドを実行します。

      # ansible-playbook -u user_name --ask-become-pass ~/adding-and-removing-ports.yml

      --ask-become-pass オプションは、ansible-playbook コマンドが -u user_name オプションで定義したユーザーの sudo パスワードを要求するようにします。

    -u user_name オプションを指定しないと、ansible-playbook は、コントロールノードに現在ログインしているユーザーとして管理ホストに接続します。

検証

  1. 管理対象ノードに接続します。

    $ ssh user_name@node.example.com
  2. HTTPS サービスに関連付けられた 443/tcp ポートが開いていることを確認します。

    $ sudo firewall-cmd --list-ports
    443/tcp

関連情報

  • /usr/share/ansible/roles/rhel-system-roles.network/README.md
  • ansible-playbook(1) の man ページ