思科设备代理
思科 NX-OS 设备代理概述
尽管安装设备系统代理的首选方法是通过 Apstra GUI,但 您可以从 CLI 手动安装 Apstra 代理。只有在极少数情况下,才需要手动安装代理,这需要更多的工作并且容易出错。在手动安装代理之前,您应该深入了解各种设备状态、配置阶段和代理操作。如需帮助,请联系 瞻博网络支持。
您还可以使用 Apstra ZTP 在交换机上自动启动和安装代理和必备组件配置。与手动安装代理相比,使用 Apstra ZTP 更简单、更容易获得大规模支持。
为 Cisco 设备手动安装代理涉及以下步骤:
- 更新 guestshell 磁盘大小、内存和 CPU,然后启用/重新启动 guesthell。
- 安装设备代理。
- 更新 aos.config 文件。
- 启动服务。
Cisco GuestShell 未分区为 Apstra 的唯一性。如果还有其他应用程序托管在来宾地狱上,则来宾外壳中的任何更改都可能影响它们。
“Bootstrap”或“Pristine”配置中的命令可能会干扰在交换矩阵部署期间添加的 Apstra 配置。
如果配置的 NX-OS“系统巨型”值低于 Apstra 使用的 MTU,则 Apstra MTU 命令将失败。
设备配置要求
按以下顺序配置设备:VRF、NXAPI、GuestShell、创建管理 VRF。为了允许代理与服务器之间的通信,Apstra 的设备代理使用 VRF 名称 management
。确保这些行显示在正在运行的配置中。
! no password strength-check username admin password admin-password role network-admin copp profile strict ! vrf context management ip route 0.0.0.0/0 <Management Default Gateway> ! interface mgmt0 vrf member management ip address <Management CIDR Address> !
调整大小并启用来宾外壳
- 运行以下命令以调整磁盘空间、内存和 CPU 的大小:
guestshell resize rootfs 1024 guestshell resize memory 2048 guestshell resize cpu 6
- 如果未启用 guestshell,请运行命令
guestshell enable
以激活更改。 - 如果已启用 guestshell,请运行命令
guestshell reboot
以重新启动 shell 并激活更改。 - 运行命令
switch# show guestshell detail
并验证来宾外壳是否已激活。
下载代理安装程序
您可以从 Apstra 服务器通过 HTTPS 复制安装代理。下载后,确认您下载的副本的 MD5sum 与 Apstra 存储的内容匹配。
要检索代理文件,Cisco 设备使用 HTTPS 连接到 Apstra 服务器。在继续操作之前,请确保此连接正常工作。
Apstra 随代理一起从 Apstra 服务器提供。我们可以将其 /volatile
复制到 或 volatile:
文件系统位置。Apstra 还在 Apstra Server 的文件夹中附带了一个 md5sum 文件 /home/admin
。
替换 aos_server_ip
变量和 aos_version
下面的运行文件。(要从 Apstra GUI 检查 Apstra 服务器版本,请导航到 平台>关于)。
switch# guestshell run sudo chvrf management wget --no-check-certificate -o /volatile/aos_download.log -O /volatile/aos.run https://<aos_server_ip>/device_agent_images/aos_device_agent_<aos_version>.run guestshell run sudo chvrf management wget --no-check-certificate -o /volatile/aos_download.log -O /volatile/aos.run.md5 https://<aos_server_ip>/device_agent_images/aos_device_agent_<aos_version>.run.md5
验证文件是否已正确下载。
switch# show file volatile:aos.run md5 a28780880a8d674f6eb6a397509db101 switch# show file volatile:aos.run.md5 a28780880a8d674f6eb6a397509db101 aos_device_agent_<aos_version>.run
安装思科设备代理
我们建议您运行命令 copy running-config startup-config
以保存最新更改,以防出现任何问题。
从思科NX-OS交换机访客地狱中,运行命令以安装代理,如下所示:
switch# guestshell run sudo chmod +x /volatile/aos.run switch# guestshell run sudo /volatile/aos.run -- --no-start <omitted output> created 7855 files created 1386 directories created 602 symlinks created 0 devices created 0 fifos + [[ True == \T\r\u\e ]] + true + systemctl enable aos
更新代理配置文件并启动服务
安装代理之后和启动服务之前,请更新 aos.conf
文件,使其连接到服务器。
配置位于 的 /etc/aos/aos.conf
思科 NX-OS 设备代理配置文件。有关参数,请参阅 Apstra 设备代理配置文件 。
更新文件后,运行命令 service aos start
以启动 Apstra 设备代理。
在 Apstra 服务器上激活 Apstra 设备
当 Apstra 设备代理与 Apstra 通信时,它会使用“设备密钥”来标识自身。对于思科 NXOS 交换机,设备密钥是管理接口“eth0”的 MAC 地址。
root@Cisco:/etc/aos# ip link show dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000 link/ether 08:00:27:8a:39:05 brd ff:ff:ff:ff:ff:ff
部署设备
从 Apstra GUI 的左侧导航菜单中,导航到设备 >托管设备。当代理启动并运行时,它会显示在此列表中,并且可以按照标准过程使用 GUI 确认并分配给蓝图。
重置 Apstra 设备代理
如果出于某种原因(更改蓝图、重新部署、从备份还原设备等)需要重置 Apstra 代理,最好清除 Apstra 代理元数据,重新注册设备,然后重新部署到蓝图。
C9K-172-20-65-5# guestshell [guestshell@guestshell ~]$ sudo su - [root@guestshell ~]# systemctl stop aos [root@guestshell ~]# rm -rf /var/log/aos/* [root@guestshell ~]# systemctl start aos Starting AOS Agents...root@guestshell ~]#
卸载 Apstra 设备代理
要卸载代理,请先使用 GUI 按照标准过程取消部署代理,然后将其从蓝图中取消分配。您也可以从“受管理设备”页面将其完全删除。
要从NX-OS中删除Apstra软件包,请销毁来宾地狱。仅当没有其他应用程序在使用 guesthell 时才执行此操作:
C9K-172-20-65-5# guestshell destroy Remove remaining AOS data from system Removing the guest-shell deletes most of the data left by AOS. Some files are still on the bootflash:/.aos folder. C9K-172-20-65-5# delete bootflash:.aos no-prompt
删除 Apstra EEM 脚本
Apstra 设备代理会安装一些事件管理器小程序来协助遥测。这些可以安全地移除
C9K-172-20-65-5(配置)# 无事件管理器小程序 AOS_PROTO_VSH_LAUNCH C9K-172-20-65-5(配置)# 无事件管理器小程序 AOS_STATS_VSH_LAUNCH C9K-172-20-65-5(配置)# 无事件管理器小程序 aos_bgp_applet C9K-172-20-65-5(配置)# 无事件管理器小程序 aos_ifdown_applet C9K-172-20-65-5(配置)# 无事件管理器小程序aos_ifup_applet
思科代理故障排除
Apstra 代理在 NXOS guestshell 下运行,与底层 bash 和 Linux 环境进行交互。这是一个内部 Linux 容器 (LXC),Apstra 在其中运行。在LXC下,Apstra利用NXAPI和其他方法直接与NXOS通信。出于安全原因,Cisco 将大部分 LXC 接口与 NXOS 设备的其余部分分开,因此我们必须使用访客 shell bash 提示符来执行更多故障排除命令。
确认访客外壳已在NX-OS上运行 Apstra 代理在 NXOS 访客外壳下运行,以与底层 bash 和 Linux 环境进行交互。这是一个内部 Linux 容器 (LXC),Apstra 在其中运行。我们正在检查以确保来宾外壳已激活并正在运行。
C9K-172-20-65-5# show guestshell detail Virtual service guestshell+ detail State : Activated Package information Name : guestshell.ova Path : /isanboot/bin/guestshell.ova Application Name : GuestShell Installed version : 2.1(0.0) Description : Cisco Systems Guest Shell Signing Key type : Cisco release key Method : SHA-1 Licensing Name : None Version : None Resource reservation Disk : 1024 MB Memory : 3072 MB CPU : 6% system CPU Attached devices Type Name Alias --------------------------------------------- Disk _rootfs Disk /cisco/core Serial/shell Serial/aux Serial/Syslog serial2 Serial/Trace serial3
显示已注册的服务
C9K-172-20-65-5# show virtual-service list Virtual Service List: Name Status Package Name ----------------------------------------------------------------------- guestshell+ Activated guestshell.ova
- 确认 Apstra 的网络可访问性
- 确认代理安装
- 检查 Apstra 代理是否正在运行
- 检查 /etc/aos 中是否存在文件
- 在 /var/log/aos 中检查 Apstra 数据
- 确定 Apstra 代理版本
- DNS 解析失败
- Apstra 服务需要很长时间才能在思科 NX-OS 上启动
- Apstra 停止和故障无差错 (MGMT VRF)
- 验证NX-OS访客外壳中的MGMT VRF
确认 Apstra 的网络可访问性
在访客外壳中,ping 到 Apstra 服务器以检查 ICMP Ping。在 VRF 上下文中运行命令时,请使用命令 chvrf <vrf>
在本例中为 management
VRF。
[guestshell@guestshell ~]$ chvrf management ping 172.20.65.3 PING 172.20.65.3 (172.20.65.3) 56(84) bytes of data. 64 bytes from 172.20.65.3: icmp_seq=1 ttl=64 time=0.239 ms 64 bytes from 172.20.65.3: icmp_seq=2 ttl=64 time=0.215 ms
确认代理安装
检查是否已安装 Apstra 设备代理包。在 NXOS 中,Apstra 代理安装到 /etc/rc.d/init.d/aos
以在 guestshell 实例启动时启动。
[guestshell@guestshell ~]$ systemctl status aos aos.service - LSB: Start AOS device agents Loaded: loaded (/etc/rc.d/init.d/aos) Active: active (running) since Tue 2016-11-15 00:10:49 UTC; 3h 54min ago Process: 30 ExecStart=/etc/rc.d/init.d/aos start (code=exited, status=0/SUCCESS) CGroup: /system.slice/aos.service ├─113 tacspawner --daemonize=/var/log/aos/aos.log --pidfile=/var/run/aos.pid --name=SAL2028T5NE --hostname=localhost --domainSocket=aos_spawner_sock --hostSysdbAddress=tb... ├─115 tacleafsysdb --agentName=SAL2028T5NE-LocalTasks-SAL2028T5NE-0 --partition= --storage-mode=persistent --eventLogDir=. --eventLogSev=TaccSpawner/error,Mounter/error,M... ├─116 /usr/bin/python /bin/aos_agent --class=aos.device.common.ProxyDeploymentAgent.ProxyDeploymentAgent --name=DeploymentProxyAgent device_type=Cisco serial_number=@(SWI... ├─117 /usr/bin/python /bin/aos_agent --class=aos.device.common.ProxyCountersAgent.ProxyCountersAgent --name=CounterProxyAgent device_type=Cisco serial_number=@(SWITCH_UNI... └─118 /usr/bin/python /bin/aos_agent --class=aos.device.cisco.CiscoTelemetryAgent.CiscoTelemetryAgent --name=DeviceTelemetryAgent serial_number=@(SWITCH_UNIQUE_ID)
检查 Apstra 代理是否正在运行
使用“service”命令检查正在运行的系统状态,并使用“ps”命令检查正在运行的进程。我们希望确认aos_agent运行正常。
[root@guestshell ~]# service aos status aos is running [root@guestshell ~]# ps wax PID TTY STAT TIME COMMAND 1 ? Ss 0:00 /sbin/init 9 ? Ss 0:00 /usr/lib/systemd/systemd-journald 19 ? Ss 0:00 /bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation 22 ? Ss 0:00 /usr/lib/systemd/systemd-logind 29 ? Ss 0:00 /usr/sbin/sshd -D -f /etc/ssh/sshd_config-cisco -p 17682 -o ListenAddress=localhost 38 ? Ss 0:00 /usr/sbin/crond -n 55 pts/1Ss+0:00 /sbin/agetty --noclear ttyS1 56 pts/0Ss+0:00 /sbin/agetty --noclear ttyS0 113 ? Sl 0:01 tacspawner --daemonize=/var/log/aos/aos.log --pidfile=/var/run/aos.pid --name=C9K --hostname=localhost --domainSocket=aos_spawner_sock --hostSysdbAdd 115 ? S 0:03 tacleafsysdb --agentName=C9K-LocalTasks-C9K-0 --partition= --storage-mode=persistent --eventLogDir=. --eventLogSev=TaccSpawner/error,Mounter/ 116 ? Sl 0:01 /usr/bin/python /bin/aos_agent --class=aos.device.common.ProxyDeploymentAgent.ProxyDeploymentAgent --name=DeploymentProxyAgent device_type=Cisco serial_numbe 117 ? Sl 0:19 /usr/bin/python /bin/aos_agent --class=aos.device.common.ProxyCountersAgent.ProxyCountersAgent --name=CounterProxyAgent device_type=Cisco serial_number=@(SWI 118 ? Sl 0:02 /usr/bin/python /bin/aos_agent --class=aos.device.cisco.CiscoTelemetryAgent.CiscoTelemetryAgent --name=DeviceTelemetryAgent serial_number=@(SWITCH_UNIQUE_ID) 700 ? Ss 0:00 sshd: guestshell [priv] 702 ? S 0:00 sshd: guestshell@pts/4 703 pts/4Ss 0:00 bash -li 732 pts/4S 0:00 sudo su - 733 pts/4S 0:00 su - 734 pts/4S 0:00 -bash 823 pts/4R+ 0:00 ps wax
检查 /etc/aos 中是否存在文件
在来宾 shell 下,Apstra 在 /etc/aos 下存储了许多配置文件。
[root@guestshell aos]# ls -lah /etc/aos total 44K drwxr-xr-x 2 root root 4.0K Nov 15 00:05 . drwxr-xr-x 63 root root 4.0K Nov 15 00:09 .. -rwxr-xr-x 1 root root 1.1K Nov 14 22:26 agent.json -rw-r--r-- 1 root root 1.1K Nov 15 00:05 aos.conf -rwxr-xr-x 1 root root 992 Nov 14 22:26 common_functions -rwxr-xr-x 1 root root 1.4K Nov 14 22:26 health_check_functions -rwxr-xr-x 1 root root 450 Nov 14 22:26 iproute2_functions -rwxr-xr-x 1 root root 916 Nov 14 22:26 lsb_functions -rwxr-xr-x 1 root root 4.5K Nov 14 22:26 platform_functions -rwxr-xr-x 1 root root 156 Nov 14 22:26 version
在 /var/log/aos 中检查 Apstra 数据
Apstra 将内部数据库写入 /var/log/aos
[root@guestshell aos]# ls -lah /var/log/aos total 500K drwxr-xr-x 2 root root 480 Nov 15 00:10 . drwxr-xr-x 3 root root 120 Nov 15 00:10 .. -rw-r--r-- 1 root root 3.2K Nov 15 00:11 CounterProxyAgent.117.1479168658.log -rw-r--r-- 1 root root 289K Nov 15 02:27 CounterProxyAgent.err -rw-r--r-- 1 root root0 Nov 15 00:10 CounterProxyAgent.out -rw------- 1 root root 31K Nov 15 00:11 CounterProxyAgentC9K_2016-11-15--00-10-59_117-2016-11-15--00-10-59.tel -rw-r--r-- 1 root root 104 Nov 15 00:45 DeploymentProxyAgent.116.1479168650.log -rw-r--r-- 1 root root 12K Nov 15 00:45 DeploymentProxyAgent.err -rw-r--r-- 1 root root0 Nov 15 00:10 DeploymentProxyAgent.out -rw------- 1 root root 31K Nov 15 00:10 DeploymentProxyAgentC9K_2016-11-15--00-10-51_116-2016-11-15--00-10-51.tel -rw-r--r-- 1 root root 4.1K Nov 15 00:11 DeviceTelemetryAgent.118.1479168657.log -rw-r--r-- 1 root root 1.4K Nov 15 00:11 DeviceTelemetryAgent.err -rw-r--r-- 1 root root0 Nov 15 00:10 DeviceTelemetryAgent.out -rw------- 1 root root 31K Nov 15 00:11 DeviceTelemetryAgentC9K_2016-11-15--00-10-58_118-2016-11-15--00-10-58.tel -rw-r--r-- 1 root root0 Nov 15 00:10 C9K-0.115.1479168649.log -rw-r--r-- 1 root root0 Nov 15 00:10 C9K-0.err -rw-r--r-- 1 root root0 Nov 15 00:10 C9K-0.out -rw------- 1 root root 39K Nov 15 00:10 C9K-LocalTasks-C9K-0_2016-11-15--00-10-50_115-2016-11-15--00-10-50.tel -rw------- 1 root root 36K Nov 15 00:10 Spawner-C9K_2016-11-15--00-10-49_111-2016-11-15--00-10-49.tel -rw------- 1 root root 634 Nov 15 00:10 _C9K-00000000582a528a-0001744b-checkpoint -rw-r--r-- 1 root root0 Nov 15 00:10 _C9K-00000000582a528a-0001744b-checkpoint-valid -rw------- 1 root root0 Nov 15 00:10 _C9K-00000000582a528a-0001744b-log -rw-r--r-- 1 root root0 Nov 15 00:10 _C9K-00000000582a528a-0001744b-log-valid -rw-r--r-- 1 root root0 Nov 15 00:10 aos.log [root@guestshell aos]#
确定 Apstra 代理版本
Apstra 代理版本在 /etc/aos/version 中提供。在执行此命令之前,我们需要附加到 aos 服务。
[root@guestshell admin]# service aos attach aos@guestshell:/# cat /etc/aos/version VERSION=99.0.0-3874 BUILD_ID=AOS_latest_OB.3874 BRANCH_NAME=master COMMIT_ID=d3eb2585608f0509a11b95fb9d07aed6e26d6c32 BUILD_DATETIME=2018-05-20_10:22:32_PDT AOS_DI_RELEASE=2.2.0-169 aos@guestshell:/#
DNS 解析失败
Apstra 代理对 metadb 连接的 DNS 解析很敏感。确保可以从设备 eth0 管理端口访问来自 /etc/aos/aos.conf 的 IP 和/或 DNS。
[root@guestshell ~]# aos_show_tech | grep -i dns [2016/10/20 23:04:20.534538UTC@event-'warning']:(textMsg=Failing outgoing mount to <'tbt://aos-server:29731/Data/ReplicaStatus?flags=i','/Metadb/ReplicaStatus'>' due to code 'resynchronizing' and reason 'Dns lookup issue "Temporary failure in name resolution" Unknown error 18446744073709551613) [2016/10/20 23:04:21.540444UTC@OutgoingMountConnectionError-'warning']:(connectionName=--NONE--,localPath=/Metadb/ReplicaStatus,remotePath=tbt://aos-server:29731/Data/ReplicaStatus?flags=i,msg=Tac::ErrnoException: Dns lookup issue "Temporary failure in name resolution" Unknown error 18446744073709551613) [2016/10/20 23:04:21.541174UTC@event-'warning']:(textMsg=Failing outgoing mount to <'tbt://aos-server:29731/Data/ReplicaStatus?flags=i','/Metadb/ReplicaStatus'>' due to code 'resynchronizing' and reason 'Dns lookup issue "Temporary failure in name resolution" Unknown error 18446744073709551613) Insufficient Guestshell filesystem size An error message ‘AOS Agent needs XXMB on the / filesystem’ will occur if the rootfs partition is not at least 1GB large. Please make sure to resize the guestshell filesystem to 2gb ram, 1gb disk, and 6% CPU. <snip> + popd /tmp/selfgz18527139 + rpm -Uvh --nodeps --force /tmp/selfgz18527139/aos-device-agent-1.1.0-0.1.1108.x86_64.rpm Preparing... ################################# [100%] installing package aos-device-agent-1.1.0-0.1.1108.x86_64 needs 55MB on the / filesystem
Apstra 服务需要很长时间才能在思科 NX-OS 上启动
思科 NX-OS 上的 GuestShell 需要几分钟才能初始化 LXC 容器中的 NXAPI。这是正常的。为了解决这种延迟,Apstra 脚本初始化中添加了等待延迟。
Apstra 停止和故障无差错 (MGMT VRF)
确保来宾外壳正确位于管理 VRF 后面。
默认情况下,在运行“ping”命令时,我们应该无法 ping Apstra 服务器:
下面 - 我们预计从全局默认路由表到 Apstra 服务器 172.20.156.3 的 ping 会失败,但在访客外壳下成功。
SAL2028T5PP-172-20-156-5# ping 172.20.156.3 PING 172.20.156.3 (172.20.156.3): 56 data bytes ping: sendto 172.20.156.3 64 chars, No route to host ^C --- 172.20.156.3 ping statistics --- 1 packets transmitted, 0 packets received, 100.00% packet loss SAL2028T5PP-172-20-156-5# ping 172.20.156.3 vrf management PING 172.20.156.3 (172.20.156.3): 56 data bytes 64 bytes from 172.20.156.3: icmp_seq=0 ttl=63 time=0.649 ms 64 bytes from 172.20.156.3: icmp_seq=1 ttl=63 time=0.449 ms 64 bytes from 172.20.156.3: icmp_seq=2 ttl=63 time=0.428 ms 64 bytes from 172.20.156.3: icmp_seq=3 ttl=63 time=0.423 ms 64 bytes from 172.20.156.3: icmp_seq=4 ttl=63 time=0.404 ms ^C
验证NX-OS访客外壳中的MGMT VRF
[root@guestshell ~]# ping 172.20.157.3 connect: Network is unreachable [root@guestshell ~]# sudo ip netns exec management ping 172.20.156.3 PING 172.20.156.3 (172.20.156.3) 56(84) bytes of data. 64 bytes from 172.20.156.3: icmp_seq=1 ttl=64 time=0.226 ms 64 bytes from 172.20.156.3: icmp_seq=2 ttl=64 time=0.232 ms ^C