Um Netzwerkkomponenten in Masse auszurollen kann auf “Zero Touch Provisioning” zurückgegriffen werden. Hier wird ein DHCP-Server um diverse Optionen erweitert. Dieser vermittelt anschließend, welche Firmware und welche initiale Konfiguration vom Netzwerkgerät geladen werden soll. Dafür wird ein FTP / HTTP oder TFTP Server benötigt. Dieser kann zeitgleich auf dem DHCP-Server laufen.
Folgender Aufbau wird im Beispiel verwendet:

DHCP Server
Es wird der klassische ISC DHCP Server verwendet. Folgende Konfiguration wird im Beispiel verwendet.
vi /etc/dhcp/dhcpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
option domain-name "decon230.org";
option domain-name-servers 172.23.0.254;
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;
subnet 172.23.0.0 netmask 255.255.255.0 {
option subnet-mask 255.255.254.0;
default-lease-time 3600;
max-lease-time 7200;
range 172.23.0.200 172.23.0.210;
}
# ZTP Optionen
option option-150 code 150 = ip-address;
option space ZTP;
option ZTP.server-image code 4 = text;
option ZTP.server-image code 0 = text;
option ZTP.server-file code 1 = text;
option ZTP.image-file-type code 2 = text;
option ZTP.transfer-mode code 3 = text;
option ZTP-encapsulation code 43 = encapsulate ZTP;
# Hier werden die jeweiligen Komponenten konfiguriert.
# Jedes Gerät erhält an Hand seiner MGM-NIC MAC Adresse eine statische IP.
# Die initiale Konfiguration liegt unter /srv/tftp und wird pro Gerät
# konfiguriert. Es soll per FTP kopiert werden. Aktuelle QFX Geräte von
# Juniper können keine Daten per TFTP laden.
host spine01 {
hardware ethernet 52:54:00:13:e0:df;
fixed-address 172.23.0.11;
option option-150 172.23.0.254;
option host-name "Spine01";
option ZTP.server-file "/srv/tftp/spine01.load";
option ZTP.transfer-mode "ftp";
}
host spine02 {
hardware ethernet 52:54:00:f7:fe:b0;
fixed-address 172.23.0.12;
option option-150 172.23.0.254;
option host-name "Spine02";
option ZTP.server-file "/srv/tftp/spine02.load";
option ZTP.transfer-mode "ftp";
}
host leaf01 {
hardware ethernet 52:54:00:77:cf:cb;
fixed-address 172.23.0.21;
option option-150 172.23.0.254;
option host-name "Leaf01";
option ZTP.server-file "/srv/tftp/leaf01.load";
option ZTP.transfer-mode "ftp";
}
host leaf02 {
hardware ethernet 52:54:00:a8:81:23;
fixed-address 172.23.0.22;
option option-150 172.23.0.254;
option host-name "Leaf02";
option ZTP.server-file "/srv/tftp/leaf02.load";
option ZTP.transfer-mode "ftp";
}
vi /etc/default/isc-dhcp-server
DHCPDv4_CONF=/etc/dhcp/dhcpd.conf
DHCPDv4_PID=/var/run/dhcpd.pid
INTERFACESv4=""
FTP Server
Im Beispiel wird vsftpd verwendet. Der Zugriff wird für anonyme Benutzer ohne Kennwort aktiviert.
vi /etc/vsftpd.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
listen=NO
listen_ipv6=YES
anonymous_enable=YES
local_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
anon_root=/srv/tftp
no_anon_password=YES
hide_ids=YES
Basis Konfiguration
Die Basis Konfigurationen werden im DHCP Server konfiguriert. Diese unterscheiden sich je nach Hersteller. Im aktuellen Beispiel werden QFX von Juniper verwendet. Es wird das root Passwort gesetzt, der User “Ansible” eingerichtet, sowie Host-, Domainnamen und MGM Interface gesetzt.
Beispiel für Spine01
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
system {
host-name Spine01;
domain-name decon230.org;
root-authentication {
encrypted-password "geheim"; ## SECRET-DATA
}
login {
user ansible {
full-name Ansible;
uid 2000;
class super-user;
authentication {
encrypted-password "geheim"; ## SECRET-DATA
}
}
}
services {
ssh {
root-login allow;
}
}
}
interfaces {
em0 {
unit 0 {
family inet {
address 172.23.0.11/24;
}
}
}
}
Anschließend wird das Gerät über die angegebene IP Adresse und dem entsprechenden root Passwort erreichbar sein.