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"
- 静的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
注:ルートを追加する必要はなく、デフォルトルートは自動的に追加されます。
- ブリッジインターフェースを構成し、複数の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インターフェースにルートを追加するのと同じ方法でルートを追加できます。
- "アクティブ-バックアップ"スレーブ構成でバンドインターフェースを構成します。
- 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
- 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
- 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
- 上記のすべての例は単一のホストの構成方法を示しています。以下の例は、すべてのマシンのネットワーク構成を定義する方法を示しています。
ホストインベントリが次のようになっていると仮定します:
/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
- resolvconfパッケージを使用する必要がある場合、いくつかのDNS構成を追加することができます。
dns-nameserver: [ "8.8.8.8", "8.8.4.4" ]
dns-search: "search.mydomain.tdl"
dns-domain: "mydomain.tdl"
- 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
- この役割は、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