Pour pouvoir faire des tests tranquillement on va créer un réseau de test séparé et mettre un serveur de boot (DHCP/TFTP).
Création d’un réseau
On va d’abord créer un réseau pour nos tests. On va ajouter un etherstub pour le lab :
dladm create-etherstub lab0
dladm create-vnic -l lab0 gwlab0
ifconfig gwlab0 plumb
ifconfig gwlab0 inet 192.168.10.1 up
On ajoute les règles pour le NAT dans /etc/ipf/ipnat.conf :
map e1000g0 192.168.10.0/24 -> 0/32 portmap tcp/udp auto
map e1000g0 192.168.10.0/24 -> 0/32
Puis on active les règles :
ipnat -C -v -f /etc/ipf/ipnat.conf
ipnat -l
Sur ce réseau on va créer un serveur DHCP/TFTP/PXE pour pouvoir démarrer nos machines CoreOS.
Création d’un serveur de boot
On va utiliser une petite zone pour les services de boot.
Le fichier de définition de la zone :
{
"alias": "lab0-pxe-server",
"hostname": "lab0-pxe-server",
"brand": "joyent",
"max_physical_memory": 64,
"dataset_uuid": "3f57ffe8-47da-11e4-aa8b-dfb50a06586a",
"nics": [
{
"nic_tag": "lab0",
"ip": "192.168.10.2",
"netmask": "255.255.255.0",
"gateway": "192.168.10.1",
"dhcp_server": "1"
}
],
"customer_metadata": {
"root_authorized_keys":
"ssh-rsa AAAAB3NXXXXXXXX montfort",
"user-script" : "/usr/sbin/mdata-get root_authorized_keys > ~root/.ssh/authorized_keys ; /usr/sbin/mdata-get root_authorized_keys > ~admin/.ssh/authorized_keys ; route add default 188.165.XXX.XXX"
}
}
Installation de la machine
On créé la zone, on met à jour le système et on installer dhcp et tftp.
vmadm create -f lab0-pxe-server.json
zlogin e8d87979-35b5-41ea-a526-bda3aa8b1cac
pkgin up
pkgin fug
pkgin -y install tftp-hpa
pkgin install dhcpd-pools-2.16nb4
Configuration
TFTP
Création du serveur TFTP.
mkdir /tftpboot
echo "tftp dgram udp wait root /opt/local/sbin/in.tftpd in.tftpd -s /tftpboot" > /tmp/tftp.inetd
svcadm enable inetd
inetconv -i /tmp/tftp.inetd -o /tmp/
svccfg import /tmp/tftp-udp.xml
svcadm restart tftp/udp
PXE
Création de l’rborescence pour le boot PXE.
cd /tftpboot
mkdir pxelinux.cfg
wget http://ftp.fr.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/pxelinux.0
touch pxelinux.cfg/default
DHCP
Configuration du serveur DHCP.
svccfg import /opt/local/lib/svc/manifest/isc-dhcpd.xml
svcadm enable svc:/pkgsrc/isc-dhcpd:default
vi /opt/local/etc/dhcp/dhcpd.conf
option domain-name "lab0.org";
option domain-name-servers 8.8.8.8, 8.8.4.4;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.10.0 netmask 255.255.255.0 {
range 192.168.10.10 192.168.10.30;
option domain-name-servers 8.8.8.8;
option domain-name "lab0.org";
option routers 192.168.10.1;
option broadcast-address 192.168.10.254;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.10.2;
#filename "undionly.kpxe";
#if exists user-class and option user-class = "iPXE" {
# filename "menu.ipxe";
#} else {
# filename "undionly.kpxe";
#}
}
host coreos1 {
hardware ethernet e2:ef:5e:b0:35:ec;
server-name "coreos1.lab0.org";
filename "pxelinux.0";
}
Connexion à distance
Pour pouvoir se connecter directement au serveur on peut ajouter dans ~/.ssh/config :
Host lab0-pxe-server Hostname 192.168.10.2
ProxyCommand ssh root@xxxx.montfort.fr -W %h:%p
User root