pierky.arouteserver
ansible-role-arouteserver
ARouteServerをインストールし、設定するための役割。
説明
この役割は...
ARouteServerとbgpq4をインストールします。
ローカルの一般ポリシー定義ファイル(
general.ymlファイル)をコピーするか、ベストプラクティスと提案に基づいてファイルを構築します。ローカルのクライアントリスト(
clients.ymlファイル)をコピーするか、IX-F メンバーエクスポートJSONファイルからインポートします(IXP-Managerによってエクスポートされたファイルなど)。最終的に実際のルートサーバーにプッシュできるルートサーバー設定ファイルを構築します。
注意してください:これは実際のルートサーバーホストを設定するものではなく、ARouteServerが実行されるホストのみを設定します。
実際のルートサーバーホストは、役割がそれらを見つけることができるように、arouteserver_managed_routeserversグループの一部である必要があります。
この役割のほとんどの動作は、以下に文書化されている変数を使用して設定できます。
インストール
ARouteServerは、制御マシン上でPyPIからpipを使用してインストールされます。ansible変数arouteserver_upgradeがtrueに設定されている場合(デフォルトはfalse)、pipに--upgrade引数が渡され、インストールのアップグレードが可能です。
役割のtemplates/configディレクトリ内のローカルファイルは、ARouteServerのディレクトリにコピーされます(Jinja2テンプレートがサポートされています)。
一般ポリシー(general.yml)
一般ポリシーはローカルファイルからコピーすることもできます(Jinja2テンプレートがサポートされています)し、ベストプラクティスと提案に基づいて構築することもできます。
各ルートサーバーホストのためにgeneral.ymlファイルが作成されます。ルートサーバーの詳細(ASN、ルーターID、BGPデーモン)はホスト自体の変数から収集されます。
クライアントリスト(clients.yml)
クライアントのリストは、ローカルファイルからコピーすることも、HTTP/HTTPS経由でフェッチできるIX-FメンバーエクスポートJSONファイルからインポートすることもできます。
変更があった場合、ルートサーバーの設定ファイルの構築もトリガーされます。
ルートサーバー設定ファイルの構築
ルートサーバー設定ファイルはARouteServerのディレクトリに保存されます。その名前は次のスキーマに従っています:<hostname>-[bird4|bird6|openbgpd].cfg。
設定ファイルが変更されると、外部ハンドラが通知されます(設定されている場合)。
タグ
configure_policy:設定されている場合、一般ポリシー定義ファイル(general.yml)のみが構築されます。configure_clients:設定されている場合、クライアントのリストのみが更新されます。変更があった場合、設定ファイルの構築もトリガーされます。build_rs_config:設定されている場合、ルートサーバー設定ファイルのみが構築されます。
要件
特に要件はありません。
役割の変数
この役割で使用される変数は、トピックごとにグループ化されて以下にリストされています。
パッケージのインストール
(オプション)
arouteserver_local_package_file:設定されている場合、指定したローカルパスのパッケージを使用してARouteServerをインストールします。そうでない場合、PyPIから最新バージョンが取得されてインストールされます(デフォルト)。(オプション)
arouteserver_upgrade:trueに設定されると、PIPに--upgradeを渡し、arouteserverPythonパッケージの選択的なアップグレードを有効にします。
ルートサーバー設定:一般ポリシー(general.yml)
- (オプション)
arouteserver_general_cfg_file:ARouteServerを設定するために使用されるgeneral.ymlファイルのローカルパスをこの変数に設定します(Jinja2テンプレートを使用することもできます)。設定されていない場合は、configureコマンドを使用して、ベストプラクティスと推奨設定を利用してポリシー定義ファイルを設定します(デフォルト)。
ルートサーバー設定:クライアントリスト(clients.yml)
次の3つの変数のいずれかが必要です:
arouteserver_clients_cfg_file:clients.ymlファイルのローカルパス。arouteserver_clients_from_euroix_file:ルートサーバークライアントのリストをインポートするために使用されるEuro-IXメンバーリストファイルのローカルパス。arouteserver_clients_from_euroix_url:ルートサーバークライアントのリストをインポートするために使用されるEuro-IXメンバーリストのURL。このURLを使用してIXP-ManagerとARouteServerを統合し、クライアントリストを取得できます。(Euro-IXインポートを使用する場合は必須)
arouteserver_clients_from_euroix_ixp_id:Euro-IXメンバーリストファイル内で参照されるIXPのID。(オプション)
arouteserver_clients_from_euroix_extra_args:clients-from-euroixコマンドで使用される追加の引数。例:--merge-from-peeringdb as-set max-prefix --vlan-id 123。
ルートサーバーのカスタマイズ:サイト固有のカスタム設定ファイル
変数arouteserver_local_files_dirとarouteserver_use_local_filesを設定して、ARouteServerにローカルカスタムファイルへのポインタを渡すことができます。これは--use-local-filesコマンドラインオプションを通じて行われます。
ルートサーバー操作:RFC8326による優雅なシャットダウン
変数arouteserver_perform_graceful_shutdownが設定されている場合、ARouteServerは優雅なシャットダウンオプションを有効にした次の設定を構築します。これにより、メンテナンスイベント中に一時的にトラフィックを排出します。
優雅なシャットダウン操作の性質上、この変数を永続的にtrueに設定するのではなく、メンテナンスを行う際のみにランタイム時に渡すことが推奨されます。
他の役割との統合
- (オプション)
arouteserver_notify_on_rs_change:設定されている場合、ルートサーバーの設定ファイルが更新されたときにこのハンドラに通知します。
ディレクトリ構成
役割のコンポーネントをインストールするために使用されるディレクトリとパス。デフォルト値は以下の通り:
arouteserver_venv_dir:~/.virtualenvs/arouteserver。arouteserver_bin:{{arouteserver_venv_dir}}/bin/arouteserver。arouteserver_dir:~/arouteserver。arouteserver_var:~/arouteserver_var。bgpq4_dir:~/bgpq4。
ホスト変数名
以下の変数は、ルートサーバーホストからの情報を収集するために使用されるホスト変数の名前を定義します。
例えば、arouteserver_varname_rs_asn(デフォルトでrs_asn)で参照される変数は、ルートサーバーホストで定義され、ルートサーバーのASNを含んでいる必要があります。
arouteserver_varname_rs_asn:rs_asn、ルートサーバーのASN。例:64496。arouteserver_varname_daemon:daemon、ホストで使用されるBGPデーモン。birdまたはopenbgpdのいずれか。arouteserver_varname_daemon_version:daemon_version、BGPデーモンのバージョン。例:1.6.3。arouteserver_varname_router_id:router_id、ホストのルーターID。例:192.0.2.1。arouteserver_varname_local_networks:local_networks、IXPによって使用されるローカルネットワークのカンマ区切りリスト(ルートサーバーがIXPの自身のプレフィックスに対するアナウンスを拒否できるようにフィルタを構築するために必要)。例:192.0.2.0/24,2001:db8::/32。
arouteserver_varname_daemonとarouteserver_varname_daemon_versionで参照される変数(デフォルトではそれぞれdaemonとdaemon_version)に設定される値は、ARouteServerでサポートされているデーモンとそのバージョンのいずれかで設定する必要があります。
これらは、ツールを実行する際のメインコマンドと--target-version引数を設定するために使用されます:
arouteserver <daemon> --target-version <daemon_version>
ヘルプコマンドarouteserver --helpおよびarouteserver <daemon> --helpを使用して、現在サポートされている値のリストを取得できます。
依存関係
ルートサーバーを表すホストは、arouteserver_managed_routeserversグループの一部である必要があります。
ホスト変数名セクションで報告された名前で参照される変数は、各ルートサーバーホストで設定される必要があります(またはgroup_varから継承)。
Example Playbookセクションを参考にしてください。
例プレイブック
hostsファイル:
[arouteserver_hosts]
172.17.0.2 # ARouteServerをインストールし
# ルートサーバー設定ファイルを構築するホスト。
[arouteserver_managed_routeservers]
rs1 # ルートサーバーが実行されるホスト。
rs2
group_vars/arouteserver_managed_routeserversファイル:
rs_asn: 64496
local_networks:
- 192.0.2.0/24
- 2001:db8::/32
host_vars/rs1ファイル:
daemon: bird
daemon_version: 1.6.3
router_id: 192.0.2.1
host_vars/rs2ファイル:
daemon: openbgpd
daemon_version: 6.2
router_id: 192.0.2.2
site.ymlファイル:
---
- hosts: arouteserver_hosts
gather_facts: False
vars:
arouteserver_clients_from_euroix_url: "http://ixp-manager.example.com/api/v4/member-export/ixf/0.6?apikey=123456"
routeserver_clients_from_euroix_ixp_id: 1
roles:
- ansible-role-arouteserver
$ ansible-playbook -i hosts site.yml
ライセンス
GPLv3
著者情報
Pier Carlo Chiodi - https://pierky.com
ブログ: https://blog.pierky.com Twitter: @pierky
An Ansible role for installing ARouteServer.
ansible-galaxy install pierky.arouteserver