これは、Ansibleシステムの役割を使用したシリーズの2番目の記事です。前回の記事では、Ansibleとシステムの役割を紹介し、いくつかの例を示しました。システムロールは、SELinux、ネットワーク設定、NTPなどのOSレベルのタスクを管理するのに役立ちます。その記事では、system.role-selinux
を使用してSELinuxモードを変更した例を見ました。 役割。この記事では、1つのプレイブックでリモートマシンのネットワーク接続を変更できるように、ネットワークの役割について詳しく説明します。
NetworkManagerは、ネットワークインターフェイスや接続の構成などのネットワーク設定を管理します。基本的には、ネットワーク設定を監視および管理するデーモンです。 /etc/sysconfig/network-scripts
内のファイルを使用します それらを保存します。 nmcli
シェルプロンプトから接続ファイルを作成および編集するために使用されるユーティリティです。ローカルマシンの接続を一覧表示するには:
$ nmcli dev status
DEVICE TYPE STATE CONNECTION
eno0 ethernet connected eno0
eno1 ethernet disconnected ---
virbr0 bridge connected virbr0
上記の出力では、さまざまな列を確認できます。最初の列、デバイス 、はネットワークインターフェイスを示します。 タイプ 列は、これがどのタイプの接続であるかを示しています。 状態 列は接続のステータスを示し、最後の接続 は、デバイス用に構成できる設定のコレクションです。各接続には、それを識別する名前またはIDがあります。
すべての接続のリストを表示するには、次を使用できます:
$ nmcli con show
nmcli
を使用する ユーティリティを使用すると、ネットワーク接続を追加し、IPv4またはIPv6アドレスを割り当ててネットワーク接続を作成できます。ただし、ご存知のように、通常はnmcli
で行う手動タスクを自動化する必要があります。 。 Ansibleプレイブックを使用してネットワークノードを管理したい。
Ansibleには、ノードの管理に役立つ3つの重要なモジュールがあります。サービス、デーモン、およびシステム設定です。これらのモジュールを使用して、ネットワークを管理することもできます。前回の記事では、Ansibleのシステムロールについて説明しました。 system-rolesには、rhel-system-roles.network
があります。 役割。これは、管理対象ノードでネットワーク設定を構成および管理するための最も簡単な方法です。
このネットワークシステムを使用することから始めます 管理対象ノードでネットワーク設定を構成する役割。
ここにserver1.example.com
があります 管理対象マシン。インベントリファイルに管理対象ノードのエントリをすでに作成しました。
注 :新しい接続が追加されるため、管理対象ノードに2つのイーサネット接続があることを確認してください。その2番目のネットワークインターフェースが利用可能である必要があります。
操作を行う前に、管理対象ノードでNetworkManagerサービスが開始され有効になっていることを確認してください。プレイブックを使用してこれを行います。このタスクでは、service.yml
のサービスモジュールを使用します ファイル。
---
- name: playbook for starting and enabling the NetworkManager
hosts: server1.example.com
tasks:
- Name: start the service
service:
name: NetworkManager
state: started
enabled: true
このプレイブックを実行する:
$ ansible-playbook service.yml
プレイブックがエラーなしで正常に実行されると、サービスが開始され、管理対象ノードマシンで有効になります。
セカンダリインターフェースの名前はeno1 そのため、このインターフェースのMACアドレスを見つけることができます。このMACアドレスを使用しているため、プレイブックはセカンダリインターフェイスを検出します。 eno1のMACアドレスを表示します 使用:
$ ip a
server1.example.com
のMACアドレス 52:54:00:fe:2f:b8 。プレイブックでこれを使用してください。
ここで、サービスタスクの後に、system-roles
をインストールします コントローラ上:
$ yum install rhel-system-roles
このコマンドは、すべてのシステムロールをロールのデフォルトディレクトリにインストールします。
次に、管理対象ノードに新しい接続を追加するためのプレイブックを作成します。
---
- name: playbook for configuring second interface
hosts: server1.example.com
vars:
target_mac: “52:54:00:fe:2f:b8”
network_connection:
- name: static-network
type: ethernet
mac: “{{ target_mac }}”
state: up
ip :
dhcp: no
address:
- 192.168.0.5/24
roles:
- rhel-system-roles.network
これは完全なプレイブックです。各パラメータについて段階的に説明します:
target_mac -これは、2番目のイーサネットインターフェイスのMACアドレスです。これは、管理対象ノードの正しいインターフェースを見つけるのに役立ちます。
network_connection -この変数には、新しい接続に関する情報が含まれています:
- name:新しい接続の名前
- タイプ:新しい接続タイプ
- mac:target_mac変数
- 状態:
up
を使用して接続をアクティブ化します オプション - ip:DHCPオプションを無効にし、このパラメータを使用してIPアドレスを割り当てます
ネットワークシステムの役割を実行するために必要な変数を使用しました。次に、このプレイブックを実行します:
$ ansible-playbook networkconfiguration.yml
このハンドブックでは、静的IPアドレスを使用して静的ネットワーク接続を構成します。
設定を確認するには、server1.example.com
にログインします 新しく追加された接続を確認します:
$ nmcli connection show
NAME UUID TYPE DEVICE
eno0 adc52c70-… ethernet eno0
static-network 1be30687-… ethernet eno1
virbr0 0a9de672-… bridge virbr0
ping
してみてください 静的ネットワークのIPアドレス 接続し、成功した場合は、新しいネットワーク接続を正常に追加しました。
コントローラマシンからのアドホックコマンドを使用して、新しい接続が正常に追加されたかどうかを確認します。
$ ansible server1.example.com -m shell -a 'nmcli con show'
このコマンドは、前の手順で示したものと同じ出力を表示します。
まとめ
この記事では、Ansibleシステムロールを使用してネットワーク接続を構成できることを示しています。この小さなプレイブックは、ホストのグループを作成するだけで、手動タスクを減らし、一度に多くのマシンのネットワーク接続を構成します。これらのシステムネットワークの役割は、プレイブックの実行中に多くのパラメータをチェックし、NetworkManagerが実行されていることを確認し、プレイブック自体の接続をテストします。これは、システムの役割を使用してシステムの構成を自動化する方法の優れた例です。