avinetworks.network_interface

ネットワークインターフェース

警告:この役割は危険な場合があります。誤ってネットワーク設定を行い、ターゲットホストへのネットワーク接続を失った場合、物理的なアクセスなしで復旧できないかもしれません。

この役割は、ユーザーがターゲットマシン上のさまざまなネットワークコンポーネントを構成することを可能にします。この役割を使用して構成できるもの:

  • Ethernetインターフェース
  • ブリッジインターフェース
  • バンドインターフェース
  • VLANタグ付きインターフェース
  • ネットワークルート

要件

この役割は、Ansible 1.4以上を必要とし、プラットフォーム要件はメタデータファイルに記載されています。

役割変数

この役割に渡すことができる変数とその簡単な説明は次のとおりです:

変数 必須 デフォルト コメント
network_pkgs いいえ [] 通常必要なパッケージ(selinux、bridge-utils、ifenslave、iprouteなど)
network_ether_interfaces いいえ [] システムに追加されるEthernetインターフェースのリスト。
network_bridge_interfaces いいえ [] システムに追加されるブリッジインターフェースのリスト。
network_bond_interfaces いいえ [] システムに追加されるバンドインターフェースのリスト。
network_vlan_interfaces いいえ [] システムに追加されるVLANインターフェースのリスト。
network_check_packages いいえ true network_pkgsにリストされているパッケージをインストールします。
network_allow_service_restart いいえ true インターフェース/ネットワークが再構成され、再起動されるべきかどうか。
network_modprobe_persist いいえ true モジュールの永続的読み込み。
network_configured_interfaces_only いいえ false 有効にすると、この役割で構成されていないインターフェースを完全に削除します。
network_interface_file_prefix いいえ ifcfg- インターフェース構成ファイルのプレフィックス。
network_interface_file_postfix いいえ `` インターフェース構成ファイルのポストフィックス。

注:リストの値は以下の例に記載されています。

Debian(RedHatではない)では、IPv4アドレスにCIDR表記を使用することができ、アドレスとサブネットマスクを別々に指定する必要はありません。Debianでは、IPv6アドレスにCIDR表記を使用することが必要です。

CIDR表記を使用したIPv4の例:

      cidr: 192.168.10.18/24
      # 任意:そのネットワークのゲートウェイを指定するか、autoを使用してネットワーク+1を指定
      gateway: auto

従来のIPv4を使用した例:

      address: 192.168.10.18
      netmask: 255.255.255.0
      network: 192.168.10.0
      broadcast: 192.168.10.255
      gateway: 192.168.10.1

インターフェース用に異なるMACアドレスを使用したい場合は、単に追加できます。

      hwaddress: aa:bb:cc:dd:ee:ff

時折、好みのオプションを設定することが有益な場合があります。そのため、次のように使用可能です:

      options:
          - "up /execute/my/command"
          - "down /execute/my/other/command"

またはIPv6バージョン:

      ipv6_options:
          - "up /execute/my/command"
          - "down /execute/my/other/command"
  1. 静的IPとDHCP IPを持つホストでeth1とeth2を構成します。また、静的ルートとゲートウェイも定義します。
- hosts: myhost
  roles:
    - role: network
      network_ether_interfaces:
       - device: eth1
         bootproto: static
         cidr: 192.168.10.18/24
         gateway: auto
         route:
          - network: 192.168.200.0
            netmask: 255.255.255.0
            gateway: 192.168.10.1
          - network: 192.168.100.0
            netmask: 255.255.255.0
            gateway: 192.168.10.1
       - device: eth2
         bootproto: dhcp

注:ルートを追加する必要はなく、デフォルトルートは自動的に追加されます。

  1. ブリッジインターフェースを構成し、複数のNICをブリッジに追加します。
- hosts: myhost
  roles:
    - role: network
      network_bridge_interfaces:
       -  device: br1
          type: bridge
          cidr: 192.168.10.10/24
          bridge_ports: [eth1, eth2]

          # 任意の値
          bridge_ageing: 300
          bridge_bridgeprio: 32768
          bridge_fd: 15
          bridge_gcint: 4
          bridge_hello: 2
          bridge_maxage: 20
          bridge_maxwait: 0
          bridge_pathcost: "eth1 100"
          bridge_portprio: "eth1 128"
          bridge_stp: "on"
          bridge_waitport: "5 eth1 eth2"

注:このインターフェースに対しても、Ethernetインターフェースにルートを追加するのと同じ方法でルートを追加できます。

  1. "アクティブ-バックアップ"スレーブ構成でバンドインターフェースを構成します。
- hosts: myhost
  roles:
    - role: network
      network_bond_interfaces:
        - device: bond0
          address: 192.168.10.128
          netmask: 255.255.255.0
          bond_mode: active-backup
          bond_slaves: [eth1, eth2]

          # 任意の値
          bond_miimon: 100
          bond_lacp_rate: slow
          bond_xmit_hash_policy: layer3+4
  1. DHCP経由で取得したIPアドレスを持つ802.3adをバンドリングモードとして設定されたバンドインターフェースを構成します。
- hosts: myhost
  roles:
    - role: network
      network_bond_interfaces:
        - device: bond0
          bootproto: dhcp
          bond_mode: 802.3ad
          bond_miimon: 100
          bond_slaves: [eth1, eth2]
          bond_ad_select: 2
  1. EthernetインターフェースのVLANタグ2を持つVLANインターフェースを構成します。
- hosts: myhost
  roles:
    - role: network
      network_ether_interfaces:
       - device: eth1
         bootproto: static
         cidr: 192.168.10.18/24
         gateway: auto
      network_vlan_interfaces:
       - device: eth1.2
         bootproto: static
         cidr: 192.168.20.18/24
  1. 上記のすべての例は単一のホストの構成方法を示しています。以下の例は、すべてのマシンのネットワーク構成を定義する方法を示しています。

ホストインベントリが次のようになっていると仮定します:

/etc/ansible/hosts

[dc1]
host1
host2

各ホストのホスト変数でネットワーク構成を記述します:

host_vars/host1

    network_ether_interfaces:
           - device: eth1
             bootproto: static
             address: 192.168.10.18
             netmask: 255.255.255.0
             gateway: 192.168.10.1
             route:
              - network: 192.168.200.0
                netmask: 255.255.255.0
                gateway: 192.168.10.1
    network_bond_interfaces:
            - device: bond0
              bootproto: dhcp
              bond_mode: 802.3ad
              bond_miimon: 100
              bond_slaves: [eth2, eth3]

host_vars/host2

network_ether_interfaces:
       - device: eth0
         bootproto: static
         address: 192.168.10.18
         netmask: 255.255.255.0
         gateway: 192.168.10.1
  1. resolvconfパッケージを使用する必要がある場合、いくつかのDNS構成を追加することができます。
dns-nameserver: [ "8.8.8.8", "8.8.4.4" ]
dns-search: "search.mydomain.tdl"
dns-domain: "mydomain.tdl"
  1. Ethernet、Bond、またはBridgeインターフェースにIPv6静的IP構成を追加できます。
ipv6_address: "aaaa:bbbb:cccc:dddd:dead:beef::1/64"
ipv6_gateway: "aaaa:bbbb:cccc:dddd::1"

以下のように、この役割をすべてのホストに適用するプレイブックを作成し、実行します。すべてのサーバーはネットワークインターフェースが構成され、ルーティングが更新される必要があります。

- hosts: all
  roles:
    - role: network
  1. この役割は、firewalldゾーンにネットワークインターフェースをオプションで追加することもできます。コアfirewalldモジュール(http://docs.ansible.com/ansible/latest/firewalld_module.html)は同じ機能を実行できるため、両方のモジュールを使用するとプレイブックが冪等性を持たない場合があります。このケースを考えてみましょう。firewalldモジュールのみが使用された場合:
  • network_interface役割が実行され、firewalld_zoneホスト変数が設定されていない場合は、ifcfg-*からZON行が削除されます。
  • firewalldモジュールが実行され、ifcfg-*にZONE行が追加されます。
  • 次回プレイブックの実行時に、network_interface役割が再び実行され、ZONE行が再度削除され、サイクルが繰り返されます。

この役割がfirewalldゾーンを管理するためには、システムがRHELベースのディストリビューションであり、NetworkManagerを使用してネットワークインターフェースを管理している必要があります。その条件が満たされている場合、以下の例はeth0インターフェースをpublic firewalldゾーンに追加する方法を示しています。

       - device: eth0
         bootproto: static
         address: 192.168.10.18
         netmask: 255.255.255.0
         gateway: 192.168.10.1
         firewalld_zone: public

注:Ansibleはプレイブックプロセス全体でネットワーク接続が必要です。IPアドレスを変更する際にこの方法を使用して変更しない制御インターフェースを持つ必要があるかもしれませんので、Ansibleがターゲットシステムを構成するための安定した接続があることを確認してください。すべてのネットワーク変更は単一の生成されたスクリプト内で行われ、ネットワーク接続が失われるのは数秒だけです。

依存関係

python-netaddr

ライセンス

BSD

作者情報

このプロジェクトは、最初にBenno Joyによって作成されました。

Debianのアップグレードは以下の通りです:

  • Martin Verges (croit, GmbH)
  • Eric Anderson (Avi Networks, Inc.)

RedHatのアップグレードは以下の通りです:

  • Eric Anderson (Avi Networks, Inc.)
  • Luke Short (Red Hat, Inc.)
  • Wei Tie, (Cisco Systems, Inc.)

貢献者の完全なリストはこちらで見ることができます。

プロジェクトについて

This roles enables users to configure various network components on target machines.

インストール
ansible-galaxy install avinetworks.network_interface
ライセンス
Unknown
ダウンロード
7.3k
所有者