Cet article est issu d’une importation historique.
Il fut fait sans correcteur orthographique et grammaticale, il est aussi fort probable que des images et liens soient indisponible.

Scale my BSD 🐡

Moi: Vous savez quoi ?
Vous: Non, mais tu vas nous le dire !
Moi: En serveur, je préfÚre grandement un OpenBSD à un GNU/Linux
Vous: Et pourquoi donc ?
Moi: Pour pleins de raisons, comme son PF, HTTPD, SMTPD …
Vous: MouĂ©, enfin SMTPD il est aussi sur d’autres os, puis OpenBSD n’est pas disponible de base, et les solutions trouvĂ©es jusque-lĂ  sur le net ne sont pas pratiques, et c’est compliquĂ© et blabla bla …

Je fais trop bien les questions et les rĂ©ponses avec moi-mĂȘme, quelle discussion constructive incroyable

Image de presentation
Je ne suis pas aussi confiant que Barney pour le coup


[Musique de Rocky]

But

  • *Installer un OpenBSD sur les serveurs x86 de chez scaleway
  • **Pouvoir contrĂŽler l’Os depuis l’interface scaleway
  • *Ne pas devoir passer par une manipe manuelle Ă  chaque boot
  • *Pouvoir en faire une image prĂ©s config Ă  dĂ©ployer
  • **Que ça tourne sur les x86 des gammes Start/BareMetal/Pro

* C’est la win
** C’est la loose pour le moment

Observations

  • Avec “fdisk -l” on constate une partission EFI
  • Sans OS sur le disque, le serveur “hard reboot” puis passe en mode off
  • En Ă©coutant le port 80 au boot on peut surprendre une discutions avec 169.254.42.42
xxx IP xxx > 169.254.42.42.http: Flags [P.], seq 1225680221:1225680383, ack 1681506505, win 229, options [nop,nop,TS val 6113219 ecr 329066878], length 162: HTTP
E...".@.@...
.B...**.z.PI.e]d9......!......
.]G...)~PATCH /state HTTP/1.1
Host: 169.254.42.42
User-Agent: curl/7.52.1
Accept: */*
Content-Type: application/json
Content-Length: 26

{"state_detail": "booted"}
17:13:11.459660 IP 169.254.42.42.http > xxx: Flags [P.], seq 1:164, ack 162, win 235, options [nop,nop,TS val 329067003 ecr 6113219], length 163: HTTP: HTTP/1.1 200 OK
E.....@.;.4...**
.B..P.zd9..I.e............
..)..]G.HTTP/1.1 200 OK
Server: Tengine
Date: Tue, 08 May 2018 17:13:11 GMT
Content-Type: text/plain
Content-Length: 20
Connection: keep-alive

STATE_DETAIL=booted
  • Avec un petit grep -rn on trouve un script contenant STATE_DETAIL nommĂ© scw-signal-state

Solution

  1. Créer un serveur x86 64 avec un volume 50G pour OpenBSD
  2. Installer qemu et Dl miniroot**.fs
  3. New VM miniroot**.fs et en utilisant le volume prévu qemu-system-x86_64 -curses -drive file=miniroot**.fs -drive file=/dev/vdb -net nic -net user
  4. Installer OpenBSD comme vous voulez, sauf pour :
    • IPv4 address for em0? (or ‘dhcp’ or ’none’) [dhcp]
    • Change the default console to com0? [no] yes_(Pour utiliser la console en ligne)_
    • Which disk is the root disk? (’?’ for details) [wd0] wd1
    • Use (W)hole disk MBR, whole disk (G)PT or (E)dit? [whole] G (Partition GTP pour EFI)
    • Installez BSD.mp affin d’Ă©tre en kernel MultiProcessor (il fonctionne aussi en sigle core)
    • À la fin de l’install, copiĂ© le hostname pour l’interface vio0 (nom de l’interface des vps sous OpenBSD) # cp /etc/hostname.em0 /etc/hostname.vio0
  5. Quand c’est fini on Ă©teint tout, on fait un snapshot du volume et crĂ©ation d’un nouveau serveur avec ce snapshot
  6. /*ATTENTION le serveur hard reboot aprĂšs quelques minutes, temps que l’on n’envoie pas la validation, pour finir en erreur */
  7. Une fois le serveur boot, il faut installer curl (et wget d’aprĂšs moi), puis mettre en place le script scw-signal-state (j’ai hĂ©bergĂ© les scripts, car je ne les ai pas trouvĂ©s en ligne)
  8. Vous pouvez Ă©teindre le serveur et OpenBSD afin de faire un snapshot stable.
  • Si le signal n’est pas envoyĂ©, peut-ĂȘtre que votre PATH est mal renseignĂ©, un petit “whereis curl” pour vĂ©rifier ça.
  • S’il est impossible de rĂ©soudre les noms de domaines, modifiez votre /etc/resolv.conf en ajoutant par ex le name serveur de google 8.8.8.8. Le temps de fixer ça plus tard

À ce moment-lĂ , vous pouvez rĂ©aliser une image d’installation dans votre interface avec le snapshot prĂ©cĂ©demment crĂ©e.

Vous trouverez ici : https://git.iglou.eu/NonIgImport/Scaleway-scripts/tree/master le repos ou j’ai upload deux scripts scw-*, celui qui envoie le “booted” et un autre qui vous renvois toutes les informations relatives au serveur. J’ai aussi mis une version modifiĂ©e de scw-signal-state, qui fait un loop temps qu’elle n’a pas pu effectuer l’envoi du signal, car j’avais de temps en temps un signal envoyĂ© avant que le serveur soit connectĂ©.

Image de presentation

Et ça ne fonctionne que sur la gamme start, donc un petit fail quand mĂȘme !

Pour les serveurs BareMetal et Pro, n’ayant pas la possibilitĂ© d’accĂ©der au local boot, grub ou iPXE … Ce n’est pas gagnĂ©. Mais je reste en recherche !

Rien ne devrait empĂȘcher cette “technique” de fonctionner avec n’importe quel Os.

Si vous avez des questions ou des améliorations à me proposer, je reste disponible :)

Ă©a, les amis.