{"id":159,"date":"2008-10-28T16:56:41","date_gmt":"2008-10-28T15:56:41","guid":{"rendered":"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/28\/vmware-server-20-sur-dedies-ovh-et-mise-en-oeuvre-dune-solution-de-haute-disponibilite-avec-datastore-en-drbd\/"},"modified":"2008-12-05T18:47:09","modified_gmt":"2008-12-05T17:47:09","slug":"vmware-server-20-sur-dedies-ovh-et-mise-en-oeuvre-dune-solution-de-haute-disponibilite-avec-datastore-en-drbd","status":"publish","type":"post","link":"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/28\/vmware-server-20-sur-dedies-ovh-et-mise-en-oeuvre-dune-solution-de-haute-disponibilite-avec-datastore-en-drbd\/","title":{"rendered":"VMWare Server 2.0 sur d\u00e9di\u00e9s OVH et mise en oeuvre d&rsquo;une solution de haute disponibilit\u00e9 avec datastore en DRBD"},"content":{"rendered":"<p>Dans la continuit\u00e9 de la d\u00e9couverte des petites sp\u00e9cificit\u00e9s de la plateforme d&rsquo;h\u00e9bergement d\u00e9di\u00e9 d&rsquo;OVH, aujourd&rsquo;hui l&rsquo;installation de VMWare Server 2.0.<\/p>\n<p>Nous allons tout d&rsquo;abord voir son installation en tenant compte des particularit\u00e9s d&rsquo;OVH, l&rsquo;utilisation de l&rsquo;<a title=\"ipfailover\" href=\"http:\/\/www.ovh.com\/fr\/particulier\/items\/ip_failover.xml\" target=\"_blank\">IpFailover<\/a> et\/ou des blocs ip RIPE fournis avec les serveurs et pour finir, en bonus, une petite bidouille \u00e0 la Guiguiabloc pour int\u00e9grer un datastore VMWare en Raid1 over ip et bascule automatique.<\/p>\n<p>Bien entendu, je pars d&rsquo;une distribution Linux de base (Debian Etch ici) et pas la distribution VMware que fourni OVH.<\/p>\n<p><strong>Pr\u00e9-Requis<\/strong> : Vous avez lu <a title=\"ovh-guigui\" href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/17\/cluster-haute-disponibilite-chez-ovh-avec-ipfailover-heartbeat-et-drbd-via-ipsec\/\" target=\"_blank\">CE PRECEDENT BILLET<\/a> avant et donc vous avez recompil\u00e9 votre noyau sur vos serveurs. (il vous faut les sources du kernel).<\/p>\n<p>Les switchs OVH ont une s\u00e9curit\u00e9 sur leurs interfaces emp\u00eachant de faire du bridging sur l&rsquo;interface eth0 de votre serveur (ce qui est tr\u00e8s bien en soi).<\/p>\n<p>En gros, vous ne pouvez pas sortir sur l&rsquo;interface du switch avec une adresse MAC diff\u00e9rente de celle de votre carte r\u00e9seau, si vous brigder l&rsquo;interface vmnet0 avec eth0, le switch se mettra en \u00ab\u00a0d\u00e9fense\u00a0\u00bb (sc\u00e9nario bien connu des bidouilleurs de Cisco \ud83d\ude42 ) et vous coupera le port.<\/p>\n<p>A savoir que le principe est le m\u00eame avec XEN \ud83d\ude09 donc attention a ce que vous faites&#8230;<\/p>\n<p>Nous allons donc bridger VMware sur une interface bidon et configurer le Host-Only pour les interfaces r\u00e9seaux de nos Machines Virtuelles.<\/p>\n<p>On commence par monter une fausse interface ethernet, en \u00e9ditant notre fichier \/etc\/network\/interfaces (Debian) :<\/p>\n<p>auto dummy0<br \/>\niface dummy0 inet static<br \/>\naddress 10.0.0.1  netmask 255.0.0.0  <strong>[ATTENTION CHOISIR UNE IP DE CLASSE PRIVEE]<\/strong><\/p>\n<p>Puis on l&rsquo;active : ifup dummy0<\/p>\n<p>(on v\u00e9rifier par ifconfig que cette interface est bien pr\u00e9sente).<\/p>\n<p>On peut attaquer l&rsquo;installation de VMware Server (je vous passe la phase de vous rendre sur le site de VMware pour r\u00e9cuperer le package et le num\u00e9ro de s\u00e9rie gratuit&#8230;)<\/p>\n<p>tar xzvf VMware-server-2.0.0-116503.i386.tar.gz<\/p>\n<p>cd vmware-server-distrib\/<\/p>\n<p>.\/vmware-install.pl<br \/>\nCreating a new VMware Server installer database using the tar4 format.<\/p>\n<p>Installing VMware Server.<\/p>\n<p>Vous r\u00e9pondez aux questions qui s&rsquo;affichent (en changeant selon vos d\u00e9sirs les r\u00e9ponses pr\u00e9-d\u00e9finies)<\/p>\n<p>Si tout ce passe bien, vous devriez arriv\u00e9 ici :<\/p>\n<p>The installation of VMware Server 2.0.0 build-116503 for Linux completed<br \/>\nsuccessfully. You can decide to remove this software from your system at any<br \/>\ntime by invoking the following command: \u00ab\u00a0\/usr\/bin\/vmware-uninstall.pl\u00a0\u00bb.<\/p>\n<p>Before running VMware Server for the first time, you need to configure it by<br \/>\ninvoking the following command: \u00ab\u00a0\/usr\/bin\/vmware-config.pl\u00a0\u00bb. Do you want this<br \/>\nprogram to invoke the command for you now? [yes]<\/p>\n<p>Vous suivez la proc\u00e9dure jusqu&rsquo;au param\u00e9trage du r\u00e9seau :<\/p>\n<p>La, on devient un peu plus attentif \ud83d\ude42<\/p>\n<p>Do you want networking for your virtual machines? (yes\/no\/help) [yes]<\/p>\n<p>Configuring a bridged network for vmnet0.<\/p>\n<p>Please specify a name for this network.<br \/>\n[Bridged]<\/p>\n<p>Your computer has multiple ethernet network interfaces available: dummy0, eth0 . Which one do you want to bridge to<br \/>\nvmnet0? [eth0] dummy0<\/p>\n<p>The following bridged networks have been defined:<\/p>\n<p>. vmnet0 is bridged to dummy0<\/p>\n<p>Do you wish to configure another bridged network? (yes\/no) [no] no<\/p>\n<p>Do you want to be able to use NAT networking in your virtual machines? (yes\/no)<br \/>\n[yes] no<\/p>\n<p>Do you want to be able to use host-only networking in your virtual machines?<br \/>\n[no] yes<\/p>\n<p>Configuring a host-only network for vmnet1.<\/p>\n<p>Please specify a name for this network.<br \/>\n[HostOnly]<\/p>\n<p>Do you want this program to probe for an unused private subnet? (yes\/no\/help)<br \/>\n[yes] no<\/p>\n<p>What will be the IP address of your host on the private<br \/>\nnetwork? 192.168.1.1 <strong>[ATTENTION CHOISIR UNE IP DE CLASSE PRIVEE]<\/strong><\/p>\n<p>What will be the netmask of your private network? 255.255.255.0<br \/>\nthe following host-only networks have been defined:<\/p>\n<p>. vmnet1 is a host-only network on private subnet 192.168.0.<\/p>\n<p>Do you wish to configure another host-only network? (yes\/no) [no] <strong>(vous pouvez cr\u00e9er d&rsquo;autres interfaces si vous le souhaitez)<\/strong><\/p>\n<p>None of the pre-built vmnet modules for VMware Server is suitable for your<br \/>\nrunning kernel.  Do you want this program to try to build the vmnet module for<br \/>\nyour system (you need to have a C compiler installed on your system)? [yes]<\/p>\n<p>Extracting the sources of the vmnet module.<\/p>\n<p>Building the vmnet module etc..<\/p>\n<p>The configuration of VMware Server 2.0.0 build-116503 for Linux for this<br \/>\nrunning kernel completed successfully.<\/p>\n<p>Et voila, vous pouvez faire pareil sur l&rsquo;autre serveur (si vous en avez deux \ud83d\ude00 )<\/p>\n<p>Vous pouvez vous connecter sur l&rsquo;excellente interface d&rsquo;administration : https:\/\/votrededieovh:8333<\/p>\n<p>Lancer la cr\u00e9ation et l&rsquo;installation d&rsquo;une nouvelle machine virtuelle en donnant comme interface r\u00e9seau, l&rsquo;interface Host-only VMNET1.<\/p>\n<p>(je ne parle pas du fonctionnement de VMware server ici, Google vous rapportera pleins de tutos \ud83d\ude42 )<\/p>\n<ul>\n<li><strong>Configuration du r\u00e9seau<\/strong><\/li>\n<\/ul>\n<p>On commence par activiter le forwarding entre vos cartes r\u00e9seaux (en l&rsquo;occurence etho et vmnet1 ici) :<\/p>\n<p>\/bin\/echo \u00ab\u00a01\u00a0\u00bb &gt; \/proc\/sys\/net\/ipv4\/ip_forward<\/p>\n<p>(n&rsquo;oublier pas de le mettre en dur dans votre \/etc\/sysctl.conf : <em>sysctl<\/em> net.ipv4.<em>ip_forward<\/em>=1)<\/p>\n<p>Puis le proxy ARP :<\/p>\n<p><code>echo \"net.ipv4.conf.vmnet1.proxy_arp=1\" &gt;&gt; \/etc\/sysctl.conf  &amp;&amp; sysctl -p<\/code><\/p>\n<p>Sur la machine virtuelle, on configure notre ipfailover et\/ou notre ip bloc RIPE :<br \/>\n\/etc\/network\/interfaces :<\/p>\n<p>iface eth0 inet static<br \/>\naddress 91.x.x.x<br \/>\nnetmask 255.255.255.240<br \/>\nbroadcast 91.x.x.x<br \/>\npost-up \/sbin\/route add default dev eth0<br \/>\nPour une IP bloc RIPE (voir les infos que vous donne OVH pour le netmask et le broadcast lorsque vous commander votre bloc ip ou utiliser l&rsquo;excellent \u00ab\u00a0<a title=\"sipcalc\" href=\"http:\/\/freshmeat.net\/projects\/sipcalc\/\" target=\"_blank\">sipcalc<\/a>\u00a0\u00bb pour calculer vos masques\/reseau \ud83d\ude00 )<\/p>\n<p>Pour un ipfailover (a adapter a votre ipfailover):<\/p>\n<p>auto eth0<br \/>\niface eth0 inet static<br \/>\naddress 87.98.99.90<br \/>\nnetmask 255.255.255.255<br \/>\npost-up \/sbin\/route add default dev eth0<\/p>\n<p>La commande importante \u00e9tant de lui sp\u00e9cifier eth0 comme passerelle par d\u00e9faut ( \/sbin\/route add default dev eth0).<\/p>\n<p>Sur votre d\u00e9di\u00e9 maintenant (le serveur VMware), il faut lui donner la route vers votre machine virtuelle :<\/p>\n<p>\/sbin\/ip route add 87.88.89.90 dev vmnet1<\/p>\n<p>Pour le rendre permanent, vous pouvez rajouter la commande dans \/etc\/init.d\/vmware apres le chargement des modules r\u00e9seaux ou vous basez sur la bidouille de Kro : <a title=\"forumsovh\" href=\"http:\/\/forum.ovh.com\/showthread.php?t=37645\" target=\"_blank\">http:\/\/forum.ovh.com\/showthread.php?t=37645<\/a><\/p>\n<p>(attention a adapter hein !!!).<\/p>\n<p><strong>EDIT : <\/strong>Pour l&rsquo;explication d\u00e9taill\u00e9e pour VMWare Server 2.0, le billet de Superkikim <a title=\"superkikim\" href=\"http:\/\/www.superkikim.com\/vmware\/ip-forwarding-pour-les-serveurs-ovh-avec-vmware-server-2\/\" target=\"_blank\">ICI<\/a> vous donnera toute satisafaction.<\/p>\n<p>Voila, vous pouvez d\u00e9sormais pinguer le net depuis votre machine virtuelle et inversement.<\/p>\n<p>(ne pas oublier le \/etc\/resolv.conf et tutti quanti&#8230;)<\/p>\n<p><strong>EDIT 2<\/strong> : J&rsquo;ai \u00e9cris un billet sur la fa\u00e7on d&rsquo;affecter une ip failover \u00e0 votre VM, c&rsquo;est <a title=\"ipfailover VM\" href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/12\/05\/ovh-ip-failover-dans-une-machine-virtuelle-vmware\/\" target=\"_blank\">ICI.<\/a><\/p>\n<ul>\n<li> <strong>Bidouille Guiguiabloc<\/strong><\/li>\n<\/ul>\n<p>Bon maintenant que tout cela tourne tr\u00e8s bien, le plus \u00ab\u00a0amusant\u00a0\u00bb serait de pouvoir basculer notre machine virtuelle sur notre deuxi\u00e8me serveur en cas de crash du premier&#8230;<\/p>\n<p>Je vous pr\u00e9viens tout de suite, cela ne sera pas transparent \ud83d\ude00 <a title=\"vmotion\" href=\"http:\/\/www.vmware.com\/fr\/products\/vi\/vc\/vmotion.html\" target=\"_blank\">VMotion<\/a> n&rsquo;existe pas sur VMware server \ud83d\ude42  \ud83d\ude42<\/p>\n<p><strong>Pr\u00e9-requis<\/strong> : la lecture du pr\u00e9c\u00e9dent billet :-p (encore), un drbd actif, un heartbeat actif et une ipfailover disponible.<\/p>\n<p>On se cr\u00e9er un volume DRBD (j&rsquo;esp\u00e8re que vous avez pr\u00e9vu un stock de partitions de libre lors de l&rsquo;installation de votre d\u00e9di\u00e9 OVH \ud83d\ude00  )<\/p>\n<p>en \u00e9ditant notre fichier \/etc\/drbd.conf et on ajoute :<\/p>\n<p>resource r1 {  <strong>(ou r0 si c&rsquo;est votre premiere ressource drbd)<\/strong><br \/>\nprotocol C;<br \/>\nhandlers {<br \/>\npri-on-incon-degr \u00ab\u00a0echo o &gt; \/proc\/sysrq-trigger ; halt -f\u00a0\u00bb;<br \/>\npri-lost-after-sb \u00ab\u00a0echo o &gt; \/proc\/sysrq-trigger ; halt -f\u00a0\u00bb;<br \/>\nlocal-io-error \u00ab\u00a0echo o &gt; \/proc\/sysrq-trigger ; halt -f\u00a0\u00bb;<\/p>\n<p>}<\/p>\n<p>startup {<br \/>\ndegr-wfc-timeout 120;    # 2 minutes.<br \/>\n}<\/p>\n<p>disk {<br \/>\non-io-error   detach;<\/p>\n<p>}<\/p>\n<p>net {<br \/>\nafter-sb-0pri disconnect;<br \/>\nafter-sb-1pri disconnect;<br \/>\nafter-sb-2pri disconnect;<br \/>\nrr-conflict disconnect;<br \/>\n}<\/p>\n<p>syncer {<br \/>\nrate 20M;<br \/>\nal-extents 257;<br \/>\n}<br \/>\non ns11111 {<br \/>\ndevice     \/dev\/drbd1;<br \/>\ndisk       \/dev\/sda11;<br \/>\naddress    192.168.20.20:7789; <strong>(attention a ne pas mettre le meme port de la ressource r0)<\/strong><br \/>\nmeta-disk  internal;<br \/>\n}<\/p>\n<p>on ns22222 {<br \/>\ndevice    \/dev\/drbd1;<br \/>\ndisk      \/dev\/sda11;<br \/>\naddress   192.168.20.30:7789;<br \/>\nmeta-disk internal;<br \/>\n}<br \/>\n}<\/p>\n<p>On se coltine les d\u00e9finitions Maitre\/Esclave (voir billet pr\u00e9c\u00e9dent), on formate \/dev\/drbd1.<\/p>\n<p>Sur le serveur ns11111, on monte \/dev\/drdb1 sur \/vmfs (par exemple) et on l&rsquo;ajoute au datastore :<\/p>\n<p><a title=\"datastore1\" href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore1.png\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore1.thumbnail.png\" alt=\"datastore1\" \/><\/a><\/p>\n<p><a title=\"datastore2\" href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore2.png\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore2.thumbnail.png\" alt=\"datastore2\" \/><\/a><\/p>\n<p>Vous devriez voir votre datastore apparaitre dans la liste :<\/p>\n<p><a title=\"datastore3\" href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore3.png\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore3.thumbnail.png\" alt=\"datastore3\" \/><\/a><\/p>\n<p>Cr\u00e9er une machine virtuelle dedans ou comme moi, copier le repertoire de votre Machine Virtuelle et utilisez le \u00ab\u00a0Add to Inventory\u00a0\u00bb :<\/p>\n<p><a title=\"datastore4\" href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore4.png\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore4.thumbnail.png\" alt=\"datastore4\" \/><\/a><\/p>\n<p>On stoppe VMware, on d\u00e9monte \/vmfs et on inverse les roles Maitre esclave :<\/p>\n<p>sur ns11111 :  drbdadm secondary r1<\/p>\n<p>sur ns22222: drbdadm primary r1<\/p>\n<p>on v\u00e9rifie que l&rsquo;on voit bien tout avec un cat \/proc\/drbd puis on monte \/dev\/drbd1 sur \/vmfs.<\/p>\n<p>Sur le VMware server de ns22222, on refait la meme manip, d\u00e9claration d&rsquo;un nouveau datastore et \u00ab\u00a0AddVirtual Machine to Inventory\u00a0\u00bb.<\/p>\n<ul>\n<li><strong>premier test<\/strong><\/li>\n<\/ul>\n<p>On se remet en environnement nomimal (vmware qui tourne sur ns11111, drbd1 en maitre et mount sur \/vmfs)<\/p>\n<p>On lance la VM sur ns11111.<\/p>\n<p>On v\u00e9rifie que tout marche bien et maintenant, simulons le crash manuellement.<\/p>\n<p>&#8211; on kill -9 tout les process VMware (oui c&rsquo;est crade, j&rsquo;adore \ud83d\ude00 )<\/p>\n<p>&#8211; on d\u00e9monte \/vmfs<\/p>\n<p>&#8211; on bascule les ressources DrBD<\/p>\n<p>&#8211; on lance vmware sur ns22222<\/p>\n<p>&#8211; on lance la machine virtuelle.<\/p>\n<p>Les soucis rencontr\u00e9s sont les suivants :<\/p>\n<p>L&rsquo;uid disque a changer et il faut cliquer sur \u00ab\u00a0i &lsquo;ve copied it\u00a0\u00bb<\/p>\n<p><a title=\"datastore5\" href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore5.png\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore5.thumbnail.png\" alt=\"datastore5\" \/><\/a><\/p>\n<p>Ca c&rsquo;est facile a r\u00e9gler, vous ajouter<\/p>\n<p><tt>uuid.action = \"keep\" <\/tt><\/p>\n<p>Dans le fichier *.vmx de votre machine virtuelle \ud83d\ude00<\/p>\n<p>Un r\u00e9pertoire \u00ab\u00a0lock\u00a0\u00bb verrouille le d\u00e9marrage.<\/p>\n<p><a title=\"datastore6\" href=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore6.png\"><img src=\"http:\/\/blog.guiguiabloc.fr\/wp-content\/datastore6.thumbnail.png\" alt=\"datastore6\" \/><\/a><\/p>\n<p>Il suffit de faire un petit rm -rf  Guiguiabloc.vmdk.lck pour que ca parte.<\/p>\n<p>Donc cela marche, mais il faut automatiser tout cela.<\/p>\n<p>Heureusement, il existe les commandes  vmrun.<\/p>\n<p>La syntaxe est la suivante :<\/p>\n<p>vmrun -T server -h https:\/\/localhost:8333\/sdk -u adminvmware -p motdepasse stop \u00ab\u00a0[VMFS-DRBD] Guiguiabloc\/Guiguiabloc.vmx\u00a0\u00bb<\/p>\n<p>Pour arreter la VM par exemple (je vous laisse consulter la doc VMRUN sur le site de VMware \ud83d\ude09 ).<\/p>\n<p>Vous avez donc tout les \u00e9l\u00e9ments pour inclure cela dans les scripts de Heartbeat (basez vous sur les exemples du pr\u00e9c\u00e9dent billet) :<\/p>\n<ol>\n<li>bascule du DRBD et montage sur \/vmfs<\/li>\n<li>D\u00e9marrage de VMware sur le nouveau Ma\u00eetre<\/li>\n<li>rm -r \/vmfs\/machinevirtuelle\/machinevirtuellevmdk.lck<\/li>\n<li>vmrun start<\/li>\n<\/ol>\n<p>Tout b\u00eate quoi \ud83d\ude00<\/p>\n<p>Apr\u00e8s plusieurs tests cela marche vraiment pas mal \ud83d\ude42 , bien \u00e9videmment le crash du maitre entra\u00eene le \u00ab\u00a0crash\u00a0\u00bb de la VM, donc elle peut repartir un peu en vrac.<\/p>\n<p>C&rsquo;est pour cela que je vous conseille de programmer des \u00ab\u00a0Snapshots\u00a0\u00bb des VM toutes les nuits (si vous ne connaissez pas, jetez vous dessus et mangez en !!! \ud83d\ude00 )<\/p>\n<p>Au pire vous pourrez repartir sur le snapshot de la veille.<\/p>\n<p>En tout cas, avec cela l&rsquo;indisponibilit\u00e9 est de quelques minutes&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Dans la continuit\u00e9 de la d\u00e9couverte des petites sp\u00e9cificit\u00e9s de la plateforme d&rsquo;h\u00e9bergement d\u00e9di\u00e9 d&rsquo;OVH, aujourd&rsquo;hui l&rsquo;installation de VMWare Server 2.0. Nous allons tout d&rsquo;abord voir son installation en tenant compte des particularit\u00e9s d&rsquo;OVH, l&rsquo;utilisation de l&rsquo;IpFailover et\/ou des blocs &hellip; <a href=\"http:\/\/blog.guiguiabloc.fr\/index.php\/2008\/10\/28\/vmware-server-20-sur-dedies-ovh-et-mise-en-oeuvre-dune-solution-de-haute-disponibilite-avec-datastore-en-drbd\/\">Read More <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[27,7],"tags":[71,73,61,72,67,60,12,70],"_links":{"self":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/159"}],"collection":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/comments?post=159"}],"version-history":[{"count":2,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/159\/revisions"}],"predecessor-version":[{"id":260,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/posts\/159\/revisions\/260"}],"wp:attachment":[{"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/media?parent=159"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/categories?post=159"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/blog.guiguiabloc.fr\/index.php\/wp-json\/wp\/v2\/tags?post=159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}