Apstra ZTP (Équipements)
Présentation d’Apstra ZTP
Ce document s’applique aux versions d’Apstra ZTP 4.1. Utilisez la version Apstra ZTP correspondant à la version Juniper Apstra que vous utilisez. (Les versions Apstra antérieures à 4.0 utilisent Apstra ZTP versions 1.0.0 ou 2.0.0. Pour plus d’informations, consultez le Guide de l’utilisateur Juniper Apstra 3.3.0.)
Apstra ZTP est un serveur de provisionnement sans intervention pour les systèmes d’infrastructure de centre de données. (Apstra ZTP remplace le logiciel Aeon-ZTPS pris en charge par la communauté qui était auparavant utilisé pour l’implémentation ZTP dans l’environnement Apstra.) Apstra ZTP vous permet de démarrer les équipements de centre de données Apstra sans tenir compte des différences entre les mécanismes NOS sous-jacents. Le ZTP, du point de vue d’Apstra, est un processus qui amène un équipement depuis le démarrage initial jusqu’à un point où il est géré par Apstra via des agents système d’équipement.
En fonction de la configuration ZTP, le processus peut inclure (mais pas toujours) les fonctionnalités suivantes :
- Un service DHCP
- Définition du mot de passe administrateur/racine de l’équipement
- Création d’un utilisateur d’équipement pour l’agent système de l’équipement
- Mise à niveau/déclassement DES
- Installation de l’agent système d’équipement onbox ou offbox
Voir également les informations spécifiques aux fournisseurs :
Pour éviter qu’un équipement ne soit verrouillé en cas de problème pendant le processus ZTP, ZTP utilise des informations d’identification codées en dur par défaut. Ces certifications sont les suivants :
- racine /admin
- aosadmin/aosadmin
Vous pouvez utiliser une image vm fournie par Apstra (.ova
, .qcow2.gz
, .vhdx.gz
) ou créer votre propre serveur ZTP et utiliser les scripts de provisionnement des équipements fournis par Apstra dans le cadre du processus ZTP/DHCP existant pour installer automatiquement des agents sur les équipements dans le cadre du processus de démarrage. L’implémentation de référence Apstra ZTP comprend les trois phases suivantes :
- Phase DHCP générique
- L’équipement demande une adresse IP via DHCP.
- L’équipement reçoit l’adresse IP attribuée et un pointeur vers un script à exécuter (ou une image du système d’exploitation à installer si l’image de vm fournie par Apstra).
- Phase d’initialisation
- L’équipement télécharge le script ZTP à l’aide de TFTP.
- L’équipement exécute le script téléchargé pour le préparer à être géré. Il s’agit notamment de vérifier que l’équipement exécute un système d’exploitation pris en charge.
- Phase d’installation de l’agent
- Le script ZTP effectue un appel API pour installer un agent système sur l’équipement.
Exigences de ressources serveur Apstra ZTP VM
Apstra ZTP s’exécute comme un serveur Ubuntu 18.04 LTS exécutant un serveur DHCP, HTTP et TFTP et inclut des scripts ZTP fournis par Apstra que vous devez personnaliser pour votre environnement. Le tableau ci-dessous présente les spécifications minimales du serveur pour un environnement de production :
Configuration des ressources | |
---|---|
Type de système d’exploitation invité | Ubuntu 18.04 LTS 64 bits |
Mémoire | 2 Go |
CPU | 1 processeur virtuel |
Stockage sur disque | 64 Go |
Réseau | Au moins 1 adaptateur réseau. Configuré initialement pour DHCP |
Exigences du réseau Apstra ZTP
Rôle | des ports | de destination | source |
---|---|---|---|
Agents d’équipement | Serveur DHCP (renouvellements) et diffusion (demandes) | udp/67 -> udp/68 | DHCP Client |
Agents d’équipement | Apstra ZTP | tout -> tcp/80 | Scripts d’initialisation et API |
Agents d’équipement Arista et Cisco | Apstra ZTP | any -> udp/69 | TFTP pour POAP et ZTP |
Apstra ZTP | Contrôleur | tout -> tcp/443 | API d’installation de l’agent système d’équipement |
Outre les exigences réseau spécifiques à ZTP, le serveur Et les agents d’équipement Apstra ZTP ont besoin d’une connectivité au contrôleur. Pour plus d’informations, reportez-vous aux ports de communication requis dans le guide d’installation et de mise à niveau de Juniper Apstra .
Vous pouvez surveiller l’état du ZTP de l’équipement à partir de l’interface graphique Apstra. Dans le menu de navigation de gauche, accédez à Équipements > statut ZTP > Équipements.
Chaque équipement qui interagit avec DHCP et ZTP est répertorié avec son ID système (numéro de série) s’il est connu, l’état ZTP, le dernier événement ZTP et la date de la dernière mise à jour de l’état de l’équipement.
Pour voir l’intégralité des journaux DHCP et ZTP de l’équipement, cliquez sur l’icône « Afficher le journal ».
Tous les équipements qui interagissent avec DHCP ou ZTP sont répertoriés. Si vous n'avez plus besoin des journaux d'un équipement, cliquez sur le bouton Supprimer .
Les fichiers journaux de tous les processus sont dans le /containers_data/logs
répertoire.
root@apstra-ztp:/containers_data/logs# ls -l total 7132 -rw-r--r-- 1 root root 6351759 Oct 28 17:47 debug.log drwxr-xr-x 2 root root 4096 Oct 27 19:20 devices -rw------- 1 root root 0 Oct 23 20:02 dhcpd.leases -rw-r--r-- 1 root root 926980 Oct 28 17:39 info.log -rw------- 1 root root 58 Oct 23 20:02 README -rw------- 1 root root 469 Oct 27 02:13 rsyslog.log root@apstra-ztp:/containers_data/logs# tail info.log 2020-10-28 17:16:38,786 root.status INFO Incoming: dhcpd dhcpd[18]: DHCPACK on 192.168.59.9 to 04:f8:f8:6b:36:91 via eth0 2020-10-28 17:18:04,299 root.status INFO Incoming: dhcpd dhcpd[18]: DHCPREQUEST for 192.168.59.9 from 04:f8:f8:6b:36:91 via eth0 2020-10-28 17:18:04,300 root.status INFO Incoming: dhcpd dhcpd[18]: DHCPACK on 192.168.59.9 to 04:f8:f8:6b:36:91 via eth0 2020-10-28 17:19:29,250 root.status INFO Incoming: dhcpd : -- MARK -- 2020-10-28 17:19:29,442 root.status ERROR Failed to update status of all containers: /api/ztp/service 404 b'{"errors":"Resource not found"}' 2020-10-28 17:33:29,353 root.status INFO Incoming: tftp : -- MARK -- 2020-10-28 17:33:29,538 root.status ERROR Failed to update status of all containers: /api/ztp/service 404 b'{"errors":"Resource not found"}' 2020-10-28 17:33:34,768 root.status INFO Incoming: status : -- MARK -- 2020-10-28 17:39:29,349 root.status INFO Incoming: dhcpd : -- MARK -- 2020-10-28 17:39:29,539 root.status ERROR Failed to update status of all containers: /api/ztp/service 404 b'{"errors":"Resource not found"}' root@apstra-ztp:/containers_data/logs#
Vous pouvez surveiller les services ZTP sur le serveur Apstra ZTP à partir de l’interface graphique Apstra. Dans le menu de navigation de gauche, accédez à Équipements > services > statut ZTP.
Chaque nom de service inclut son adresse IP Docker, l’état du service et la date de la dernière mise à jour du service.
Télécharger et déployer apstra ZTP VM
Configurer l’adresse IP de gestion statique (Apstra ZTP)
Par défaut, le serveur Apstra ZTP tente d’attribuer une adresse IP à son interface eth0 via DHCP. Si vous utilisez le serveur Apstra ZTP en tant que serveur DHCP, vous devez définir une adresse IP de gestion statique.
Configurer l’utilisateur ZTP
Vous pouvez utiliser n’importe quel utilisateur gui Apstra configuré qui dispose d’un accès en écriture API (comme l’administrateur), mais nous vous recommandons de créer un utilisateur désigné (par exemple « ztp ») auquel le rôle prédéfini device_ztp. Le rôle device_ztp permet aux utilisateurs titulaires de ce rôle de passer des appels API au contrôleur pour demander l’installation de l’agent système de l’équipement. Pour plus d’informations, voir Gestion des utilisateurs/rôles.
Configurer un serveur DHCP
Le logiciel Apstra est livré avec un serveur DHCP ISC pour le réseau de gestion des équipements. Si vous utilisez un autre serveur DHCP, il est de votre responsabilité de configurer les mêmes options que celles décrites dans ce guide pour le serveur DHCP fourni par Apstra.
Par exemple, si vous utilisez des équipements Juniper Junos OS ou Junos OS Evolved, vous devez vous assurer que le serveur contient les éléments suivants, de sorte que l’équipement charge le fichier de configuration approprié.
option space JUNIPER option JUNIPER.config-file-name code 1 = text option JUNIPER-encapsulation code 43 = encapsulate JUNIPER option user-class-information code 77 = text; class "juniper" { match if (substring(option vendor-class-identifier, 0, 7) = "Juniper") and not (suffix(option user-class-information, 4) = "-EVO"); option JUNIPER.config-file-name "junos_apstra_ztp_bootstrap.sh"; } class "juniper-evo" { match if (substring(option vendor-class-identifier, 0, 7) = "Juniper") and (suffix(option user-class-information, 4) = "-EVO"); option JUNIPER.config-file-name "ztp.py"; }
Les fichiers de configuration DHCP se trouvent sur la vm Apstra ZTP dans le /containers_data/dhcp
répertoire.
admin@apstra-ztp:~$ sudo ls -l /containers_data/dhcp total 16 -rw------- 1 root root 2533 Oct 21 00:35 dhcpd.conf -rw------- 1 root root 146 Oct 21 00:35 Dockerfile -rw------- 1 root root 932 Oct 21 00:35 init.sh -rw------- 1 root root 1896 Oct 21 00:35 rsyslog.conf admin@apstra-ztp:~$
Tous les fichiers de configuration appartiennent à root
. Vous devez utiliser sudo pour exécuter des commandes en root
utilisant la sudo
commande ou après être devenu root
avec la sudo -s
commande.
Configurer l’adresse IP du contrôleur pour ZTP
Configurez l’IP du contrôleur et le nom d’utilisateur Apstra ZTP dans le /containers_data/status/app/aos.conf
fichier sur le serveur Apstra ZTP.
admin@apstra-ztp:~$ sudo nano /containers_data/status/app/aos.conf admin@apstra-ztp:~$ sudo nano /containers_data/status/app/aos.conf
{ "ip": "192.168.59.3", "user": "ztp", "password": "ztp-user-password" }
ip |
Adresse IP du contrôleur |
user |
Nom d’utilisateur ZTP ou administrateur |
password |
Mot de passe de l'utilisateur |
Modifier le fichier de configuration Apstra ZTP
Apstra ZTP VM comprend un serveur TFTP et NGINX HTTP. Ces serveurs ne nécessitent pas de configuration. Les deux serveurs servent des fichiers hors du /containers_data/tftp
répertoire. (Cumulus n’est plus pris en charge à compter de la version 4.1.0 d’Apstra.)
admin@apstra-ztp:~$ sudo ls -l /containers_data/tftp/ total 232 -rwxr-xr-x 1 root root 2448 Apr 24 00:47 config_verifier.py -rwxr-xr-x 1 root root 393 Apr 24 00:47 container_init.sh -rwxr-xr-x 1 root root 170 Apr 24 00:47 cumulus_custom.sh -rwxr-xr-x 1 root root 55 Apr 24 00:47 cumulus_license_file -rwxr-xr-x 1 root root 192 Apr 24 00:47 Dockerfile -rwxr-xr-x 1 root root 107 Apr 24 00:47 eos_custom.sh -rwxr-xr-x 1 root root 5393 Apr 24 00:47 junos_apstra_ztp_bootstrap.sh -rwxr-xr-x 1 root root 1799 Apr 24 00:47 junos_custom.sh -rwxr-xr-x 1 root root 86 Apr 24 00:47 nxos_custom.sh -rwxr-xr-x 1 root root 205 Apr 24 00:47 poap-md5sum -rwxr-xr-x 1 root root 1843 Apr 24 00:47 rsyslog.conf -rwxr-xr-x 1 root root 170 Apr 24 00:47 sonic_custom.sh -rwxr-xr-x 1 root root 1910 Apr 24 00:47 ztp.json -rwxr-xr-x 1 root root 86599 Apr 24 00:48 ztp.py -rw------- 1 root root 86556 Apr 24 00:48 ztp.py.md5 admin@apstra-ztp:~$
Le ztp.json
fichier contient toute la configuration du script ztp.py
Apstra ZTP .
- Modifiez le
ztp.json
fichier avec l’éditeur de texte vi ou nano.admin@apstra-ztp:~$ sudo nano /containers_data/tftp/ztp.json
- Le
ztp.json
fichier est organisé par les éléments suivants :valeurs par défaut : les valeurs sont utilisées pour tous les équipements, sauf si des clés plus spécifiques sont définies. "defaults": { "device-root-password": "root-password-123", "device-user": "admin", "device-user-password": "admin-password-123", "system-agent-params": { "agent_type": "onbox", "install_requirements": false } }
plate-forme : les valeurs sont utilisées pour tous les équipements d’une plate-forme réseau (« nxos », « eos », « junos », « sonic ») à moins que des clés plus spécifiques ne soient définies. "sonic": { "sonic-versions": ["SONiC-OS-3.4.0-Enterprise_Advanced"], "sonic-image": "http://10.85.24.52/sonic/3.4.0/sonic-3.4.0-GA-adv-bcm.bin", "device-root-password": "admin", "device-user": "admin", "device-user-password": "admin", "custom-config": "sonic_custom.sh", "system-agent-params": { "agent_type": "onbox", "job_on_create": "install" } }
modèle : les valeurs sont utilisées pour tous les équipements d’un modèle d’équipement spécifique (par exemple « QFX10002-36Q »). "QFX10002-36Q": { "junos-versions": ["21.2R1-S2.2"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-10-f-x86-64-21.2R1-S2.2-secure-signed.tgz" }
numéro de série : les valeurs sont utilisées pour un équipement correspondant à un numéro de série spécifique (par exemple « TH0TFD6TCET0015G0015 »). "TH0TFD6TCET0015G0015": { "sonic-versions": ["SONiC-OS-4.0.5-Enterprise_Advanced"], "sonic-image": "http://10.85.24.52/sonic/4.0.5/sonic-broadcom-enterprise-advanced-4.0.5-GA.bin" }
Les données plus spécifiques ont priorité sur les autres données. Par exemple, les données d’un numéro de série spécifique ont priorité sur toutes les autres données, puis le modèle, puis la plate-forme, et enfin les données par défaut.
- Lla
ztp.json
utilise les clés suivantes :junos-versions
- Versions valides pour les équipements Juniper Junos. Si un équipement n’exécute pas de version dans cette liste, ZTP le met à niveau avec l’imagejunos-image
."junos-versions": [ "20.2R2-S3.5" ]
junos-image
- Nom de fichier de l’image Juniper Junos TGZ à charger si la version en cours d’exécution ne correspond pas à une version de lajunos-versions
liste.- Par défaut, le nom de l’image est chargé à partir du serveur ZTP via TFTP à partir du répertoire du
/container_data/tftp/
serveur ZTP. Par exemple :"junos-image": "jinstall-host-qfx-5-20.2R2-S3.5-signed.tgz"
-
Pour utiliser n’importe quel serveur HTTP pour le transfert d’images, saisissez une URL HTTP valide avec adresse IP. Par exemple :
"junos-image": "http://192.168.59.4/jinstall-host-qfx-5-20.2R2-S3.5-signed.tgz"
Cet exemple utilise HTTP depuis le contrôleur pour transférer l’image Juniper Junos.
sonic-versions
- Versions valides pour les équipements SONiC. Si un équipement n’exécute pas de version dans cette liste, ZTP le met à niveau avec l’imagesonic-image
."sonic-versions": [ "SONiC-OS-3.1.0a-Enterprise_Base" ]
sonic-image
- Nom de fichier de l’image SONiC ONIE BIN à charger si la version en cours d’exécution ne correspond pas à une version de lasonic-versions
liste.- Par défaut, le nom de l’image est chargé à partir du serveur ZTP via TFTP à partir du répertoire du
/container_data/tftp/
serveur ZTP. Par exemple :"sonic-image": "sonic-3.1.0a-bcm.bin"
- Pour utiliser n’importe quel serveur HTTP pour le transfert d’images, saisissez une URL HTTP valide avec adresse IP. Par exemple :
"sonic-image": "http://192.168.59.3/sonic-3.1.0a-bcm.bin"
Cet exemple utilise HTTP à partir du contrôleur pour transférer l’image SONiC.
nxos-versions
- Versions valides pour les équipements NX-OS. Si un équipement n’exécute pas de version dans cette liste, ZTP le met à niveau avec l’imagenxos-image
."nxos-versions": [ "9.2(2)", "9.3(6)" ]
nxos-image
- Nom de fichier de l’image NX-OS à charger si la version en cours d’exécution ne correspond pas à une version de lanxos-versions
liste.- Par défaut, le nom de l’image est chargé à partir du serveur ZTP via TFTP à partir du répertoire du
/container_data/tftp/
serveur ZTP. Par exemple :"nxos-image": "nxos.9.3.6.bin"
- Pour utiliser n’importe quel serveur HTTP pour le transfert d’images, saisissez une URL HTTP valide avec adresse IP. Par exemple :
"nxos-image": "http://192.168.59.4/nxos.9.3.6.bin"
Cet exemple utilise HTTP du serveur ZTP pour transférer l’image de Cisco NX-OS.
eos-versions
- Versions valides pour les équipements Arista EOS. Si un équipement n’exécute pas de version dans cette liste, ZTP le met à niveau avec l’imageeos-image
."eos-versions": [ "4.22.3M", "4.24.5M" ]
eos-image
- Nom de fichier de l’image Arista EOS SWI à charger si la version en cours d’exécution ne correspond pas à une version de laeos-versions
liste.-
Par défaut, le nom de l’image est chargé à partir du serveur ZTP via TFTP à partir du répertoire du
/container_data/tftp/
serveur ZTP. Par exemple :"eos-image": "EOS-4.24.5M.swi"
-
Pour utiliser n’importe quel serveur HTTP pour le transfert d’images, saisissez une URL HTTP valide avec adresse IP. Par exemple :
"eos-image": "http://192.168.59.3/dos_images/EOS-4.24.5M.swi"
Cet exemple utilise HTTP du contrôleur pour transférer l’image Arista EOS.
device-root-password
- Le processus ZTP définit le mot de passe racine de l’équipement à cette valeur. Pour les équipements Arista EOS et Cisco NX-OS, ledevice-root-password
mot de passe est utilisé pour définir le mot de passe du systèmeadmin
."device-root-password": "root-admin-password"
device-user
/device-user-password
- Nom d’utilisateur et mot de passe utilisés pour l’agent système de l’équipement. En outre, si nécessaire, le processus ZTP crée un utilisateur sur l’équipement avec ce nom d’utilisateur et ce mot de passe."device-user": "aosadmin", "device-user-password": "aosadmin-password"
custom-config
- Nom de fichier du script shell de configuration personnalisé dans le répertoire TFTP ou d’une URL pointant vers le fichier sur un serveur HTTP. Ce script shell s’exécute pendant ZTP, ce qui vous permet d’ajouter une configuration personnalisée à l’équipement. Pour plus d’informations, reportez-vous à la section Informations spécifiques à la plate-forme ci-dessous."custom-config": "sonic_custom.sh"
system-agent-params
Informations utilisées pour créer de nouveaux utilisateurs et agents système sur les équipements, comme décrit ci-dessous. agent_type
- Type d’agent, boîte de réception ou hors boîte de réception"agent_type": "onbox"
install_requirements
- Toujours défini sur false. Aucun système d’exploitation réseau n’est actuellement nécessaire."install_requirements": false
job_on_create
- Configurez pourinstall
installer l’agent onbox sur l’équipement"job_on_create": "install"
Exemple Junos
{ "junos": { "junos-versions": ["21.2R1-S2.2"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-5e-x86-64-21.2R1-S2.2-secure-signed.tgz", "device-root-password": "root123", "device-user": "admin", "device-user-password": "admin", "system-agent-params": { "platform": "junos", "agent_type": "offbox", "job_on_create": "install" } }, "QFX10002-36Q": { "junos-versions": ["21.2R1-S2.2"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S2.2/jinstall-host-qfx-10-f-x86-64-21.2R1-S2.2-secure-signed.tgz" }, "JNP10002-60C [QFX10002-60C]": { "junos-versions": ["21.2R1-S1.3"], "junos-image": "http://10.85.24.52/juniper/21.2R1-S1.3/junos-vmhost-install-qfx-x86-64-21.2R1-S1.3.tgz" } }
platform
- (Requis pour les agents hors boîte de réception uniquement) Définissez la plate-forme de l’équipement (« eos », « nxos », « junos »). En minuscule uniquement."platform": "junos"
open_options
- (agents offbox uniquement) Définir pour activer https entre l’agent offbox et l’interface API de l’équipement. Si open_options n’est pas défini, la connexion par défaut est HTTP."open_options": { "proto": "https", "port": "443" }
packages
- Configurez le SDK ou les packages de télémétrie supplémentaires à télécharger sur l’agent système."packages": [ "aos-deployment-helper-nxos", "aosstdcollectors-builtin-nxos", "aosstdcollectors-custom-nxos" ]
- Par défaut, le nom de l’image est chargé à partir du serveur ZTP via TFTP à partir du répertoire du
Pour obtenir de la documentation sur l’API REST pour obtenir toutes les options disponibles system-agent-params
dans /api/system-agents
, reportez-vous à Swagger.