「2023-08-20 Juniper Apstra を触ってみた」の版間の差分
編集の要約なし |
編集の要約なし |
||
320行目: | 320行目: | ||
== 引用 == | == 引用 == | ||
<references /> | |||
[[カテゴリ:Juniper]] |
2023年8月23日 (水) 07:56時点における最新版
DC で使用する BGP EVPN で、たくさんの機器を GUI から構築・設定・監視できる Juniper Apstra を触ってみました。
元々は Apstra 社の製品で Juniper に買収されたために、管理対象は QFX に限らず対応しています。
このため Juniper ブランドでありながらマルチベンダーに対応しています。
ストーリー
Cisco Nexus ACI / Juniper QFX Junos Fusion -> ベンダーにロックインされるだろ、いい加減にしろ !
BGP EVPN -> 標準技術で構築できるのでロックインされない -> パラメータが多くて構築がめんどいだろ、いい加減 ry)
BGP EVPN + Apstra -> Nexus / QFX / Arista / Whitebox 対応、GUI からたくさん管理できてにっこり
できること
メーカーの資料を読む限り、以下の内容が Apstra で実現可能なようです。(できるとは言っていない)
以下は自分が理解するために、メーカーの製品概要から抜き出した内容です。
対応機器
Juniper QFX Junos
Cisco Nexus NX-OS
Arista DCS EOS
Whitebox SONiC
Day0
BULE PRINT
ラック・接続・レイヤ数などのデザインを決める [1]
- Super Spine ありか、Spine / Leaf のみか
- 3 階層の 5-Stage CLOS 対応
ネットワーク構築
- Apstra インストール
- Apstra Agent インストール
- Apstra ZTP
- DHCP で機器管理ポートに IP 割当
- NOS バージョン変更、ライセンス適用
- Apstra Agent インストール
- 初期コンフィグ適用
Day1
設定追加・変更Staged Blueprint
- リファレンス アーキテクチャを元にコンフィグを自動生成
ロールバック
ネットワーク拡張・縮小・変更
その他
- AS 番号などのリソース不足を事前確認
Day2+
IBA (Intent Based Analytics) : 運用であるべき姿をもとにして、正常性を保つ
SSOT (Single Source Of Truth) : 死活監視のみではなく、手順書でよくあるステータス確認を常時実行して、状態確認を行える
- グラフデータベースの情報を元に、あるべき状態 (インテント) と、現在の情報を比較して正常性確認
- 物理ポートは Up か
- LACP でバンドルされているか
- P2P リンクで BGP が Establish か
- MAC アドレスが学習できているか
メンテナンスモード : 複数台の機器を GUI から操作してトラフィック迂回させ、NOS バージョンアップ
- トラフィック迂回は他のソフトウェアでもよくありますが、正常性確認もセットで行えるのが良い点
コンフィグ レット : SNMP NTP などをテンプレート コンフィグとして各機器へ展開
できないこと
未対応 : ブラウン フィールドへ Apstra を展開する
- 構築済みの環境 (ブラウン フィールド) を Apstra のコントロール下に置くことはできない [2]
メーカー資料リンク
Juniper Apstra 4.1.0 ハンズオン (PDF)
- NOS 側のエージェント設定とか
Apstra インストール
EVE-NG 公式サイトの手順 [3] でインストールしました。
起動して CLI と GUI のパスワードを設定しておきます。
スクリーンショット
てきとうに NX-OS / Junos / EOS で 3 layer 組んでみたの図。
Apstra とは管理ポートで各機器と通信できるようにします。
以下の図からは分かりづらいですが、MGMT の雲アイコンはすべて相互に繋がっています。
GUI にログインして、
NOS は固定 IP で設定、Apstra GUI から IP 指定して Offbox として機器を検出。
Onbox と Offbox の違いはよくわかっていません。
Apstra エージェント インストール用 NOS 初期コンフィグ
今回は ZTP はやらないことにしたので、NOS に固定 IP を設定、Apstra で IP 指定して検出させました。
検出させるためには、最小限連携用のコンフィグを適用しておく必要があります。
Apstra の IP と Reachability が取れるように、以下は <> のパラメータを環境に応じて書き換える必要あり。
Junos
Junos は応答プロンプトがあるため、パスワード入力時に停止します。流し込みはできません。
(load set terminal でできるかもですが、未確認)
root
Juniper
cli
configure
set system root-authentication plain-text-password
<root_pass>
<root_pass>
set system login user admin class super-user authentication plain-text-password
<root_pass>
<root_pass>
set interfaces em0.0 family inet address <mgmt_ip>
delete interfaces em0.0 family inet dhcp
set system services telnet connection-limit 15
set system services ssh
set system services netconf ssh
set system host-name <hostname>
set system management-instance
set routing-instances mgmt_junos routing-options static route 0.0.0.0/0 next-hop <mgmt_gw>
set system ntp server <ntp_server> routing-instance mgmt_junos
commit
NX-OS
admin
conf t
!
hostn <hostname>
!
no password strength-check
username admin role network-admin password admin
!
interface mgmt0
ip address <mgmt_ip>
vrf context management
ip route 0.0.0.0/0 <mgmt_gw>
feature telnet
feature nxapi
feature bash-shell
feature scp-server
feature evmed
nxapi http port 80
!
boot nxos bootflash:nxos.9.3.4.bin
!
ntp server <ntp_server> use-vrf management
!
guestshell enable
!
end
copy running-config startup-config
EOS
#zerotouch disable
!!! 自動で再起動がかかる
admin
enable
configure terminal
hostname <hostname>
vrf instance management
!
service routing protocols model multi-agent
aaa authorization exec default local
username admin privilege 15 role network-admin secret admin
interface Management1
vrf management
ip address <mgmt_ip>/24
no shutdown
!
ip route vrf management 0.0.0.0 0.0.0.0 <mgmt_gw>
management telnet
no shutdown
management ssh
no shutdown
management api http-commands
protocol http
no shutdown
!
vrf management
no shutdown
!
ntp server vrf management <ntp_server>
end
write memory
reload
!!! multi-agent 有効化のため、再起動
ナレッジ
Cisco NX-OS で Apstra Agent が Offbox 登録できない
オフボックスエージェントの作成 に、Apstra から NOS を認識させるための、各 NOS の初期設定が記載されていますが、NX-OS はコマンドが足りません。
GUI で show log ボタンをクリック
エラー内容を見てみると・・・
2023-08-20 01:00:43,389 INFO:10.11.252.189 install
2023-08-20 01:00:43,389 INFO:Ensure stable connection for 60s
2023-08-20 01:00:43,390 INFO:TASK: Check Connectivity
2023-08-20 01:00:44,777 INFO:Successful connection check..
2023-08-20 01:01:13,803 INFO:Successful connection check..
2023-08-20 01:01:43,820 INFO:Successful connection check..
2023-08-20 01:01:43,821 INFO:TASK: Get platform type
2023-08-20 01:01:45,841 INFO:10.11.252.189::nxos
2023-08-20 01:01:45,842 INFO:System Agent id:
2023-08-20 01:01:47,619 INFO:TASK: Verify boot variables are same
2023-08-20 01:01:48,478 INFO:TASK: Get device facts
2023-08-20 01:01:49,143 INFO:aos found? True
2023-08-20 01:01:50,410 INFO:Command failed (rc=9), retrying..
2023-08-20 01:01:56,053 INFO:Command failed (rc=9), retrying..
2023-08-20 01:02:01,732 INFO:Command failed (rc=9), retrying..
2023-08-20 01:02:07,396 INFO:Command failed (rc=9), retrying..
2023-08-20 01:02:13,054 INFO:Command failed (rc=9), retrying..
2023-08-20 01:02:18,733 ERROR:Failure reason: , return-code: 9
2023-08-20 01:02:18,734 ERROR:FAILED
2023-08-20 01:02:18,735 ERROR:Failed command: guestshell run sudo su -c "/etc/init.d/aos show_version && echo APSTRA_CMD_SUCCESS"
2023-08-20 01:02:18,735 ERROR:Remote ssh command failed
Traceback (most recent call last):
File "/aos/system_agent/runner/aos_device_installer/run.py", line 100, in <module>
action.run_action()
File "/aos/system_agent/runner/actions/base_action.py", line 302, in run_action
self.run()
File "/aos/system_agent/runner/actions/cisco.py", line 914, in run
self._install()
File "/aos/system_agent/runner/actions/base_action.py", line 374, in _install
self.device_facts = self.get_device_facts()
File "/aos/system_agent/runner/actions/utils/base_di.py", line 186, in wrapped
return f(self, *args, **kwargs)
File "/aos/system_agent/runner/actions/cisco.py", line 218, in get_device_facts
"/etc/init.d/aos show_version")
File "/aos/system_agent/runner/actions/cisco.py", line 86, in guestshell
% cmd, timeout=timeout, ** kwargs)
File "/aos/system_agent/runner/actions/cisco.py", line 53, in run_show_command
return_val = self.run_remote_command(cmd, num_try=num_try, **kwargs)
File "/aos/system_agent/runner/actions/cisco.py", line 45, in run_remote_command
return ssh.run()
File "/aos/system_agent/runner/actions/utils/remote.py", line 130, in run
raise RemoteSshCommandException(self)
RemoteSshCommandException: Remote ssh command failed
2023-08-20 01:02:18,737 ERROR:STDOUT: Note: Guest shell is not enabled by default, use the 'guestshell enable' command to enable it
2023-08-20 01:02:18,738 ERROR:STDERR:
ご丁寧にも "guestshell enable を有効にしろ" と出てきますので、
# show guestshell
# configure terminal
(config)# guestshell enable
# end
# show guestshell
Virtual service guestshell+ detail
State : Initializing
Package information
Name : None
Path : Not Available
Application
Name : None
Installed version : None
Description : None
Signing
Key type : Unsigned
Method : None
Licensing
Name : None
Version : None
Resource reservation
Disk : 0 MB
Memory : 0 MB
CPU : 0% system CPU
で有効化しましょう。いやらしいことに、guestshell enable は show running-config all にも表示されない設定です。
show guestshell コマンドで確認します。
引用
- ↑ Day0 0:ネットワークデザイン 必要なネットワーク構成をBLUEPRINTとして定義し展開
- ↑ P.64 Brown Field(未対応) 既存のネットワークを自動化
- ↑ How to create images - Juniper Apstra AOS Server