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