[{"data":1,"prerenderedAt":4752},["ShallowReactive",2],{"blog-\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr":3,"blog-\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr-surround":4691,"blog-\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr-certifications":4751},{"id":4,"title":5,"body":6,"categories":4680,"cover":4681,"cover_contain":487,"credly_badge_id":4680,"date":4682,"description":4683,"extension":4684,"meta":4685,"navigation":487,"path":4686,"related_certifications":4680,"seo":4687,"slug":4688,"stem":4689,"__hash__":4690},"blog\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr.md","Migration vers KVM avec WebVirtMgr",{"type":7,"value":8,"toc":4658},"minimark",[9,14,18,22,25,36,42,46,66,69,76,81,88,94,105,109,116,148,166,171,196,201,227,230,243,247,250,279,282,319,355,394,397,410,413,425,428,444,447,459,462,1376,1379,1392,1774,1777,1837,1840,1859,1862,1893,1896,1934,1937,1950,1953,1966,2013,2018,2021,2024,2048,2051,2055,2058,2082,2092,2097,2101,2104,2109,2149,2154,2300,2303,2308,2311,2316,2320,2323,2364,2367,2371,2374,2380,2385,2391,2396,2399,2436,2450,2455,2458,2463,2480,2484,2498,2503,2506,2511,2515,2537,2546,2927,2940,2943,2961,2967,2972,2983,3247,3254,3267,3270,3282,3401,3404,3430,3433,3458,3461,3500,3503,3515,3583,3593,3654,3657,3662,3665,3683,3686,3700,3704,3707,3712,3715,3720,3730,3753,3756,3779,3782,3839,3842,3847,3850,3855,3858,4083,4088,4096,4100,4103,4119,4123,4126,4131,4135,4141,4153,4156,4458,4469,4631,4644,4647,4651,4654],[10,11,13],"h2",{"id":12},"cas-dusage-concret","Cas d'usage concret",[15,16,17],"p",{},"Vous voulez piloter votre migration vers KVM depuis une interface web plutôt qu'en ligne de commande : voici comment procéder avec WebVirtMgr.",[10,19,21],{"id":20},"une-migration-tournée-vers-lopen-source","Une migration tournée vers l’open-source",[15,23,24],{},"Afin d’assurer la pérennité et la stabilité dans mon infrastructure j’ai choisi KVM : standard ouvert, inter-opérable, aux fonctionnalitées immenses. Plus précisément, ce nouveau projet s’inscrit dans ma volonté d’être au plus proche de mon système Linux. KVM est présent dans les plus grands projets de cloud computing : openstack, opennebula, ovirt ainsi que bien d’autres.",[15,26,27,28,35],{},"En plus de KVM, il existe aussi ce fabuleux système de conteneur appelé docker, qui se base lui aussi intégralement sur Linux. Ils représentent à tous les deux de merveilleuses possibilités d’apprentissage pour comprendre le cloud. La gestion de KVM se fera en grande partie avec une interface en HTML5. Pour docker il existe ",[29,30,34],"a",{"href":31,"rel":32},"http:\u002F\u002Fshipyard-project.com\u002F",[33],"nofollow","Shipyard"," que je n’évoquerai pas dans l’article.",[15,37,38],{},[39,40,41],"em",{},"L’ensemble de mon article se base principalement sur le wiki de KVM, de WebVirtMgr ainsi que de libvirt.",[10,43,45],{"id":44},"la-solution-saas-webvirtmgr","La solution SaaS : WebVirtMgr",[15,47,48,49,52,55,56,63],{},"WebVirtMgr se présente sous la forme d’une interface web développée en bootstrap. Elle utilise l’API libvirt pour la gestion du ou des hyperviseurs, des réseaux, des interfaces, des stockages et des VM. L’accès à la VM se fera quant à elle via une console en VNC (novnc) ou html5 « spice ». ",[50,51],"br",{},[39,53,54],{},"Plus d’informations sur :"," ",[29,57,60],{"href":58,"rel":59},"https:\u002F\u002Fgithub.com\u002Fretspen\u002Fwebvirtmgr\u002Fwiki\u002FScreenshots",[33],[39,61,62],{},"webvirtmgr",[39,64,65],{},".",[15,67,68],{},"Voici une illustration de mon infrastructure :",[15,70,71],{},[72,73],"img",{"alt":74,"src":75},"","\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F7196799410.png",[77,78,80],"h3",{"id":79},"webvirtmgr-et-lhyperviseur-kvmqemu","WebVirtMgr et l’hyperviseur KVM\u002FQEMU",[15,82,83,87],{},[84,85,86],"strong",{},"KVM"," (Kernel Virtual Machine) est un module du noyau Linux qui permet à un programme de l’espace utilisateur d’utiliser les fonctionnalités de virtualisation matérielle de différents processeurs. Aujourd’hui, il prend en charge les processeurs Intel récents et processeurs AMD (x86 et x86_64), PPC 440, PPC 970, S \u002F 390, ARM (Cortex A15), et MIPS32 (emulation processeur).",[15,89,90,93],{},[84,91,92],{},"QEMU"," peut faire usage de KVM lors de l’exécution d’une architecture cible qui est la même que l’architecture de l’hôte. Par exemple, lors de l’exécution qemu-system-x86 sur un processeur compatible x86, vous pouvez profiter de l’accélération de KVM – donnant vous bénéficiez pour votre accueil et votre système invité (émulation de machine virtuelle).",[15,95,96,55,99],{},[39,97,98],{},"Source :",[29,100,103],{"href":101,"rel":102},"http:\u002F\u002Fwiki.qemu.org\u002FKVM",[33],[39,104,101],{},[77,106,108],{"id":107},"pré-requis-avant-linstallation","Pré-requis avant l’installation",[110,111,112],"ul",{},[113,114,115],"li",{},"Le processeur doit être compatible avec les technologies de virtualisation  :",[117,118,122],"pre",{"className":119,"code":120,"language":121,"meta":74,"style":74},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","egrep '^flags.*(vmx|svm)' \u002Fproc\u002Fcpuinfo\n","bash",[123,124,125],"code",{"__ignoreMap":74},[126,127,130,134,138,142,145],"span",{"class":128,"line":129},"line",1,[126,131,133],{"class":132},"sBMFI","egrep",[126,135,137],{"class":136},"sMK4o"," '",[126,139,141],{"class":140},"sfazB","^flags.*(vmx|svm)",[126,143,144],{"class":136},"'",[126,146,147],{"class":140}," \u002Fproc\u002Fcpuinfo\n",[15,149,150,151,153,154,159,160,165],{},"Si un résultat apparaît alors votre processeur est opérationnel. Sinon c’est que votre processeur ne supporte pas la virtualisation.",[50,152],{},"\nPas de panique ! Il existe ",[29,155,158],{"href":156,"rel":157},"http:\u002F\u002Fvfamilyserver.org\u002Fblog\u002F2014\u002F11\u002Fwebvirtmgr-with-lxc-support\u002F",[33],"webvirtmgr avec lxc"," et docker bien-entendu : ",[29,161,164],{"href":162,"rel":163},"https:\u002F\u002Fwww.camillebaronnet.fr\u002Fblog\u002Ffr\u002Ftuto-decouverte-de-docker",[33],"découvrez-le"," !",[110,167,168],{},[113,169,170],{},"Installer les paquets suivants :",[117,172,174],{"className":119,"code":173,"language":121,"meta":74,"style":74},"apt-get install kvm libvirt-bin bridge-utils sasl2-bin\n",[123,175,176],{"__ignoreMap":74},[126,177,178,181,184,187,190,193],{"class":128,"line":129},[126,179,180],{"class":132},"apt-get",[126,182,183],{"class":140}," install",[126,185,186],{"class":140}," kvm",[126,188,189],{"class":140}," libvirt-bin",[126,191,192],{"class":140}," bridge-utils",[126,194,195],{"class":140}," sasl2-bin\n",[110,197,198],{},[113,199,200],{},"Télécharger le script de retspen et exécutez-le :",[117,202,204],{"className":119,"code":203,"language":121,"meta":74,"style":74},"wget http:\u002F\u002Fretspen.github.io\u002Flibvirt-bootstrap.sh \nsh libvirt-bootstrap.sh\n",[123,205,206,218],{"__ignoreMap":74},[126,207,208,211,214],{"class":128,"line":129},[126,209,210],{"class":132},"wget",[126,212,213],{"class":140}," http:\u002F\u002Fretspen.github.io\u002Flibvirt-bootstrap.sh",[126,215,217],{"class":216},"sTEyZ"," \n",[126,219,221,224],{"class":128,"line":220},2,[126,222,223],{"class":132},"sh",[126,225,226],{"class":140}," libvirt-bootstrap.sh\n",[15,228,229],{},"Pour information, à la fin du script vous deviez avoir les services suivants en fonctionnement :",[110,231,232,238],{},[113,233,234,237],{},[126,235,236],{}," ok"," Starting system message bus: dbus.",[113,239,240,242],{},[126,241,236],{}," Starting libvirt management daemon: libvirtd.",[10,244,246],{"id":245},"installation-de-webvirtmgr","Installation de WebVirtMgr",[15,248,249],{},"WebVirtMgr a besoin des paquets suivants pour fonctionner :",[117,251,253],{"className":119,"code":252,"language":121,"meta":74,"style":74},"apt-get install git python-pip python-libvirt python-libxml2 novnc supervisor\n",[123,254,255],{"__ignoreMap":74},[126,256,257,259,261,264,267,270,273,276],{"class":128,"line":129},[126,258,180],{"class":132},[126,260,183],{"class":140},[126,262,263],{"class":140}," git",[126,265,266],{"class":140}," python-pip",[126,268,269],{"class":140}," python-libvirt",[126,271,272],{"class":140}," python-libxml2",[126,274,275],{"class":140}," novnc",[126,277,278],{"class":140}," supervisor\n",[15,280,281],{},"Durant (la longue) installation, différentes questions feront leurs apparitions :",[117,283,285],{"className":119,"code":284,"language":121,"meta":74,"style":74},"faut-il installer une base de données pour NOVA : oui\n",[123,286,287],{"__ignoreMap":74},[126,288,289,292,295,298,301,304,307,310,313,316],{"class":128,"line":129},[126,290,291],{"class":132},"faut-il",[126,293,294],{"class":140}," installer",[126,296,297],{"class":140}," une",[126,299,300],{"class":140}," base",[126,302,303],{"class":140}," de",[126,305,306],{"class":140}," données",[126,308,309],{"class":140}," pour",[126,311,312],{"class":140}," NOVA",[126,314,315],{"class":140}," :",[126,317,318],{"class":140}," oui\n",[117,320,322],{"className":119,"code":321,"language":121,"meta":74,"style":74},"faut-il configurer la base de données de nova-common avec dbconfig-common : oui\n",[123,323,324],{"__ignoreMap":74},[126,325,326,328,331,334,336,338,340,342,345,348,351,353],{"class":128,"line":129},[126,327,291],{"class":132},[126,329,330],{"class":140}," configurer",[126,332,333],{"class":140}," la",[126,335,300],{"class":140},[126,337,303],{"class":140},[126,339,306],{"class":140},[126,341,303],{"class":140},[126,343,344],{"class":140}," nova-common",[126,346,347],{"class":140}," avec",[126,349,350],{"class":140}," dbconfig-common",[126,352,315],{"class":140},[126,354,318],{"class":140},[117,356,358],{"className":119,"code":357,"language":121,"meta":74,"style":74},"type de serveur de base de données à utiliser avec nova-common ! sqlite3\n",[123,359,360],{"__ignoreMap":74},[126,361,362,366,368,371,373,375,377,379,382,385,387,389,391],{"class":128,"line":129},[126,363,365],{"class":364},"s2Zo4","type",[126,367,303],{"class":140},[126,369,370],{"class":140}," serveur",[126,372,303],{"class":140},[126,374,300],{"class":140},[126,376,303],{"class":140},[126,378,306],{"class":140},[126,380,381],{"class":140}," à",[126,383,384],{"class":140}," utiliser",[126,386,347],{"class":140},[126,388,344],{"class":140},[126,390,165],{"class":140},[126,392,393],{"class":140}," sqlite3\n",[15,395,396],{},"La prochaine étape consiste à configurer python et l’environnement « django » :",[117,398,400],{"className":119,"code":399,"language":121,"meta":74,"style":74},"mkdir \u002Fvar\u002Fwww\n",[123,401,402],{"__ignoreMap":74},[126,403,404,407],{"class":128,"line":129},[126,405,406],{"class":132},"mkdir",[126,408,409],{"class":140}," \u002Fvar\u002Fwww\n",[15,411,412],{},"Déplacer vous dans le répertoire www :",[117,414,416],{"className":119,"code":415,"language":121,"meta":74,"style":74},"cd \u002Fvar\u002Fwww\n",[123,417,418],{"__ignoreMap":74},[126,419,420,423],{"class":128,"line":129},[126,421,422],{"class":364},"cd",[126,424,409],{"class":140},[15,426,427],{},"Télécharger le git de WebVirtMgr :",[117,429,431],{"className":119,"code":430,"language":121,"meta":74,"style":74},"git clone git:\u002F\u002Fgithub.com\u002Fretspen\u002Fwebvirtmgr.git\n",[123,432,433],{"__ignoreMap":74},[126,434,435,438,441],{"class":128,"line":129},[126,436,437],{"class":132},"git",[126,439,440],{"class":140}," clone",[126,442,443],{"class":140}," git:\u002F\u002Fgithub.com\u002Fretspen\u002Fwebvirtmgr.git\n",[15,445,446],{},"Rendez-vous dans le répertoire suivant :",[117,448,450],{"className":119,"code":449,"language":121,"meta":74,"style":74},"cd webvirtmgr\n",[123,451,452],{"__ignoreMap":74},[126,453,454,456],{"class":128,"line":129},[126,455,422],{"class":364},[126,457,458],{"class":140}," webvirtmgr\n",[15,460,461],{},"L’outil pip est utilisé car il installera rapidement et téléchargera automatiquement les dépendances nécessaires :",[117,463,465],{"className":119,"code":464,"language":121,"meta":74,"style":74},"sudo pip install -r requirements.txt\n\nDownloading\u002Funpacking django==1.5.5 (from -r requirements.txt (line 1))\n  Downloading Django-1.5.5.tar.gz (8.1MB): 8.1MB downloaded\n  Running setup.py (path:\u002Ftmp\u002Fpip_build_root\u002Fdjango\u002Fsetup.py) egg_info for package django\n\n    warning: no previously-included files matching '__pycache__' found under directory '*'\n    warning: no previously-included files matching '*.py[co]' found under directory '*'\nDownloading\u002Funpacking gunicorn==18.0 (from -r requirements.txt (line 2))\n  Downloading gunicorn-18.0.tar.gz (366kB): 366kB downloaded\n  Running setup.py (path:\u002Ftmp\u002Fpip_build_root\u002Fgunicorn\u002Fsetup.py) egg_info for package gunicorn\n\n    warning: no previously-included files matching '*.pyc' found under directory 'docs'\n    warning: no previously-included files matching '*.pyo' found under directory 'docs'\n    warning: no previously-included files matching '*.pyc' found under directory 'tests'\n    warning: no previously-included files matching '*.pyo' found under directory 'tests'\n    warning: no previously-included files matching '*.pyc' found under directory 'examples'\n    warning: no previously-included files matching '*.pyo' found under directory 'examples'\nDownloading\u002Funpacking lockfile>=0.9 (from -r requirements.txt (line 5))\n  Downloading lockfile-0.10.2-py2-none-any.whl\nInstalling collected packages: django, gunicorn, lockfile\n  Running setup.py install for django\n    changing mode of build\u002Fscripts-2.7\u002Fdjango-admin.py from 644 to 755\n\n    warning: no previously-included files matching '__pycache__' found under directory '*'\n    warning: no previously-included files matching '*.py[co]' found under directory '*'\n    changing mode of \u002Fusr\u002Flocal\u002Fbin\u002Fdjango-admin.py to 755\n  Running setup.py install for gunicorn\n\n    warning: no previously-included files matching '*.pyc' found under directory 'docs'\n    warning: no previously-included files matching '*.pyo' found under directory 'docs'\n    warning: no previously-included files matching '*.pyc' found under directory 'tests'\n    warning: no previously-included files matching '*.pyo' found under directory 'tests'\n    warning: no previously-included files matching '*.pyc' found under directory 'examples'\n    warning: no previously-included files matching '*.pyo' found under directory 'examples'\n    Installing gunicorn_paster script to \u002Fusr\u002Flocal\u002Fbin\n    Installing gunicorn script to \u002Fusr\u002Flocal\u002Fbin\n    Installing gunicorn_django script to \u002Fusr\u002Flocal\u002Fbin\n  Found existing installation: lockfile 0.8\n    Uninstalling lockfile:\n      Successfully uninstalled lockfile\nSuccessfully installed django gunicorn lockfile\nCleaning up...\n",[123,466,467,483,489,520,532,551,556,598,630,654,665,680,685,718,750,782,813,845,876,909,917,938,953,980,985,1016,1047,1063,1077,1082,1113,1144,1175,1206,1237,1268,1285,1299,1313,1331,1340,1351,1367],{"__ignoreMap":74},[126,468,469,472,475,477,480],{"class":128,"line":129},[126,470,471],{"class":132},"sudo",[126,473,474],{"class":140}," pip",[126,476,183],{"class":140},[126,478,479],{"class":140}," -r",[126,481,482],{"class":140}," requirements.txt\n",[126,484,485],{"class":128,"line":220},[126,486,488],{"emptyLinePlaceholder":487},true,"\n",[126,490,492,495,498,502,505,508,511,514,517],{"class":128,"line":491},3,[126,493,494],{"class":132},"Downloading\u002Funpacking",[126,496,497],{"class":140}," django==",[126,499,501],{"class":500},"sbssI","1.5.5",[126,503,504],{"class":216}," (from ",[126,506,507],{"class":140},"-r",[126,509,510],{"class":140}," requirements.txt",[126,512,513],{"class":216}," (line ",[126,515,516],{"class":500},"1",[126,518,519],{"class":216},"))\n",[126,521,523,526,529],{"class":128,"line":522},4,[126,524,525],{"class":132},"  Downloading",[126,527,528],{"class":140}," Django-1.5.5.tar.gz",[126,530,531],{"class":216}," (8.1MB): 8.1MB downloaded\n",[126,533,535,538,541,544,548],{"class":128,"line":534},5,[126,536,537],{"class":132},"  Running",[126,539,540],{"class":140}," setup.py",[126,542,543],{"class":216}," (path:\u002Ftmp\u002Fpip_build_root\u002Fdjango\u002Fsetup.py) egg_info ",[126,545,547],{"class":546},"s7zQu","for",[126,549,550],{"class":216}," package django\n",[126,552,554],{"class":128,"line":553},6,[126,555,488],{"emptyLinePlaceholder":487},[126,557,559,562,565,568,571,574,576,579,581,584,587,590,592,595],{"class":128,"line":558},7,[126,560,561],{"class":132},"    warning:",[126,563,564],{"class":140}," no",[126,566,567],{"class":140}," previously-included",[126,569,570],{"class":140}," files",[126,572,573],{"class":140}," matching",[126,575,137],{"class":136},[126,577,578],{"class":140},"__pycache__",[126,580,144],{"class":136},[126,582,583],{"class":140}," found",[126,585,586],{"class":140}," under",[126,588,589],{"class":140}," directory",[126,591,137],{"class":136},[126,593,594],{"class":140},"*",[126,596,597],{"class":136},"'\n",[126,599,601,603,605,607,609,611,613,616,618,620,622,624,626,628],{"class":128,"line":600},8,[126,602,561],{"class":132},[126,604,564],{"class":140},[126,606,567],{"class":140},[126,608,570],{"class":140},[126,610,573],{"class":140},[126,612,137],{"class":136},[126,614,615],{"class":140},"*.py[co]",[126,617,144],{"class":136},[126,619,583],{"class":140},[126,621,586],{"class":140},[126,623,589],{"class":140},[126,625,137],{"class":136},[126,627,594],{"class":140},[126,629,597],{"class":136},[126,631,633,635,638,641,643,645,647,649,652],{"class":128,"line":632},9,[126,634,494],{"class":132},[126,636,637],{"class":140}," gunicorn==",[126,639,640],{"class":500},"18.0",[126,642,504],{"class":216},[126,644,507],{"class":140},[126,646,510],{"class":140},[126,648,513],{"class":216},[126,650,651],{"class":500},"2",[126,653,519],{"class":216},[126,655,657,659,662],{"class":128,"line":656},10,[126,658,525],{"class":132},[126,660,661],{"class":140}," gunicorn-18.0.tar.gz",[126,663,664],{"class":216}," (366kB): 366kB downloaded\n",[126,666,668,670,672,675,677],{"class":128,"line":667},11,[126,669,537],{"class":132},[126,671,540],{"class":140},[126,673,674],{"class":216}," (path:\u002Ftmp\u002Fpip_build_root\u002Fgunicorn\u002Fsetup.py) egg_info ",[126,676,547],{"class":546},[126,678,679],{"class":216}," package gunicorn\n",[126,681,683],{"class":128,"line":682},12,[126,684,488],{"emptyLinePlaceholder":487},[126,686,688,690,692,694,696,698,700,703,705,707,709,711,713,716],{"class":128,"line":687},13,[126,689,561],{"class":132},[126,691,564],{"class":140},[126,693,567],{"class":140},[126,695,570],{"class":140},[126,697,573],{"class":140},[126,699,137],{"class":136},[126,701,702],{"class":140},"*.pyc",[126,704,144],{"class":136},[126,706,583],{"class":140},[126,708,586],{"class":140},[126,710,589],{"class":140},[126,712,137],{"class":136},[126,714,715],{"class":140},"docs",[126,717,597],{"class":136},[126,719,721,723,725,727,729,731,733,736,738,740,742,744,746,748],{"class":128,"line":720},14,[126,722,561],{"class":132},[126,724,564],{"class":140},[126,726,567],{"class":140},[126,728,570],{"class":140},[126,730,573],{"class":140},[126,732,137],{"class":136},[126,734,735],{"class":140},"*.pyo",[126,737,144],{"class":136},[126,739,583],{"class":140},[126,741,586],{"class":140},[126,743,589],{"class":140},[126,745,137],{"class":136},[126,747,715],{"class":140},[126,749,597],{"class":136},[126,751,753,755,757,759,761,763,765,767,769,771,773,775,777,780],{"class":128,"line":752},15,[126,754,561],{"class":132},[126,756,564],{"class":140},[126,758,567],{"class":140},[126,760,570],{"class":140},[126,762,573],{"class":140},[126,764,137],{"class":136},[126,766,702],{"class":140},[126,768,144],{"class":136},[126,770,583],{"class":140},[126,772,586],{"class":140},[126,774,589],{"class":140},[126,776,137],{"class":136},[126,778,779],{"class":140},"tests",[126,781,597],{"class":136},[126,783,785,787,789,791,793,795,797,799,801,803,805,807,809,811],{"class":128,"line":784},16,[126,786,561],{"class":132},[126,788,564],{"class":140},[126,790,567],{"class":140},[126,792,570],{"class":140},[126,794,573],{"class":140},[126,796,137],{"class":136},[126,798,735],{"class":140},[126,800,144],{"class":136},[126,802,583],{"class":140},[126,804,586],{"class":140},[126,806,589],{"class":140},[126,808,137],{"class":136},[126,810,779],{"class":140},[126,812,597],{"class":136},[126,814,816,818,820,822,824,826,828,830,832,834,836,838,840,843],{"class":128,"line":815},17,[126,817,561],{"class":132},[126,819,564],{"class":140},[126,821,567],{"class":140},[126,823,570],{"class":140},[126,825,573],{"class":140},[126,827,137],{"class":136},[126,829,702],{"class":140},[126,831,144],{"class":136},[126,833,583],{"class":140},[126,835,586],{"class":140},[126,837,589],{"class":140},[126,839,137],{"class":136},[126,841,842],{"class":140},"examples",[126,844,597],{"class":136},[126,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874],{"class":128,"line":847},18,[126,849,561],{"class":132},[126,851,564],{"class":140},[126,853,567],{"class":140},[126,855,570],{"class":140},[126,857,573],{"class":140},[126,859,137],{"class":136},[126,861,735],{"class":140},[126,863,144],{"class":136},[126,865,583],{"class":140},[126,867,586],{"class":140},[126,869,589],{"class":140},[126,871,137],{"class":136},[126,873,842],{"class":140},[126,875,597],{"class":136},[126,877,879,881,884,887,890,893,896,898,900,902,904,907],{"class":128,"line":878},19,[126,880,494],{"class":132},[126,882,883],{"class":140}," lockfil",[126,885,886],{"class":216},"e",[126,888,889],{"class":136},">",[126,891,892],{"class":140},"=",[126,894,895],{"class":500},"0.9",[126,897,504],{"class":216},[126,899,507],{"class":140},[126,901,510],{"class":140},[126,903,513],{"class":216},[126,905,906],{"class":500},"5",[126,908,519],{"class":216},[126,910,912,914],{"class":128,"line":911},20,[126,913,525],{"class":132},[126,915,916],{"class":140}," lockfile-0.10.2-py2-none-any.whl\n",[126,918,920,923,926,929,932,935],{"class":128,"line":919},21,[126,921,922],{"class":132},"Installing",[126,924,925],{"class":140}," collected",[126,927,928],{"class":140}," packages:",[126,930,931],{"class":140}," django,",[126,933,934],{"class":140}," gunicorn,",[126,936,937],{"class":140}," lockfile\n",[126,939,941,943,945,947,950],{"class":128,"line":940},22,[126,942,537],{"class":132},[126,944,540],{"class":140},[126,946,183],{"class":140},[126,948,949],{"class":140}," for",[126,951,952],{"class":140}," django\n",[126,954,956,959,962,965,968,971,974,977],{"class":128,"line":955},23,[126,957,958],{"class":132},"    changing",[126,960,961],{"class":140}," mode",[126,963,964],{"class":140}," of",[126,966,967],{"class":140}," build\u002Fscripts-2.7\u002Fdjango-admin.py",[126,969,970],{"class":140}," from",[126,972,973],{"class":500}," 644",[126,975,976],{"class":140}," to",[126,978,979],{"class":500}," 755\n",[126,981,983],{"class":128,"line":982},24,[126,984,488],{"emptyLinePlaceholder":487},[126,986,988,990,992,994,996,998,1000,1002,1004,1006,1008,1010,1012,1014],{"class":128,"line":987},25,[126,989,561],{"class":132},[126,991,564],{"class":140},[126,993,567],{"class":140},[126,995,570],{"class":140},[126,997,573],{"class":140},[126,999,137],{"class":136},[126,1001,578],{"class":140},[126,1003,144],{"class":136},[126,1005,583],{"class":140},[126,1007,586],{"class":140},[126,1009,589],{"class":140},[126,1011,137],{"class":136},[126,1013,594],{"class":140},[126,1015,597],{"class":136},[126,1017,1019,1021,1023,1025,1027,1029,1031,1033,1035,1037,1039,1041,1043,1045],{"class":128,"line":1018},26,[126,1020,561],{"class":132},[126,1022,564],{"class":140},[126,1024,567],{"class":140},[126,1026,570],{"class":140},[126,1028,573],{"class":140},[126,1030,137],{"class":136},[126,1032,615],{"class":140},[126,1034,144],{"class":136},[126,1036,583],{"class":140},[126,1038,586],{"class":140},[126,1040,589],{"class":140},[126,1042,137],{"class":136},[126,1044,594],{"class":140},[126,1046,597],{"class":136},[126,1048,1050,1052,1054,1056,1059,1061],{"class":128,"line":1049},27,[126,1051,958],{"class":132},[126,1053,961],{"class":140},[126,1055,964],{"class":140},[126,1057,1058],{"class":140}," \u002Fusr\u002Flocal\u002Fbin\u002Fdjango-admin.py",[126,1060,976],{"class":140},[126,1062,979],{"class":500},[126,1064,1066,1068,1070,1072,1074],{"class":128,"line":1065},28,[126,1067,537],{"class":132},[126,1069,540],{"class":140},[126,1071,183],{"class":140},[126,1073,949],{"class":140},[126,1075,1076],{"class":140}," gunicorn\n",[126,1078,1080],{"class":128,"line":1079},29,[126,1081,488],{"emptyLinePlaceholder":487},[126,1083,1085,1087,1089,1091,1093,1095,1097,1099,1101,1103,1105,1107,1109,1111],{"class":128,"line":1084},30,[126,1086,561],{"class":132},[126,1088,564],{"class":140},[126,1090,567],{"class":140},[126,1092,570],{"class":140},[126,1094,573],{"class":140},[126,1096,137],{"class":136},[126,1098,702],{"class":140},[126,1100,144],{"class":136},[126,1102,583],{"class":140},[126,1104,586],{"class":140},[126,1106,589],{"class":140},[126,1108,137],{"class":136},[126,1110,715],{"class":140},[126,1112,597],{"class":136},[126,1114,1116,1118,1120,1122,1124,1126,1128,1130,1132,1134,1136,1138,1140,1142],{"class":128,"line":1115},31,[126,1117,561],{"class":132},[126,1119,564],{"class":140},[126,1121,567],{"class":140},[126,1123,570],{"class":140},[126,1125,573],{"class":140},[126,1127,137],{"class":136},[126,1129,735],{"class":140},[126,1131,144],{"class":136},[126,1133,583],{"class":140},[126,1135,586],{"class":140},[126,1137,589],{"class":140},[126,1139,137],{"class":136},[126,1141,715],{"class":140},[126,1143,597],{"class":136},[126,1145,1147,1149,1151,1153,1155,1157,1159,1161,1163,1165,1167,1169,1171,1173],{"class":128,"line":1146},32,[126,1148,561],{"class":132},[126,1150,564],{"class":140},[126,1152,567],{"class":140},[126,1154,570],{"class":140},[126,1156,573],{"class":140},[126,1158,137],{"class":136},[126,1160,702],{"class":140},[126,1162,144],{"class":136},[126,1164,583],{"class":140},[126,1166,586],{"class":140},[126,1168,589],{"class":140},[126,1170,137],{"class":136},[126,1172,779],{"class":140},[126,1174,597],{"class":136},[126,1176,1178,1180,1182,1184,1186,1188,1190,1192,1194,1196,1198,1200,1202,1204],{"class":128,"line":1177},33,[126,1179,561],{"class":132},[126,1181,564],{"class":140},[126,1183,567],{"class":140},[126,1185,570],{"class":140},[126,1187,573],{"class":140},[126,1189,137],{"class":136},[126,1191,735],{"class":140},[126,1193,144],{"class":136},[126,1195,583],{"class":140},[126,1197,586],{"class":140},[126,1199,589],{"class":140},[126,1201,137],{"class":136},[126,1203,779],{"class":140},[126,1205,597],{"class":136},[126,1207,1209,1211,1213,1215,1217,1219,1221,1223,1225,1227,1229,1231,1233,1235],{"class":128,"line":1208},34,[126,1210,561],{"class":132},[126,1212,564],{"class":140},[126,1214,567],{"class":140},[126,1216,570],{"class":140},[126,1218,573],{"class":140},[126,1220,137],{"class":136},[126,1222,702],{"class":140},[126,1224,144],{"class":136},[126,1226,583],{"class":140},[126,1228,586],{"class":140},[126,1230,589],{"class":140},[126,1232,137],{"class":136},[126,1234,842],{"class":140},[126,1236,597],{"class":136},[126,1238,1240,1242,1244,1246,1248,1250,1252,1254,1256,1258,1260,1262,1264,1266],{"class":128,"line":1239},35,[126,1241,561],{"class":132},[126,1243,564],{"class":140},[126,1245,567],{"class":140},[126,1247,570],{"class":140},[126,1249,573],{"class":140},[126,1251,137],{"class":136},[126,1253,735],{"class":140},[126,1255,144],{"class":136},[126,1257,583],{"class":140},[126,1259,586],{"class":140},[126,1261,589],{"class":140},[126,1263,137],{"class":136},[126,1265,842],{"class":140},[126,1267,597],{"class":136},[126,1269,1271,1274,1277,1280,1282],{"class":128,"line":1270},36,[126,1272,1273],{"class":132},"    Installing",[126,1275,1276],{"class":140}," gunicorn_paster",[126,1278,1279],{"class":140}," script",[126,1281,976],{"class":140},[126,1283,1284],{"class":140}," \u002Fusr\u002Flocal\u002Fbin\n",[126,1286,1288,1290,1293,1295,1297],{"class":128,"line":1287},37,[126,1289,1273],{"class":132},[126,1291,1292],{"class":140}," gunicorn",[126,1294,1279],{"class":140},[126,1296,976],{"class":140},[126,1298,1284],{"class":140},[126,1300,1302,1304,1307,1309,1311],{"class":128,"line":1301},38,[126,1303,1273],{"class":132},[126,1305,1306],{"class":140}," gunicorn_django",[126,1308,1279],{"class":140},[126,1310,976],{"class":140},[126,1312,1284],{"class":140},[126,1314,1316,1319,1322,1325,1328],{"class":128,"line":1315},39,[126,1317,1318],{"class":132},"  Found",[126,1320,1321],{"class":140}," existing",[126,1323,1324],{"class":140}," installation:",[126,1326,1327],{"class":140}," lockfile",[126,1329,1330],{"class":500}," 0.8\n",[126,1332,1334,1337],{"class":128,"line":1333},40,[126,1335,1336],{"class":132},"    Uninstalling",[126,1338,1339],{"class":140}," lockfile:\n",[126,1341,1343,1346,1349],{"class":128,"line":1342},41,[126,1344,1345],{"class":132},"      Successfully",[126,1347,1348],{"class":140}," uninstalled",[126,1350,937],{"class":140},[126,1352,1354,1357,1360,1363,1365],{"class":128,"line":1353},42,[126,1355,1356],{"class":132},"Successfully",[126,1358,1359],{"class":140}," installed",[126,1361,1362],{"class":140}," django",[126,1364,1292],{"class":140},[126,1366,937],{"class":140},[126,1368,1370,1373],{"class":128,"line":1369},43,[126,1371,1372],{"class":132},"Cleaning",[126,1374,1375],{"class":140}," up...\n",[15,1377,1378],{},"Lancer la création de la base de données via django :",[117,1380,1382],{"className":119,"code":1381,"language":121,"meta":74,"style":74},".\u002Fmanage.py syncdb\n",[123,1383,1384],{"__ignoreMap":74},[126,1385,1386,1389],{"class":128,"line":129},[126,1387,1388],{"class":132},".\u002Fmanage.py",[126,1390,1391],{"class":140}," syncdb\n",[117,1393,1395],{"className":119,"code":1394,"language":121,"meta":74,"style":74},"WARNING:root:No local_settings file found.\nCreating tables ...\nCreating table auth_permission\nCreating table auth_group_permissions\nCreating table auth_group\nCreating table auth_user_groups\nCreating table auth_user_user_permissions\nCreating table auth_user\nCreating table django_content_type\nCreating table django_session\nCreating table django_site\nCreating table servers_compute\nCreating table instance_instance\nCreating table create_flavor\n\nYou just installed Django's auth system, which means you don't have any superusers defined.\nWould you like to create one now? (yes\u002Fno): yes\nPlease enter either \"yes\" or \"no\": yes\nPlease enter either \"yes\" or \"no\": yes\nUsername (leave blank to use 'root'): kassianoff\nEmail address: postmaster@kassianoff.fr\nPassword:\nPassword (again):\nSuperuser created successfully.\nInstalling custom SQL ...\nInstalling indexes ...\nInstalled 6 object(s) from 1 fixture(s)\n",[123,1396,1397,1411,1422,1432,1441,1450,1459,1468,1477,1486,1495,1504,1513,1522,1531,1535,1570,1595,1631,1657,1683,1694,1699,1707,1718,1730,1739],{"__ignoreMap":74},[126,1398,1399,1402,1405,1408],{"class":128,"line":129},[126,1400,1401],{"class":132},"WARNING:root:No",[126,1403,1404],{"class":140}," local_settings",[126,1406,1407],{"class":140}," file",[126,1409,1410],{"class":140}," found.\n",[126,1412,1413,1416,1419],{"class":128,"line":220},[126,1414,1415],{"class":132},"Creating",[126,1417,1418],{"class":140}," tables",[126,1420,1421],{"class":140}," ...\n",[126,1423,1424,1426,1429],{"class":128,"line":491},[126,1425,1415],{"class":132},[126,1427,1428],{"class":140}," table",[126,1430,1431],{"class":140}," auth_permission\n",[126,1433,1434,1436,1438],{"class":128,"line":522},[126,1435,1415],{"class":132},[126,1437,1428],{"class":140},[126,1439,1440],{"class":140}," auth_group_permissions\n",[126,1442,1443,1445,1447],{"class":128,"line":534},[126,1444,1415],{"class":132},[126,1446,1428],{"class":140},[126,1448,1449],{"class":140}," auth_group\n",[126,1451,1452,1454,1456],{"class":128,"line":553},[126,1453,1415],{"class":132},[126,1455,1428],{"class":140},[126,1457,1458],{"class":140}," auth_user_groups\n",[126,1460,1461,1463,1465],{"class":128,"line":558},[126,1462,1415],{"class":132},[126,1464,1428],{"class":140},[126,1466,1467],{"class":140}," auth_user_user_permissions\n",[126,1469,1470,1472,1474],{"class":128,"line":600},[126,1471,1415],{"class":132},[126,1473,1428],{"class":140},[126,1475,1476],{"class":140}," auth_user\n",[126,1478,1479,1481,1483],{"class":128,"line":632},[126,1480,1415],{"class":132},[126,1482,1428],{"class":140},[126,1484,1485],{"class":140}," django_content_type\n",[126,1487,1488,1490,1492],{"class":128,"line":656},[126,1489,1415],{"class":132},[126,1491,1428],{"class":140},[126,1493,1494],{"class":140}," django_session\n",[126,1496,1497,1499,1501],{"class":128,"line":667},[126,1498,1415],{"class":132},[126,1500,1428],{"class":140},[126,1502,1503],{"class":140}," django_site\n",[126,1505,1506,1508,1510],{"class":128,"line":682},[126,1507,1415],{"class":132},[126,1509,1428],{"class":140},[126,1511,1512],{"class":140}," servers_compute\n",[126,1514,1515,1517,1519],{"class":128,"line":687},[126,1516,1415],{"class":132},[126,1518,1428],{"class":140},[126,1520,1521],{"class":140}," instance_instance\n",[126,1523,1524,1526,1528],{"class":128,"line":720},[126,1525,1415],{"class":132},[126,1527,1428],{"class":140},[126,1529,1530],{"class":140}," create_flavor\n",[126,1532,1533],{"class":128,"line":752},[126,1534,488],{"emptyLinePlaceholder":487},[126,1536,1537,1540,1543,1545,1548,1550,1553,1555,1558,1561,1564,1567],{"class":128,"line":784},[126,1538,1539],{"class":132},"You",[126,1541,1542],{"class":140}," just",[126,1544,1359],{"class":140},[126,1546,1547],{"class":140}," Django",[126,1549,144],{"class":136},[126,1551,1552],{"class":140},"s auth system, which means you don",[126,1554,144],{"class":136},[126,1556,1557],{"class":140},"t",[126,1559,1560],{"class":140}," have",[126,1562,1563],{"class":140}," any",[126,1565,1566],{"class":140}," superusers",[126,1568,1569],{"class":140}," defined.\n",[126,1571,1572,1575,1578,1581,1583,1586,1589,1592],{"class":128,"line":815},[126,1573,1574],{"class":132},"Would",[126,1576,1577],{"class":140}," you",[126,1579,1580],{"class":140}," like",[126,1582,976],{"class":140},[126,1584,1585],{"class":140}," create",[126,1587,1588],{"class":140}," one",[126,1590,1591],{"class":140}," now?",[126,1593,1594],{"class":216}," (yes\u002Fno): yes\n",[126,1596,1597,1600,1603,1606,1609,1612,1615,1618,1620,1623,1625,1628],{"class":128,"line":847},[126,1598,1599],{"class":132},"Please",[126,1601,1602],{"class":140}," enter",[126,1604,1605],{"class":140}," either",[126,1607,1608],{"class":136}," \"",[126,1610,1611],{"class":140},"yes",[126,1613,1614],{"class":136},"\"",[126,1616,1617],{"class":140}," or",[126,1619,1608],{"class":136},[126,1621,1622],{"class":140},"no",[126,1624,1614],{"class":136},[126,1626,1627],{"class":140},":",[126,1629,1630],{"class":140}," yes\n",[126,1632,1633,1635,1637,1639,1641,1643,1645,1647,1649,1651,1653,1655],{"class":128,"line":878},[126,1634,1599],{"class":132},[126,1636,1602],{"class":140},[126,1638,1605],{"class":140},[126,1640,1608],{"class":136},[126,1642,1611],{"class":140},[126,1644,1614],{"class":136},[126,1646,1617],{"class":140},[126,1648,1608],{"class":136},[126,1650,1622],{"class":140},[126,1652,1614],{"class":136},[126,1654,1627],{"class":140},[126,1656,1630],{"class":140},[126,1658,1659,1662,1665,1668,1670,1673,1675,1678,1680],{"class":128,"line":911},[126,1660,1661],{"class":132},"Username",[126,1663,1664],{"class":216}," (leave ",[126,1666,1667],{"class":140},"blank",[126,1669,976],{"class":140},[126,1671,1672],{"class":140}," use",[126,1674,137],{"class":136},[126,1676,1677],{"class":140},"root",[126,1679,144],{"class":136},[126,1681,1682],{"class":216},"): kassianoff\n",[126,1684,1685,1688,1691],{"class":128,"line":919},[126,1686,1687],{"class":132},"Email",[126,1689,1690],{"class":140}," address:",[126,1692,1693],{"class":140}," postmaster@kassianoff.fr\n",[126,1695,1696],{"class":128,"line":940},[126,1697,1698],{"class":132},"Password:\n",[126,1700,1701,1704],{"class":128,"line":955},[126,1702,1703],{"class":132},"Password",[126,1705,1706],{"class":216}," (again):\n",[126,1708,1709,1712,1715],{"class":128,"line":982},[126,1710,1711],{"class":132},"Superuser",[126,1713,1714],{"class":140}," created",[126,1716,1717],{"class":140}," successfully.\n",[126,1719,1720,1722,1725,1728],{"class":128,"line":987},[126,1721,922],{"class":132},[126,1723,1724],{"class":140}," custom",[126,1726,1727],{"class":140}," SQL",[126,1729,1421],{"class":140},[126,1731,1732,1734,1737],{"class":128,"line":1018},[126,1733,922],{"class":132},[126,1735,1736],{"class":140}," indexes",[126,1738,1421],{"class":140},[126,1740,1741,1744,1747,1750,1753,1756,1759,1761,1764,1767,1769,1771],{"class":128,"line":1049},[126,1742,1743],{"class":132},"Installed",[126,1745,1746],{"class":500}," 6",[126,1748,1749],{"class":140}," object",[126,1751,1752],{"class":136},"(",[126,1754,1755],{"class":132},"s",[126,1757,1758],{"class":136},")",[126,1760,970],{"class":140},[126,1762,1763],{"class":500}," 1",[126,1765,1766],{"class":140}," fixture",[126,1768,1752],{"class":136},[126,1770,1755],{"class":132},[126,1772,1773],{"class":136},")\n",[15,1775,1776],{},"On recommence avec cette fois-ci collectstatic :",[117,1778,1780],{"className":119,"code":1779,"language":121,"meta":74,"style":74},".\u002Fmanage.py collectstatic\n\nType 'yes' to continue, or 'no' to cancel: yes\n75 static files copied\n",[123,1781,1782,1789,1793,1824],{"__ignoreMap":74},[126,1783,1784,1786],{"class":128,"line":129},[126,1785,1388],{"class":132},[126,1787,1788],{"class":140}," collectstatic\n",[126,1790,1791],{"class":128,"line":220},[126,1792,488],{"emptyLinePlaceholder":487},[126,1794,1795,1798,1800,1802,1804,1806,1809,1811,1813,1815,1817,1819,1822],{"class":128,"line":491},[126,1796,1797],{"class":132},"Type",[126,1799,137],{"class":136},[126,1801,1611],{"class":140},[126,1803,144],{"class":136},[126,1805,976],{"class":140},[126,1807,1808],{"class":140}," continue,",[126,1810,1617],{"class":140},[126,1812,137],{"class":136},[126,1814,1622],{"class":140},[126,1816,144],{"class":136},[126,1818,976],{"class":140},[126,1820,1821],{"class":140}," cancel:",[126,1823,1630],{"class":140},[126,1825,1826,1829,1832,1834],{"class":128,"line":522},[126,1827,1828],{"class":132},"75",[126,1830,1831],{"class":140}," static",[126,1833,570],{"class":140},[126,1835,1836],{"class":140}," copied\n",[15,1838,1839],{},"Donner les droits au serveur web dans le répertoire de WebVirtMgr :",[117,1841,1843],{"className":119,"code":1842,"language":121,"meta":74,"style":74},"chown -R www-data:www-data \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002F\n",[123,1844,1845],{"__ignoreMap":74},[126,1846,1847,1850,1853,1856],{"class":128,"line":129},[126,1848,1849],{"class":132},"chown",[126,1851,1852],{"class":140}," -R",[126,1854,1855],{"class":140}," www-data:www-data",[126,1857,1858],{"class":140}," \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002F\n",[15,1860,1861],{},"Modification du script et du lancement de VNC :",[117,1863,1865],{"className":119,"code":1864,"language":121,"meta":74,"style":74},"sudo service novnc stop\n[ ok ] Stopping OpenStack NoVNC proxy: nova-novncproxy.\n",[123,1866,1867,1879],{"__ignoreMap":74},[126,1868,1869,1871,1874,1876],{"class":128,"line":129},[126,1870,471],{"class":132},[126,1872,1873],{"class":140}," service",[126,1875,275],{"class":140},[126,1877,1878],{"class":140}," stop\n",[126,1880,1881,1884,1887,1890],{"class":128,"line":220},[126,1882,1883],{"class":136},"[",[126,1885,1886],{"class":216}," ok ",[126,1888,1889],{"class":136},"]",[126,1891,1892],{"class":216}," Stopping OpenStack NoVNC proxy: nova-novncproxy.\n",[15,1894,1895],{},"Suppression du script au lancement de notre distribution debian :",[117,1897,1899],{"className":119,"code":1898,"language":121,"meta":74,"style":74},"update-rc.d -f novnc remove\nupdate-rc.d: using dependency based boot sequencing\n",[123,1900,1901,1914],{"__ignoreMap":74},[126,1902,1903,1906,1909,1911],{"class":128,"line":129},[126,1904,1905],{"class":132},"update-rc.d",[126,1907,1908],{"class":140}," -f",[126,1910,275],{"class":140},[126,1912,1913],{"class":140}," remove\n",[126,1915,1916,1919,1922,1925,1928,1931],{"class":128,"line":220},[126,1917,1918],{"class":132},"update-rc.d:",[126,1920,1921],{"class":140}," using",[126,1923,1924],{"class":140}," dependency",[126,1926,1927],{"class":140}," based",[126,1929,1930],{"class":140}," boot",[126,1932,1933],{"class":140}," sequencing\n",[15,1935,1936],{},"Suppression du script dans init.d :",[117,1938,1940],{"className":119,"code":1939,"language":121,"meta":74,"style":74},"rm \u002Fetc\u002Finit.d\u002Fnovnc\n",[123,1941,1942],{"__ignoreMap":74},[126,1943,1944,1947],{"class":128,"line":129},[126,1945,1946],{"class":132},"rm",[126,1948,1949],{"class":140}," \u002Fetc\u002Finit.d\u002Fnovnc\n",[15,1951,1952],{},"Renseigner des paramètres de lancement dans le fichier webvirtmgr.conf :",[117,1954,1956],{"className":119,"code":1955,"language":121,"meta":74,"style":74},"nano \u002Fetc\u002Fsupervisor\u002Fconf.d\u002Fwebvirtmgr.conf\n",[123,1957,1958],{"__ignoreMap":74},[126,1959,1960,1963],{"class":128,"line":129},[126,1961,1962],{"class":132},"nano",[126,1964,1965],{"class":140}," \u002Fetc\u002Fsupervisor\u002Fconf.d\u002Fwebvirtmgr.conf\n",[117,1967,1971],{"className":1968,"code":1969,"language":1970,"meta":74,"style":74},"language-ini shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[program:webvirtmgr]\ncommand=\u002Fusr\u002Fbin\u002Fpython \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002Fmanage.py run_gunicorn -c \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002Fconf\u002Fgunicorn.conf.py\ndirectory=\u002Fvar\u002Fwww\u002Fwebvirtmgr\nautostart=true\nautorestart=true\nstdout_logfile=\u002Fvar\u002Flog\u002Fsupervisor\u002Fwebvirtmgr.log\nredirect_stderr=true\nuser=www-data\n","ini",[123,1972,1973,1978,1983,1988,1993,1998,2003,2008],{"__ignoreMap":74},[126,1974,1975],{"class":128,"line":129},[126,1976,1977],{},"[program:webvirtmgr]\n",[126,1979,1980],{"class":128,"line":220},[126,1981,1982],{},"command=\u002Fusr\u002Fbin\u002Fpython \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002Fmanage.py run_gunicorn -c \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002Fconf\u002Fgunicorn.conf.py\n",[126,1984,1985],{"class":128,"line":491},[126,1986,1987],{},"directory=\u002Fvar\u002Fwww\u002Fwebvirtmgr\n",[126,1989,1990],{"class":128,"line":522},[126,1991,1992],{},"autostart=true\n",[126,1994,1995],{"class":128,"line":534},[126,1996,1997],{},"autorestart=true\n",[126,1999,2000],{"class":128,"line":553},[126,2001,2002],{},"stdout_logfile=\u002Fvar\u002Flog\u002Fsupervisor\u002Fwebvirtmgr.log\n",[126,2004,2005],{"class":128,"line":558},[126,2006,2007],{},"redirect_stderr=true\n",[126,2009,2010],{"class":128,"line":600},[126,2011,2012],{},"user=www-data\n",[15,2014,2015],{},[126,2016,2017],{},"program:webvirtmgr-console",[15,2019,2020],{},"command=\u002Fusr\u002Fbin\u002Fpython \u002Fvar\u002Fwww\u002Fwebvirtmgr\u002Fconsole\u002Fwebvirtmgr-console directory=\u002Fvar\u002Fwww\u002Fwebvirtmgr autostart=true autorestart=true stdout_logfile=\u002Fvar\u002Flog\u002Fsupervisor\u002Fwebvirtmgr-console.log redirect_stderr=true user=www-data",[15,2022,2023],{},"On arrête le service supervisor et on le démarre :",[117,2025,2027],{"className":119,"code":2026,"language":121,"meta":74,"style":74},"service supervisor stop\nservice supervisor start\n",[123,2028,2029,2039],{"__ignoreMap":74},[126,2030,2031,2034,2037],{"class":128,"line":129},[126,2032,2033],{"class":132},"service",[126,2035,2036],{"class":140}," supervisor",[126,2038,1878],{"class":140},[126,2040,2041,2043,2045],{"class":128,"line":220},[126,2042,2033],{"class":132},[126,2044,2036],{"class":140},[126,2046,2047],{"class":140}," start\n",[15,2049,2050],{},"L’installation est terminée et nous pouvons désormais accéder à l’interface WebVirtMgr via le port 8000 de notre machine.",[77,2052,2054],{"id":2053},"le-tunneling-ssh-sous-linux","Le tunneling SSH sous linux",[15,2056,2057],{},"La méthode du tunnelling SSH permet la redirection des ports 8000 et 6080 (novnc) vers notre poste client (sécurisé) :",[117,2059,2061],{"className":119,"code":2060,"language":121,"meta":74,"style":74},"ssh root@webvirtmgr.kassianoff.fr:port -L localhost:8000:localhost:8000 -L localhost:6080:localhost:6080\n",[123,2062,2063],{"__ignoreMap":74},[126,2064,2065,2068,2071,2074,2077,2079],{"class":128,"line":129},[126,2066,2067],{"class":132},"ssh",[126,2069,2070],{"class":140}," root@webvirtmgr.kassianoff.fr:port",[126,2072,2073],{"class":140}," -L",[126,2075,2076],{"class":140}," localhost:8000:localhost:8000",[126,2078,2073],{"class":140},[126,2080,2081],{"class":140}," localhost:6080:localhost:6080\n",[15,2083,2084,2085,2088,2089,315],{},"Rendez-vous sur l’url : ",[39,2086,2087],{},"localhost:8000"," et rentrer vos identifiants de connexion configurés lors du ",[39,2090,2091],{},".\u002Fmanage.py syncdb",[15,2093,2094],{},[72,2095],{"alt":74,"src":2096},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002Ff76441425c.png",[10,2098,2100],{"id":2099},"connexion-entre-webvirtmgr-et-kvmqemu","Connexion entre WebVirtMgr et KVM\u002FQEMU",[15,2102,2103],{},"Plusieurs étapes seront nécessaire avant de pouvoir configurer l’infrastructure.",[110,2105,2106],{},[113,2107,2108],{},"Créer vos identifiants de connexion TCP comme ceci :",[117,2110,2112],{"className":119,"code":2111,"language":121,"meta":74,"style":74},"saslpasswd2 -a libvirt kassianoff.fr\nPassword: \nAgain (for verification):\n",[123,2113,2114,2128,2135],{"__ignoreMap":74},[126,2115,2116,2119,2122,2125],{"class":128,"line":129},[126,2117,2118],{"class":132},"saslpasswd2",[126,2120,2121],{"class":140}," -a",[126,2123,2124],{"class":140}," libvirt",[126,2126,2127],{"class":140}," kassianoff.fr\n",[126,2129,2130,2133],{"class":128,"line":220},[126,2131,2132],{"class":132},"Password:",[126,2134,217],{"class":216},[126,2136,2137,2140,2143,2146],{"class":128,"line":491},[126,2138,2139],{"class":132},"Again",[126,2141,2142],{"class":216}," (for ",[126,2144,2145],{"class":140},"verification",[126,2147,2148],{"class":216},"):\n",[110,2150,2151],{},[113,2152,2153],{},"Déclarer votre hyperviseur dans virsh :",[117,2155,2157],{"className":119,"code":2156,"language":121,"meta":74,"style":74},"virsh -c qemu+tcp:\u002F\u002Flocalhost\u002Fsystem nodeinfo\nPlease enter your authentication name: kassianoff.fr\nPlease enter your password:\nCPU model:           x86_64\nCPU(s):              8\nCPU frequency:       1632 MHz\nCPU socket(s):       1\nCore(s) per socket:  4\nThread(s) per core:  2\nNUMA cell(s):        1\nMemory size:         32917020 KiB\n",[123,2158,2159,2173,2190,2201,2212,2220,2233,2251,2259,2267,2286],{"__ignoreMap":74},[126,2160,2161,2164,2167,2170],{"class":128,"line":129},[126,2162,2163],{"class":132},"virsh",[126,2165,2166],{"class":140}," -c",[126,2168,2169],{"class":140}," qemu+tcp:\u002F\u002Flocalhost\u002Fsystem",[126,2171,2172],{"class":140}," nodeinfo\n",[126,2174,2175,2177,2179,2182,2185,2188],{"class":128,"line":220},[126,2176,1599],{"class":132},[126,2178,1602],{"class":140},[126,2180,2181],{"class":140}," your",[126,2183,2184],{"class":140}," authentication",[126,2186,2187],{"class":140}," name:",[126,2189,2127],{"class":140},[126,2191,2192,2194,2196,2198],{"class":128,"line":491},[126,2193,1599],{"class":132},[126,2195,1602],{"class":140},[126,2197,2181],{"class":140},[126,2199,2200],{"class":140}," password:\n",[126,2202,2203,2206,2209],{"class":128,"line":522},[126,2204,2205],{"class":132},"CPU",[126,2207,2208],{"class":140}," model:",[126,2210,2211],{"class":140},"           x86_64\n",[126,2213,2214,2217],{"class":128,"line":534},[126,2215,2216],{"class":132},"CPU(s",[126,2218,2219],{"class":216},"):              8\n",[126,2221,2222,2224,2227,2230],{"class":128,"line":553},[126,2223,2205],{"class":132},[126,2225,2226],{"class":140}," frequency:",[126,2228,2229],{"class":500},"       1632",[126,2231,2232],{"class":140}," MHz\n",[126,2234,2235,2237,2240,2242,2244,2246,2248],{"class":128,"line":558},[126,2236,2205],{"class":132},[126,2238,2239],{"class":140}," socket",[126,2241,1752],{"class":136},[126,2243,1755],{"class":132},[126,2245,1758],{"class":136},[126,2247,1627],{"class":140},[126,2249,2250],{"class":500},"       1\n",[126,2252,2253,2256],{"class":128,"line":600},[126,2254,2255],{"class":132},"Core(s",[126,2257,2258],{"class":216},") per socket:  4\n",[126,2260,2261,2264],{"class":128,"line":632},[126,2262,2263],{"class":132},"Thread(s",[126,2265,2266],{"class":216},") per core:  2\n",[126,2268,2269,2272,2275,2277,2279,2281,2283],{"class":128,"line":656},[126,2270,2271],{"class":132},"NUMA",[126,2273,2274],{"class":140}," cell",[126,2276,1752],{"class":136},[126,2278,1755],{"class":132},[126,2280,1758],{"class":136},[126,2282,1627],{"class":140},[126,2284,2285],{"class":500},"        1\n",[126,2287,2288,2291,2294,2297],{"class":128,"line":667},[126,2289,2290],{"class":132},"Memory",[126,2292,2293],{"class":140}," size:",[126,2295,2296],{"class":500},"         32917020",[126,2298,2299],{"class":140}," KiB\n",[15,2301,2302],{},"Désormais ajoutons notre connexion TCP en cliquant sur le bouton : « Add connection »",[15,2304,2305],{},[72,2306],{"alt":74,"src":2307},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002Fd64b1c7e35.png",[15,2309,2310],{},"Le résultat est le suivant :",[15,2312,2313],{},[72,2314],{"alt":74,"src":2315},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F79d54c54e5.png",[10,2317,2319],{"id":2318},"prise-en-main-de-la-solution-webvirtmgr","Prise en main de la solution WebVirtMgr",[15,2321,2322],{},"Il me semble important de comprendre les différentes rubriques qui composent WebirtMgr :",[110,2324,2325,2331,2337,2343,2349,2358],{},[113,2326,2327,2330],{},[84,2328,2329],{},"Instances"," : Gestion et création de machines virtuelles, ce sont nos instances.",[113,2332,2333,2336],{},[84,2334,2335],{},"Storages"," : Gestion et création des différents pools de stockage (repertoire, iso, nfs, lvm…).",[113,2338,2339,2342],{},[84,2340,2341],{},"Networks"," : Gestion et création des réseaux (bridge, route, nat…).",[113,2344,2345,2348],{},[84,2346,2347],{},"Interfaces"," : Gestion et création des différentes interfaces que peuvent utiliser les réseaux.",[113,2350,2351,2354,2355],{},[84,2352,2353],{},"Secrets"," : ",[39,2356,2357],{},"Je n’ai pas eu d’informations la concernant, si un visiteur a des informations je suis preneur !",[113,2359,2360,2363],{},[84,2361,2362],{},"Overview"," : Superviser l’ensemble de notre infrastructure : ressouces utilisées (cpu, mémoire etc…).",[15,2365,2366],{},"J’ai utilisé toutes les rubriques (excepté Secrets), commencez par suivre les étapes ci-dessous pouvoir créer une instance.",[10,2368,2370],{"id":2369},"création-des-pools-de-stockage","Création des pools de stockage",[15,2372,2373],{},"Avant de démarrer la création d’une machine, nous aurons besoin de pools de stockage, cliquez sur Storages puis sur New storages la configuration est la suivante :",[15,2375,2376,2377],{},"Création d’un repertoire DIR avec le chemin ",[84,2378,2379],{},"\u002Fvar\u002Flib\u002Flibvirt\u002Fimages.",[15,2381,2382],{},[72,2383],{"alt":74,"src":2384},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F0c23aa2dad.png",[15,2386,2387,2388,315],{},"Création du répertoire ISO avec le chemin ",[84,2389,2390],{},"\u002Fvar\u002Fwww\u002Fwebvirtmgr\u002Fimages",[15,2392,2393],{},[72,2394],{"alt":74,"src":2395},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002Fd31f3a144e.png",[15,2397,2398],{},"Sur un OVH dédié, utilisez NFS-common, et créez un répertoire nfs pour le connecter au NFS backup storage",[117,2400,2402],{"className":119,"code":2401,"language":121,"meta":74,"style":74},"apt-get install nfs-common\nmkdir \u002Fvar\u002Flib\u002Flibvirt\u002Fnfs\u002F\nmount -t nfs ftpback-rbxX-XXX.ovh.net:\u002Fexport\u002Fftpbackup\u002FnsXXXXXXX.ovh.net \u002Fvar\u002Flib\u002Flibvirt\u002Fnfs\u002F\n",[123,2403,2404,2413,2420],{"__ignoreMap":74},[126,2405,2406,2408,2410],{"class":128,"line":129},[126,2407,180],{"class":132},[126,2409,183],{"class":140},[126,2411,2412],{"class":140}," nfs-common\n",[126,2414,2415,2417],{"class":128,"line":220},[126,2416,406],{"class":132},[126,2418,2419],{"class":140}," \u002Fvar\u002Flib\u002Flibvirt\u002Fnfs\u002F\n",[126,2421,2422,2425,2428,2431,2434],{"class":128,"line":491},[126,2423,2424],{"class":132},"mount",[126,2426,2427],{"class":140}," -t",[126,2429,2430],{"class":140}," nfs",[126,2432,2433],{"class":140}," ftpback-rbxX-XXX.ovh.net:\u002Fexport\u002Fftpbackup\u002FnsXXXXXXX.ovh.net",[126,2435,2419],{"class":140},[15,2437,2438,2439,2441,2442,2445,2446,2449],{},"Dans la création du poo » il existe le mode NETFS compatible avec NFS, cependant le format n’est pas pris en compte.",[50,2440],{},"\nLa solution consiste à utiliser le mode ",[84,2443,2444],{},"dir"," en spécifiant le répertoire ",[84,2447,2448],{},"nfs"," précédemment monté :",[15,2451,2452],{},[72,2453],{"alt":74,"src":2454},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002Fd1567a947b.png",[15,2456,2457],{},"Vérifiez vos différents pools de storage dit : nfs, iso, images :",[15,2459,2460],{},[72,2461],{"alt":74,"src":2462},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002Feb75b293e4.png",[15,2464,2465,2466,2469,2470,2473,2474,65,2477,2479],{},"Je ne vais pas évoquer la création d’une machine dans le menu ",[84,2467,2468],{},"images"," ni même l’ajout d’un fichier ",[84,2471,2472],{},"ISO"," via ",[84,2475,2476],{},"WebVirtMgr",[50,2478],{},"\nLa raison est simple, j’utilise le terminal pour ces tâches là. Concentrons-nous sur les réseaux avant de créer notre VM.",[10,2481,2483],{"id":2482},"la-rubriques-networks-dans-webvirtmgr","La rubriques networks dans WebVirtMgr",[15,2485,2486,2487,2490,2491,2494,2495,315],{},"L’ajout de réseaux se fait via l’onglet ",[84,2488,2489],{},"networks",". Ajoutez deux réseaux bridge ",[84,2492,2493],{},"lbr0"," et ",[84,2496,2497],{},"lbr1",[15,2499,2500],{},[72,2501],{"alt":74,"src":2502},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F2188d9b488.png",[15,2504,2505],{},"Reproduisez la manipulation ci-dessus pour créer la seconde interface bridge, ce qui donnera :",[15,2507,2508],{},[72,2509],{"alt":74,"src":2510},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F1c71e3dae7.png",[10,2512,2514],{"id":2513},"interfaces-et-réseaux-bridgés-sous-linux","Interfaces et réseaux bridgés sous linux",[15,2516,2517,2518,2521,2522,2525,2526,2529,2530,2529,2532,65,2534,2536],{},"La rubrique interfaces affiche le fichier de configuration ",[84,2519,2520],{},"\u002Fetc\u002Fnetworks\u002Finterface"," on y retrouvera ",[84,2523,2524],{},"lo",",",[84,2527,2528],{},"br0",", ",[84,2531,2493],{},[84,2533,2497],{},[50,2535],{},"\nMais avant de configuer nos interfaces bridge, voyons la configuration actuelle :",[117,2538,2540],{"className":119,"code":2539,"language":121,"meta":74,"style":74},"ifconfig\n",[123,2541,2542],{"__ignoreMap":74},[126,2543,2544],{"class":128,"line":129},[126,2545,2539],{"class":132},[117,2547,2549],{"className":119,"code":2548,"language":121,"meta":74,"style":74},"eth0      Link encap:Ethernet  HWaddr 08:60:6e:e5:bd:47\n          inet adr:XX.XXX.XXX.XXXX  Bcast:XX.XXX.XXX.XXX  Masque:255.255.255.0\n          adr inet6: XXXX:XXXX:X:XXXX::\u002Fxx Scope:Global\n          adr inet6: XXXX::XXX:XXXX:XXXX:XXXX\u002Fxx Scope:Lien\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          Packets reçus:2243 erreurs:0 :0 overruns:0 frame:0\n          TX packets:1618 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 lg file transmission:1000\n          Octets reçus:490019 (490.0 KB) Octets transmis:243883 (243.8 KB)\n\nlo        Link encap:Boucle locale\n          inet adr:127.0.0.1  Masque:255.0.0.0\n          adr inet6: ::1\u002F128 Scope:Hôte\n          UP LOOPBACK RUNNING  MTU:65536  Metric:1\n          Packets reçus:140 erreurs:0 :0 overruns:0 frame:0\n          TX packets:140 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 lg file transmission:0\n          Octets reçus:22966 (22.9 KB) Octets transmis:22966 (22.9 KB)\n\nvirbr0    Link encap:Ethernet  HWaddr 22:e2:0b:e7:c2:d1\n          inet adr:192.168.122.1  Bcast:192.168.122.255  Masque:255.255.255.0\n          UP BROADCAST MULTICAST  MTU:1500  Metric:1\n          Packets reçus:0 erreurs:0 :0 overruns:0 frame:0\n          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 lg file transmission:0\n          Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)\n",[123,2550,2551,2568,2582,2596,2608,2628,2648,2667,2680,2705,2709,2722,2732,2744,2758,2773,2788,2799,2821,2825,2840,2852,2864,2879,2894,2904],{"__ignoreMap":74},[126,2552,2553,2556,2559,2562,2565],{"class":128,"line":129},[126,2554,2555],{"class":132},"eth0",[126,2557,2558],{"class":140},"      Link",[126,2560,2561],{"class":140}," encap:Ethernet",[126,2563,2564],{"class":140},"  HWaddr",[126,2566,2567],{"class":140}," 08:60:6e:e5:bd:47\n",[126,2569,2570,2573,2576,2579],{"class":128,"line":220},[126,2571,2572],{"class":132},"          inet",[126,2574,2575],{"class":140}," adr:XX.XXX.XXX.XXXX",[126,2577,2578],{"class":140},"  Bcast:XX.XXX.XXX.XXX",[126,2580,2581],{"class":140},"  Masque:255.255.255.0\n",[126,2583,2584,2587,2590,2593],{"class":128,"line":491},[126,2585,2586],{"class":132},"          adr",[126,2588,2589],{"class":140}," inet6:",[126,2591,2592],{"class":140}," XXXX:XXXX:X:XXXX::\u002Fxx",[126,2594,2595],{"class":140}," Scope:Global\n",[126,2597,2598,2600,2602,2605],{"class":128,"line":522},[126,2599,2586],{"class":132},[126,2601,2589],{"class":140},[126,2603,2604],{"class":140}," XXXX::XXX:XXXX:XXXX:XXXX\u002Fxx",[126,2606,2607],{"class":140}," Scope:Lien\n",[126,2609,2610,2613,2616,2619,2622,2625],{"class":128,"line":534},[126,2611,2612],{"class":132},"          UP",[126,2614,2615],{"class":140}," BROADCAST",[126,2617,2618],{"class":140}," RUNNING",[126,2620,2621],{"class":140}," MULTICAST",[126,2623,2624],{"class":140},"  MTU:1500",[126,2626,2627],{"class":140},"  Metric:1\n",[126,2629,2630,2633,2636,2639,2642,2645],{"class":128,"line":553},[126,2631,2632],{"class":132},"          Packets",[126,2634,2635],{"class":140}," reçus:2243",[126,2637,2638],{"class":140}," erreurs:0",[126,2640,2641],{"class":140}," :0",[126,2643,2644],{"class":140}," overruns:0",[126,2646,2647],{"class":140}," frame:0\n",[126,2649,2650,2653,2656,2659,2662,2664],{"class":128,"line":558},[126,2651,2652],{"class":132},"          TX",[126,2654,2655],{"class":140}," packets:1618",[126,2657,2658],{"class":140}," errors:0",[126,2660,2661],{"class":140}," dropped:0",[126,2663,2644],{"class":140},[126,2665,2666],{"class":140}," carrier:0\n",[126,2668,2669,2672,2675,2677],{"class":128,"line":600},[126,2670,2671],{"class":132},"          collisions:0",[126,2673,2674],{"class":140}," lg",[126,2676,1407],{"class":140},[126,2678,2679],{"class":140}," transmission:1000\n",[126,2681,2682,2685,2688,2691,2694,2697,2700,2703],{"class":128,"line":632},[126,2683,2684],{"class":132},"          Octets",[126,2686,2687],{"class":140}," reçus:490019",[126,2689,2690],{"class":216}," (490.0 ",[126,2692,2693],{"class":140},"KB",[126,2695,2696],{"class":216},") Octets transmis:243883 (",[126,2698,2699],{"class":132},"243.8",[126,2701,2702],{"class":140}," KB",[126,2704,1773],{"class":216},[126,2706,2707],{"class":128,"line":656},[126,2708,488],{"emptyLinePlaceholder":487},[126,2710,2711,2713,2716,2719],{"class":128,"line":667},[126,2712,2524],{"class":132},[126,2714,2715],{"class":140},"        Link",[126,2717,2718],{"class":140}," encap:Boucle",[126,2720,2721],{"class":140}," locale\n",[126,2723,2724,2726,2729],{"class":128,"line":682},[126,2725,2572],{"class":132},[126,2727,2728],{"class":140}," adr:127.0.0.1",[126,2730,2731],{"class":140},"  Masque:255.0.0.0\n",[126,2733,2734,2736,2738,2741],{"class":128,"line":687},[126,2735,2586],{"class":132},[126,2737,2589],{"class":140},[126,2739,2740],{"class":140}," ::1\u002F128",[126,2742,2743],{"class":140}," Scope:Hôte\n",[126,2745,2746,2748,2751,2753,2756],{"class":128,"line":720},[126,2747,2612],{"class":132},[126,2749,2750],{"class":140}," LOOPBACK",[126,2752,2618],{"class":140},[126,2754,2755],{"class":140},"  MTU:65536",[126,2757,2627],{"class":140},[126,2759,2760,2762,2765,2767,2769,2771],{"class":128,"line":752},[126,2761,2632],{"class":132},[126,2763,2764],{"class":140}," reçus:140",[126,2766,2638],{"class":140},[126,2768,2641],{"class":140},[126,2770,2644],{"class":140},[126,2772,2647],{"class":140},[126,2774,2775,2777,2780,2782,2784,2786],{"class":128,"line":784},[126,2776,2652],{"class":132},[126,2778,2779],{"class":140}," packets:140",[126,2781,2658],{"class":140},[126,2783,2661],{"class":140},[126,2785,2644],{"class":140},[126,2787,2666],{"class":140},[126,2789,2790,2792,2794,2796],{"class":128,"line":815},[126,2791,2671],{"class":132},[126,2793,2674],{"class":140},[126,2795,1407],{"class":140},[126,2797,2798],{"class":140}," transmission:0\n",[126,2800,2801,2803,2806,2809,2811,2814,2817,2819],{"class":128,"line":847},[126,2802,2684],{"class":132},[126,2804,2805],{"class":140}," reçus:22966",[126,2807,2808],{"class":216}," (22.9 ",[126,2810,2693],{"class":140},[126,2812,2813],{"class":216},") Octets transmis:22966 (",[126,2815,2816],{"class":132},"22.9",[126,2818,2702],{"class":140},[126,2820,1773],{"class":216},[126,2822,2823],{"class":128,"line":878},[126,2824,488],{"emptyLinePlaceholder":487},[126,2826,2827,2830,2833,2835,2837],{"class":128,"line":911},[126,2828,2829],{"class":132},"virbr0",[126,2831,2832],{"class":140},"    Link",[126,2834,2561],{"class":140},[126,2836,2564],{"class":140},[126,2838,2839],{"class":140}," 22:e2:0b:e7:c2:d1\n",[126,2841,2842,2844,2847,2850],{"class":128,"line":919},[126,2843,2572],{"class":132},[126,2845,2846],{"class":140}," adr:192.168.122.1",[126,2848,2849],{"class":140},"  Bcast:192.168.122.255",[126,2851,2581],{"class":140},[126,2853,2854,2856,2858,2860,2862],{"class":128,"line":940},[126,2855,2612],{"class":132},[126,2857,2615],{"class":140},[126,2859,2621],{"class":140},[126,2861,2624],{"class":140},[126,2863,2627],{"class":140},[126,2865,2866,2868,2871,2873,2875,2877],{"class":128,"line":955},[126,2867,2632],{"class":132},[126,2869,2870],{"class":140}," reçus:0",[126,2872,2638],{"class":140},[126,2874,2641],{"class":140},[126,2876,2644],{"class":140},[126,2878,2647],{"class":140},[126,2880,2881,2883,2886,2888,2890,2892],{"class":128,"line":982},[126,2882,2652],{"class":132},[126,2884,2885],{"class":140}," packets:0",[126,2887,2658],{"class":140},[126,2889,2661],{"class":140},[126,2891,2644],{"class":140},[126,2893,2666],{"class":140},[126,2895,2896,2898,2900,2902],{"class":128,"line":987},[126,2897,2671],{"class":132},[126,2899,2674],{"class":140},[126,2901,1407],{"class":140},[126,2903,2798],{"class":140},[126,2905,2906,2908,2910,2913,2916,2919,2922,2925],{"class":128,"line":1018},[126,2907,2684],{"class":132},[126,2909,2870],{"class":140},[126,2911,2912],{"class":216}," (0.0 ",[126,2914,2915],{"class":140},"B",[126,2917,2918],{"class":216},") Octets transmis:0 (",[126,2920,2921],{"class":132},"0.0",[126,2923,2924],{"class":140}," B",[126,2926,1773],{"class":216},[15,2928,2929,2930,2932,2933,2936,2937,2939],{},"On remarque la configuration suivante :  l’interface ",[84,2931,2555],{}," qui représente l’adresse IP publique du serveur, l’interface ",[84,2934,2935],{},"loopback"," (logique) ainsi que l’interface ",[84,2938,2829],{}," qui est créée automatiquement en mode NAT.",[15,2941,2942],{},"Dans la mise en place de mon infrastructure, le réseau à une place importante. J’ai donc créé trois interfaces :",[110,2944,2945,2950,2955],{},[113,2946,2947,2949],{},[84,2948,2528],{},"  = bridgé vers l’interface principale eth0 de mon hôte debian (utilisé pour mes IPO failover OVH).",[113,2951,2952,2954],{},[84,2953,2497],{}," = une interface bridge utilisée par VyOS pour mes services web.",[113,2956,2957,2960],{},[84,2958,2959],{},"lbr2"," = une interface bridge  utiliser par VyOS pour mes dockers et VM avec possibilité d’inter-connexions docker\u002Fkvm.",[15,2962,2963,2964],{},"Mon routeur\u002Fpare-feu manage mes différentes interfaces br0, lbr1, lbr2. ",[39,2965,2966],{},"Voici un schéma d’illustration :",[15,2968,2969],{},[72,2970],{"alt":74,"src":2971},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002Faaf58cc1f0.png",[15,2973,2974,2975,2977,2978,1758],{},"Commençons par configurer l’interface ",[84,2976,2528],{}," : (W",[29,2979,2982],{"href":2980,"rel":2981},"https:\u002F\u002Fwiki.debian.org\u002FBridgeNetworkConnections",[33],"iki de debian",[117,2984,2986],{"className":119,"code":2985,"language":121,"meta":74,"style":74},"auto lo\niface lo inet loopback\n\nauto eth0\niface eth0 inet manual\n\nauto br0\niface br0 inet static\n        address XX.XXX.XXX.XXX\n        netmask 255.255.255.0\n        network XX.XXX.XXX.0\n        broadcast XX.XXX.XXX.255\n        gateway XX.XXX.XXX.254\n        bridge_ports eth0\n        bridge_stp off\n        bridge_fd 0\n        bridge_maxwait 0\n\niface eth0 inet6 static\n        address XXXX:XXXX:X:XXXX::\n        netmask 64\n        post-up \u002Fsbin\u002Fip -family inet6 route add XXXX:XXXX:X:XXXX:XX:XX:XX:XX dev eth0\n        post-up \u002Fsbin\u002Fip -family inet6 route add default via XXXX:XXXX:X:XXXX:XX:XX:XX:XX\n        pre-down \u002Fsbin\u002Fip -family inet6 route del default via XXXX:XXXX:X:XXXX:XX:XX:XX:XX\n        pre-down \u002Fsbin\u002Fip -family inet6 route del XXXX:XXXX:X:XXXX:XX:XX:XX:XX dev eth0\n",[123,2987,2988,2996,3010,3014,3021,3033,3037,3044,3056,3064,3072,3080,3088,3096,3103,3111,3119,3126,3130,3141,3148,3155,3182,3205,3227],{"__ignoreMap":74},[126,2989,2990,2993],{"class":128,"line":129},[126,2991,2992],{"class":132},"auto",[126,2994,2995],{"class":140}," lo\n",[126,2997,2998,3001,3004,3007],{"class":128,"line":220},[126,2999,3000],{"class":132},"iface",[126,3002,3003],{"class":140}," lo",[126,3005,3006],{"class":140}," inet",[126,3008,3009],{"class":140}," loopback\n",[126,3011,3012],{"class":128,"line":491},[126,3013,488],{"emptyLinePlaceholder":487},[126,3015,3016,3018],{"class":128,"line":522},[126,3017,2992],{"class":132},[126,3019,3020],{"class":140}," eth0\n",[126,3022,3023,3025,3028,3030],{"class":128,"line":534},[126,3024,3000],{"class":132},[126,3026,3027],{"class":140}," eth0",[126,3029,3006],{"class":140},[126,3031,3032],{"class":140}," manual\n",[126,3034,3035],{"class":128,"line":553},[126,3036,488],{"emptyLinePlaceholder":487},[126,3038,3039,3041],{"class":128,"line":558},[126,3040,2992],{"class":132},[126,3042,3043],{"class":140}," br0\n",[126,3045,3046,3048,3051,3053],{"class":128,"line":600},[126,3047,3000],{"class":132},[126,3049,3050],{"class":140}," br0",[126,3052,3006],{"class":140},[126,3054,3055],{"class":140}," static\n",[126,3057,3058,3061],{"class":128,"line":632},[126,3059,3060],{"class":132},"        address",[126,3062,3063],{"class":140}," XX.XXX.XXX.XXX\n",[126,3065,3066,3069],{"class":128,"line":656},[126,3067,3068],{"class":132},"        netmask",[126,3070,3071],{"class":500}," 255.255.255.0\n",[126,3073,3074,3077],{"class":128,"line":667},[126,3075,3076],{"class":132},"        network",[126,3078,3079],{"class":140}," XX.XXX.XXX.0\n",[126,3081,3082,3085],{"class":128,"line":682},[126,3083,3084],{"class":132},"        broadcast",[126,3086,3087],{"class":140}," XX.XXX.XXX.255\n",[126,3089,3090,3093],{"class":128,"line":687},[126,3091,3092],{"class":132},"        gateway",[126,3094,3095],{"class":140}," XX.XXX.XXX.254\n",[126,3097,3098,3101],{"class":128,"line":720},[126,3099,3100],{"class":132},"        bridge_ports",[126,3102,3020],{"class":140},[126,3104,3105,3108],{"class":128,"line":752},[126,3106,3107],{"class":132},"        bridge_stp",[126,3109,3110],{"class":140}," off\n",[126,3112,3113,3116],{"class":128,"line":784},[126,3114,3115],{"class":132},"        bridge_fd",[126,3117,3118],{"class":500}," 0\n",[126,3120,3121,3124],{"class":128,"line":815},[126,3122,3123],{"class":132},"        bridge_maxwait",[126,3125,3118],{"class":500},[126,3127,3128],{"class":128,"line":847},[126,3129,488],{"emptyLinePlaceholder":487},[126,3131,3132,3134,3136,3139],{"class":128,"line":878},[126,3133,3000],{"class":132},[126,3135,3027],{"class":140},[126,3137,3138],{"class":140}," inet6",[126,3140,3055],{"class":140},[126,3142,3143,3145],{"class":128,"line":911},[126,3144,3060],{"class":132},[126,3146,3147],{"class":140}," XXXX:XXXX:X:XXXX::\n",[126,3149,3150,3152],{"class":128,"line":919},[126,3151,3068],{"class":132},[126,3153,3154],{"class":500}," 64\n",[126,3156,3157,3160,3163,3166,3168,3171,3174,3177,3180],{"class":128,"line":940},[126,3158,3159],{"class":132},"        post-up",[126,3161,3162],{"class":140}," \u002Fsbin\u002Fip",[126,3164,3165],{"class":140}," -family",[126,3167,3138],{"class":140},[126,3169,3170],{"class":140}," route",[126,3172,3173],{"class":140}," add",[126,3175,3176],{"class":140}," XXXX:XXXX:X:XXXX:XX:XX:XX:XX",[126,3178,3179],{"class":140}," dev",[126,3181,3020],{"class":140},[126,3183,3184,3186,3188,3190,3192,3194,3196,3199,3202],{"class":128,"line":955},[126,3185,3159],{"class":132},[126,3187,3162],{"class":140},[126,3189,3165],{"class":140},[126,3191,3138],{"class":140},[126,3193,3170],{"class":140},[126,3195,3173],{"class":140},[126,3197,3198],{"class":140}," default",[126,3200,3201],{"class":140}," via",[126,3203,3204],{"class":140}," XXXX:XXXX:X:XXXX:XX:XX:XX:XX\n",[126,3206,3207,3210,3212,3214,3216,3218,3221,3223,3225],{"class":128,"line":982},[126,3208,3209],{"class":132},"        pre-down",[126,3211,3162],{"class":140},[126,3213,3165],{"class":140},[126,3215,3138],{"class":140},[126,3217,3170],{"class":140},[126,3219,3220],{"class":140}," del",[126,3222,3198],{"class":140},[126,3224,3201],{"class":140},[126,3226,3204],{"class":140},[126,3228,3229,3231,3233,3235,3237,3239,3241,3243,3245],{"class":128,"line":987},[126,3230,3209],{"class":132},[126,3232,3162],{"class":140},[126,3234,3165],{"class":140},[126,3236,3138],{"class":140},[126,3238,3170],{"class":140},[126,3240,3220],{"class":140},[126,3242,3176],{"class":140},[126,3244,3179],{"class":140},[126,3246,3020],{"class":140},[15,3248,3249,3250,3253],{},"Redémarrer l’interface ",[39,3251,3252],{},"(la connexion en SSH avec votre serveur ne devrait pas être interrompue)","  :",[117,3255,3257],{"className":119,"code":3256,"language":121,"meta":74,"style":74},"\u002Fetc\u002Finit.d\u002Fnetwork restart\n",[123,3258,3259],{"__ignoreMap":74},[126,3260,3261,3264],{"class":128,"line":129},[126,3262,3263],{"class":132},"\u002Fetc\u002Finit.d\u002Fnetwork",[126,3265,3266],{"class":140}," restart\n",[15,3268,3269],{},"Vérifier la configuration de l’interface bridge sur l’hôte :",[117,3271,3273],{"className":119,"code":3272,"language":121,"meta":74,"style":74},"ifconfig br0\n",[123,3274,3275],{"__ignoreMap":74},[126,3276,3277,3280],{"class":128,"line":129},[126,3278,3279],{"class":132},"ifconfig",[126,3281,3043],{"class":140},[117,3283,3285],{"className":119,"code":3284,"language":121,"meta":74,"style":74},"br0       Link encap:Ethernet  HWaddr 08:60:6e:e5:bd:47\n          inet adr:XX.XXX.XXX.XXX  Bcast:XX.XXX.XXX.255  Masque:255.255.255.0\n          adr inet6: XXXX::XXX:XXXX:XXXX:XXXX\u002Fxx Scope:Lien\n          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1\n          RX packets:2344432 errors:0 dropped:0 overruns:0 frame:0\n          TX packets:1599970 errors:0 dropped:0 overruns:0 carrier:0\n          collisions:0 lg file transmission:0\n          RX bytes:9383508945 (8.7 GiB)  TX bytes:312106046 (297.6 MiB)\n",[123,3286,3287,3300,3312,3322,3336,3352,3367,3377],{"__ignoreMap":74},[126,3288,3289,3291,3294,3296,3298],{"class":128,"line":129},[126,3290,2528],{"class":132},[126,3292,3293],{"class":140},"       Link",[126,3295,2561],{"class":140},[126,3297,2564],{"class":140},[126,3299,2567],{"class":140},[126,3301,3302,3304,3307,3310],{"class":128,"line":220},[126,3303,2572],{"class":132},[126,3305,3306],{"class":140}," adr:XX.XXX.XXX.XXX",[126,3308,3309],{"class":140},"  Bcast:XX.XXX.XXX.255",[126,3311,2581],{"class":140},[126,3313,3314,3316,3318,3320],{"class":128,"line":491},[126,3315,2586],{"class":132},[126,3317,2589],{"class":140},[126,3319,2604],{"class":140},[126,3321,2607],{"class":140},[126,3323,3324,3326,3328,3330,3332,3334],{"class":128,"line":522},[126,3325,2612],{"class":132},[126,3327,2615],{"class":140},[126,3329,2618],{"class":140},[126,3331,2621],{"class":140},[126,3333,2624],{"class":140},[126,3335,2627],{"class":140},[126,3337,3338,3341,3344,3346,3348,3350],{"class":128,"line":534},[126,3339,3340],{"class":132},"          RX",[126,3342,3343],{"class":140}," packets:2344432",[126,3345,2658],{"class":140},[126,3347,2661],{"class":140},[126,3349,2644],{"class":140},[126,3351,2647],{"class":140},[126,3353,3354,3356,3359,3361,3363,3365],{"class":128,"line":553},[126,3355,2652],{"class":132},[126,3357,3358],{"class":140}," packets:1599970",[126,3360,2658],{"class":140},[126,3362,2661],{"class":140},[126,3364,2644],{"class":140},[126,3366,2666],{"class":140},[126,3368,3369,3371,3373,3375],{"class":128,"line":558},[126,3370,2671],{"class":132},[126,3372,2674],{"class":140},[126,3374,1407],{"class":140},[126,3376,2798],{"class":140},[126,3378,3379,3381,3384,3387,3390,3393,3396,3399],{"class":128,"line":600},[126,3380,3340],{"class":132},[126,3382,3383],{"class":140}," bytes:9383508945",[126,3385,3386],{"class":216}," (8.7 ",[126,3388,3389],{"class":140},"GiB",[126,3391,3392],{"class":216},")  TX bytes:312106046 (",[126,3394,3395],{"class":132},"297.6",[126,3397,3398],{"class":140}," MiB",[126,3400,1773],{"class":216},[15,3402,3403],{},"La commande pour visualiser l’interface bridgée :",[117,3405,3407],{"className":119,"code":3406,"language":121,"meta":74,"style":74},"btctl show\nbr0             8000.08606ee5bd47       no              eth0\n",[123,3408,3409,3417],{"__ignoreMap":74},[126,3410,3411,3414],{"class":128,"line":129},[126,3412,3413],{"class":132},"btctl",[126,3415,3416],{"class":140}," show\n",[126,3418,3419,3422,3425,3428],{"class":128,"line":220},[126,3420,3421],{"class":132},"br0            ",[126,3423,3424],{"class":140}," 8000.08606ee5bd47      ",[126,3426,3427],{"class":140}," no             ",[126,3429,3020],{"class":140},[15,3431,3432],{},"Le paquet bridge nous offre la possibilité de créer directement nos interfaces telles que :",[117,3434,3436],{"className":119,"code":3435,"language":121,"meta":74,"style":74},"brctl addbr lbr0\nbrctl addbr lbr1\n",[123,3437,3438,3449],{"__ignoreMap":74},[126,3439,3440,3443,3446],{"class":128,"line":129},[126,3441,3442],{"class":132},"brctl",[126,3444,3445],{"class":140}," addbr",[126,3447,3448],{"class":140}," lbr0\n",[126,3450,3451,3453,3455],{"class":128,"line":220},[126,3452,3442],{"class":132},[126,3454,3445],{"class":140},[126,3456,3457],{"class":140}," lbr1\n",[15,3459,3460],{},"Ensuite, il nous faut démarrer les interfaces bridgées lbr0 et lbr1 :",[117,3462,3464],{"className":119,"code":3463,"language":121,"meta":74,"style":74},"ip link set dev lbr0 up\nip link set dev lbr1 up\n",[123,3465,3466,3485],{"__ignoreMap":74},[126,3467,3468,3471,3474,3477,3479,3482],{"class":128,"line":129},[126,3469,3470],{"class":132},"ip",[126,3472,3473],{"class":140}," link",[126,3475,3476],{"class":140}," set",[126,3478,3179],{"class":140},[126,3480,3481],{"class":140}," lbr0",[126,3483,3484],{"class":140}," up\n",[126,3486,3487,3489,3491,3493,3495,3498],{"class":128,"line":220},[126,3488,3470],{"class":132},[126,3490,3473],{"class":140},[126,3492,3476],{"class":140},[126,3494,3179],{"class":140},[126,3496,3497],{"class":140}," lbr1",[126,3499,3484],{"class":140},[15,3501,3502],{},"Cependant, la méthode de libvirt ne rend pas permanente nos interfaces ! Ajoutez les deux interfaces de façon définitive :",[117,3504,3506],{"className":119,"code":3505,"language":121,"meta":74,"style":74},"nano \u002Fetc\u002Fnetwork\u002Finterface\n",[123,3507,3508],{"__ignoreMap":74},[126,3509,3510,3512],{"class":128,"line":129},[126,3511,1962],{"class":132},[126,3513,3514],{"class":140}," \u002Fetc\u002Fnetwork\u002Finterface\n",[117,3516,3518],{"className":119,"code":3517,"language":121,"meta":74,"style":74},"auto lbr0\niface lbr0 inet manual\n    bridge_ports none\n    bridge_stp off\n\nauto lbr1\niface lbr1 inet manual\n    bridge_ports none\n    bridge_stp off\n",[123,3519,3520,3526,3536,3544,3551,3555,3561,3571,3577],{"__ignoreMap":74},[126,3521,3522,3524],{"class":128,"line":129},[126,3523,2992],{"class":132},[126,3525,3448],{"class":140},[126,3527,3528,3530,3532,3534],{"class":128,"line":220},[126,3529,3000],{"class":132},[126,3531,3481],{"class":140},[126,3533,3006],{"class":140},[126,3535,3032],{"class":140},[126,3537,3538,3541],{"class":128,"line":491},[126,3539,3540],{"class":132},"    bridge_ports",[126,3542,3543],{"class":140}," none\n",[126,3545,3546,3549],{"class":128,"line":522},[126,3547,3548],{"class":132},"    bridge_stp",[126,3550,3110],{"class":140},[126,3552,3553],{"class":128,"line":534},[126,3554,488],{"emptyLinePlaceholder":487},[126,3556,3557,3559],{"class":128,"line":553},[126,3558,2992],{"class":132},[126,3560,3457],{"class":140},[126,3562,3563,3565,3567,3569],{"class":128,"line":558},[126,3564,3000],{"class":132},[126,3566,3497],{"class":140},[126,3568,3006],{"class":140},[126,3570,3032],{"class":140},[126,3572,3573,3575],{"class":128,"line":600},[126,3574,3540],{"class":132},[126,3576,3543],{"class":140},[126,3578,3579,3581],{"class":128,"line":632},[126,3580,3548],{"class":132},[126,3582,3110],{"class":140},[117,3584,3585],{"className":119,"code":3256,"language":121,"meta":74,"style":74},[123,3586,3587],{"__ignoreMap":74},[126,3588,3589,3591],{"class":128,"line":129},[126,3590,3263],{"class":132},[126,3592,3266],{"class":140},[117,3594,3596],{"className":119,"code":3595,"language":121,"meta":74,"style":74},"brctl show\n\nbr0             8000.08606ee5bd47       no              eth0\nlbr0            8000.fe5400047801       no              \nlbr1            8000.fe54000a522b       no              \nvirbr0          8000.000000000000       yes\n",[123,3597,3598,3604,3608,3621,3633,3644],{"__ignoreMap":74},[126,3599,3600,3602],{"class":128,"line":129},[126,3601,3442],{"class":132},[126,3603,3416],{"class":140},[126,3605,3606],{"class":128,"line":220},[126,3607,488],{"emptyLinePlaceholder":487},[126,3609,3610,3612,3615,3618],{"class":128,"line":491},[126,3611,2528],{"class":132},[126,3613,3614],{"class":140},"             8000.08606ee5bd47",[126,3616,3617],{"class":140},"       no",[126,3619,3620],{"class":140},"              eth0\n",[126,3622,3623,3625,3628,3630],{"class":128,"line":522},[126,3624,2493],{"class":132},[126,3626,3627],{"class":140},"            8000.fe5400047801",[126,3629,3617],{"class":140},[126,3631,3632],{"class":216},"              \n",[126,3634,3635,3637,3640,3642],{"class":128,"line":534},[126,3636,2497],{"class":132},[126,3638,3639],{"class":140},"            8000.fe54000a522b",[126,3641,3617],{"class":140},[126,3643,3632],{"class":216},[126,3645,3646,3648,3651],{"class":128,"line":553},[126,3647,2829],{"class":132},[126,3649,3650],{"class":500},"          8000.000000000000",[126,3652,3653],{"class":140},"       yes\n",[15,3655,3656],{},"Le serveur hôte peut redémarrer sans crainte de perdre sa configuration désormais. Voici les différentes interfaces bridgées :",[15,3658,3659],{},[72,3660],{"alt":74,"src":3661},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F58711051ad.png",[15,3663,3664],{},"Vous avez la possibilité de désactiver l’interface au démarrage :",[117,3666,3668],{"className":119,"code":3667,"language":121,"meta":74,"style":74},"virsh net-autostart --disable default\n",[123,3669,3670],{"__ignoreMap":74},[126,3671,3672,3674,3677,3680],{"class":128,"line":129},[126,3673,2163],{"class":132},[126,3675,3676],{"class":140}," net-autostart",[126,3678,3679],{"class":140}," --disable",[126,3681,3682],{"class":140}," default\n",[15,3684,3685],{},"Ou encore de supprimer définitivement l’interface default :",[117,3687,3689],{"className":119,"code":3688,"language":121,"meta":74,"style":74},"virsh net-destroy default\n",[123,3690,3691],{"__ignoreMap":74},[126,3692,3693,3695,3698],{"class":128,"line":129},[126,3694,2163],{"class":132},[126,3696,3697],{"class":140}," net-destroy",[126,3699,3682],{"class":140},[10,3701,3703],{"id":3702},"création-dune-instance-dans-webvirtmgr","Création d’une instance dans WebVirtMgr",[15,3705,3706],{},"Dans la rubrique instances, cliquez sur le bouton New Instance et plusieurs possibilités s’offre à vous.",[110,3708,3709],{},[113,3710,3711],{},"Instance personnalisée, Template ou fichier de configuration XML.",[15,3713,3714],{},"Ci-dessous on retrouve aussi des templates pré-définis et numérotés de 1 à 6 qui permettent de créer une image.",[15,3716,3717],{},[72,3718],{"alt":74,"src":3719},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F7d077aab57.png",[15,3721,3722,3723,3725,3726,3729],{},"Dans ce cas précis, je vais utiliser une instance personnalisée. Mais avant il faudra créer un disque pour la VM.",[50,3724],{},"\nComme expliqué précédemment je préfère utiliser le mode ",[84,3727,3728],{},"cli"," pour créer le disque de ma future machine :",[117,3731,3733],{"className":119,"code":3732,"language":121,"meta":74,"style":74},"qemu-img create -f qcow2 vdisk 10G\n",[123,3734,3735],{"__ignoreMap":74},[126,3736,3737,3740,3742,3744,3747,3750],{"class":128,"line":129},[126,3738,3739],{"class":132},"qemu-img",[126,3741,1585],{"class":140},[126,3743,1908],{"class":140},[126,3745,3746],{"class":140}," qcow2",[126,3748,3749],{"class":140}," vdisk",[126,3751,3752],{"class":140}," 10G\n",[15,3754,3755],{},"Pour ceux qui souhaite convertir une machine VMware vers KVM :",[117,3757,3759],{"className":119,"code":3758,"language":121,"meta":74,"style":74},"qemu-img convert vm1-flat.vmdk -O qcow2 vm1\n",[123,3760,3761],{"__ignoreMap":74},[126,3762,3763,3765,3768,3771,3774,3776],{"class":128,"line":129},[126,3764,3739],{"class":132},[126,3766,3767],{"class":140}," convert",[126,3769,3770],{"class":140}," vm1-flat.vmdk",[126,3772,3773],{"class":140}," -O",[126,3775,3746],{"class":140},[126,3777,3778],{"class":140}," vm1\n",[15,3780,3781],{},"Afficher des informations concernant notre machine :",[117,3783,3787],{"className":3784,"code":3785,"language":3786,"meta":74,"style":74},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","qemu-img info vdisk\n\nfile format: qcow2\nvirtual size: 10G (10737418240 bytes)\ndisk size: 136K\ncluster_size: 65536\n","yaml",[123,3788,3789,3794,3798,3809,3819,3829],{"__ignoreMap":74},[126,3790,3791],{"class":128,"line":129},[126,3792,3793],{"class":140},"qemu-img info vdisk\n",[126,3795,3796],{"class":128,"line":220},[126,3797,488],{"emptyLinePlaceholder":487},[126,3799,3800,3804,3806],{"class":128,"line":491},[126,3801,3803],{"class":3802},"swJcz","file format",[126,3805,1627],{"class":136},[126,3807,3808],{"class":140}," qcow2\n",[126,3810,3811,3814,3816],{"class":128,"line":522},[126,3812,3813],{"class":3802},"virtual size",[126,3815,1627],{"class":136},[126,3817,3818],{"class":140}," 10G (10737418240 bytes)\n",[126,3820,3821,3824,3826],{"class":128,"line":534},[126,3822,3823],{"class":3802},"disk size",[126,3825,1627],{"class":136},[126,3827,3828],{"class":140}," 136K\n",[126,3830,3831,3834,3836],{"class":128,"line":553},[126,3832,3833],{"class":3802},"cluster_size",[126,3835,1627],{"class":136},[126,3837,3838],{"class":500}," 65536\n",[15,3840,3841],{},"Utiliser maintenant le HDD vdisk pour créer une VM vdisk :",[15,3843,3844],{},[72,3845],{"alt":74,"src":3846},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F4724135195.png",[15,3848,3849],{},"Lancer la création en cliquant sur le bouton create : la gestion de la machine « vdisk » apparaît avec ses options :",[15,3851,3852],{},[72,3853],{"alt":74,"src":3854},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F08ea1367cb.png",[15,3856,3857],{},"A ce moment précis, libre à vous de découvrir les rubriques ci-dessus mais n’oubliez pas :",[3859,3860,3861,3868,3874,4066,4080],"ol",{},[113,3862,3863,3864,3867],{},"« ",[84,3865,3866],{},"Access"," » pour sélectionner votre type de console, puis modifié la disposition du clavier (si mode : novnc).",[113,3869,3863,3870,3873],{},[84,3871,3872],{},"Settings"," » pour l’ajout d’un Media ISO à la machine virtuelle.",[113,3875,3876,3877,3879,3880],{},"Dans « ",[84,3878,3872],{}," » éditer la configuration du xml de la machine vdisk. Uniquement si vous souhaitez attribuer une Failover OVH à votre VM. La partie interfaces de la machine doit contenir (exemple sur mon routeur\u002Fpare-feu) :",[117,3881,3883],{"className":119,"code":3882,"language":121,"meta":74,"style":74},"\u003Cinterface type='bridge'>\n\u003Cmac address='xx:xx:xx:xx:xx:xx'\u002F>\n\u003Csource bridge='br0'\u002F>\n\u003Ctarget dev='vnet0'\u002F>\n\u003Calias name='net0'\u002F>\n\u003Caddress type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'\u002F>\n\u003C\u002Finterface>\n",[123,3884,3885,3905,3926,3945,3965,3989,4057],{"__ignoreMap":74},[126,3886,3887,3890,3893,3895,3897,3900,3902],{"class":128,"line":129},[126,3888,3889],{"class":136},"\u003C",[126,3891,3892],{"class":216},"interface type",[126,3894,892],{"class":136},[126,3896,144],{"class":136},[126,3898,3899],{"class":140},"bridge",[126,3901,144],{"class":136},[126,3903,3904],{"class":136},">\n",[126,3906,3907,3909,3912,3914,3916,3919,3921,3924],{"class":128,"line":220},[126,3908,3889],{"class":136},[126,3910,3911],{"class":216},"mac address",[126,3913,892],{"class":136},[126,3915,144],{"class":136},[126,3917,3918],{"class":140},"xx:xx:xx:xx:xx:xx",[126,3920,144],{"class":136},[126,3922,3923],{"class":140},"\u002F",[126,3925,3904],{"class":136},[126,3927,3928,3930,3933,3935,3937,3939,3941,3943],{"class":128,"line":491},[126,3929,3889],{"class":136},[126,3931,3932],{"class":216},"source bridge",[126,3934,892],{"class":136},[126,3936,144],{"class":136},[126,3938,2528],{"class":140},[126,3940,144],{"class":136},[126,3942,3923],{"class":140},[126,3944,3904],{"class":136},[126,3946,3947,3949,3952,3954,3956,3959,3961,3963],{"class":128,"line":522},[126,3948,3889],{"class":136},[126,3950,3951],{"class":216},"target dev",[126,3953,892],{"class":136},[126,3955,144],{"class":136},[126,3957,3958],{"class":140},"vnet0",[126,3960,144],{"class":136},[126,3962,3923],{"class":140},[126,3964,3904],{"class":136},[126,3966,3967,3969,3973,3976,3978,3980,3983,3985,3987],{"class":128,"line":534},[126,3968,3889],{"class":136},[126,3970,3972],{"class":3971},"spNyl","alias",[126,3974,3975],{"class":216}," name",[126,3977,892],{"class":136},[126,3979,144],{"class":136},[126,3981,3982],{"class":140},"net0",[126,3984,144],{"class":136},[126,3986,3923],{"class":216},[126,3988,3904],{"class":136},[126,3990,3991,3993,3996,3998,4000,4003,4005,4008,4010,4012,4015,4017,4020,4022,4024,4027,4029,4032,4034,4036,4039,4041,4044,4046,4048,4051,4053,4055],{"class":128,"line":553},[126,3992,3889],{"class":136},[126,3994,3995],{"class":216},"address type",[126,3997,892],{"class":136},[126,3999,144],{"class":136},[126,4001,4002],{"class":140},"pci",[126,4004,144],{"class":136},[126,4006,4007],{"class":216}," domain",[126,4009,892],{"class":136},[126,4011,144],{"class":136},[126,4013,4014],{"class":140},"0x0000",[126,4016,144],{"class":136},[126,4018,4019],{"class":216}," bus",[126,4021,892],{"class":136},[126,4023,144],{"class":136},[126,4025,4026],{"class":140},"0x00",[126,4028,144],{"class":136},[126,4030,4031],{"class":216}," slot",[126,4033,892],{"class":136},[126,4035,144],{"class":136},[126,4037,4038],{"class":140},"0x03",[126,4040,144],{"class":136},[126,4042,4043],{"class":216}," function",[126,4045,892],{"class":136},[126,4047,144],{"class":136},[126,4049,4050],{"class":140},"0x0",[126,4052,144],{"class":136},[126,4054,3923],{"class":140},[126,4056,3904],{"class":136},[126,4058,4059,4061,4064],{"class":128,"line":558},[126,4060,3889],{"class":136},[126,4062,4063],{"class":216},"\u002Finterface",[126,4065,3904],{"class":136},[113,4067,4068,4069,4072,4073,4076,4077],{},"Lancement de la machine : ",[84,4070,4071],{},"Power"," puis ",[84,4074,4075],{},"Start",", l’accès à la console ce fera via ",[84,4078,4079],{},"Accès\u002FConsole",[113,4081,4082],{},"Une pop-up s’ouvre avec novnc et l’accès à la VM :",[15,4084,4085],{},[72,4086],{"alt":74,"src":4087},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F03cd2ed8d2.png",[15,4089,4090,4091,4093],{},"C’est terminé, vous êtes désormais prêt à utiliser les ressources de votre infrastructure et votre VM !",[50,4092],{},[84,4094,4095],{},"Mais avant sauvegardez à chaud votre VM.",[77,4097,4099],{"id":4098},"sauvegarder-vos-machines-kvm-à-chaud","Sauvegarder vos machines KVM à chaud",[15,4101,4102],{},"La sauvegarde peut se faire par clone via l’interface webvirtmgr ou encore via un simple cp : (vers NFS)",[117,4104,4106],{"className":119,"code":4105,"language":121,"meta":74,"style":74},"cp \u002Fvar\u002Flib\u002Flibvirt\u002Fimages\u002Fvdisk \u002Fvar\u002Flib\u002Flibvirt\u002Fnfs\u002Fvdisk.02.03.2015\n",[123,4107,4108],{"__ignoreMap":74},[126,4109,4110,4113,4116],{"class":128,"line":129},[126,4111,4112],{"class":132},"cp",[126,4114,4115],{"class":140}," \u002Fvar\u002Flib\u002Flibvirt\u002Fimages\u002Fvdisk",[126,4117,4118],{"class":140}," \u002Fvar\u002Flib\u002Flibvirt\u002Fnfs\u002Fvdisk.02.03.2015\n",[10,4120,4122],{"id":4121},"vue-densemble-de-linfrastructure","Vue d’ensemble de l’infrastructure",[15,4124,4125],{},"La charge d’utilisation de l’infrastructure est disponible dans la rubrique overview ce qui permet d’obtenir une vue d’ensemble en temps réel. Voici l’utilisation de mon infrastructure webvirt-kassianoff une fois en place :",[15,4127,4128],{},[72,4129],{"alt":74,"src":4130},"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F865ec5df9e.png",[10,4132,4134],{"id":4133},"mise-à-jour-de-webvirtmgr","Mise à jour de WebVirtMgr",[15,4136,4137,4138,4140],{},"Les mise à jours technologiques et de sécurité sont bien entendu très importantes, pour cela rien de plus simple :",[50,4139],{},"\nRendez-vous dans le répertoire de WebVirtMgr :",[117,4142,4144],{"className":119,"code":4143,"language":121,"meta":74,"style":74},"cd \u002Fvar\u002Fwww\u002Fwebvirtmgr\n",[123,4145,4146],{"__ignoreMap":74},[126,4147,4148,4150],{"class":128,"line":129},[126,4149,422],{"class":364},[126,4151,4152],{"class":140}," \u002Fvar\u002Fwww\u002Fwebvirtmgr\n",[15,4154,4155],{},"Puis lancez les commandes suivantes :",[117,4157,4159],{"className":119,"code":4158,"language":121,"meta":74,"style":74}," remote: Counting objects: 27, done.\nremote: Compressing objects: 100% (14\u002F14), done.\nremote: Total 27 (delta 7), reused 6 (delta 6), pack-reused 7\nUnpacking objects: 100% (27\u002F27), done.\nFrom git:\u002F\u002Fgithub.com\u002Fretspen\u002Fwebvirtmgr\n   ed176e4..c875e0d  master     -> origin\u002Fmaster\nUpdating ed176e4..c875e0d\nFast-forward\n console\u002Fviews.py         |    3 ++-\n create\u002Fviews.py          |    7 ++++---\n hostdetail\u002Fviews.py      |    5 +++--\n instance\u002Fviews.py        |   15 ++++++++-------\n interfaces\u002Fviews.py      |    7 ++++---\n networks\u002Fviews.py        |    9 +++++----\n secrets\u002Fviews.py         |    3 ++-\n servers\u002Fviews.py         |    9 +++++----\n storages\u002Fviews.py        |    9 +++++----\n templates\u002Fbase.html      |    2 +-\n templates\u002Fbase_auth.html |    2 +-\n templates\u002Flogin.html     |    2 +-\n 12 files changed, 41 insertions(+), 32 deletions(-)\n",[123,4160,4161,4178,4194,4221,4233,4241,4257,4265,4270,4284,4298,4312,4326,4337,4350,4361,4372,4383,4396,4408,4420],{"__ignoreMap":74},[126,4162,4163,4166,4169,4172,4175],{"class":128,"line":129},[126,4164,4165],{"class":132}," remote:",[126,4167,4168],{"class":140}," Counting",[126,4170,4171],{"class":140}," objects:",[126,4173,4174],{"class":140}," 27,",[126,4176,4177],{"class":140}," done.\n",[126,4179,4180,4183,4186,4188,4191],{"class":128,"line":220},[126,4181,4182],{"class":132},"remote:",[126,4184,4185],{"class":140}," Compressing",[126,4187,4171],{"class":140},[126,4189,4190],{"class":140}," 100%",[126,4192,4193],{"class":216}," (14\u002F14), done.\n",[126,4195,4196,4198,4201,4204,4207,4210,4213,4216,4218],{"class":128,"line":491},[126,4197,4182],{"class":132},[126,4199,4200],{"class":140}," Total",[126,4202,4203],{"class":500}," 27",[126,4205,4206],{"class":216}," (delta ",[126,4208,4209],{"class":500},"7",[126,4211,4212],{"class":216},"), reused 6 (",[126,4214,4215],{"class":132},"delta",[126,4217,1746],{"class":500},[126,4219,4220],{"class":216},"), pack-reused 7\n",[126,4222,4223,4226,4228,4230],{"class":128,"line":522},[126,4224,4225],{"class":132},"Unpacking",[126,4227,4171],{"class":140},[126,4229,4190],{"class":140},[126,4231,4232],{"class":216}," (27\u002F27), done.\n",[126,4234,4235,4238],{"class":128,"line":534},[126,4236,4237],{"class":132},"From",[126,4239,4240],{"class":140}," git:\u002F\u002Fgithub.com\u002Fretspen\u002Fwebvirtmgr\n",[126,4242,4243,4246,4249,4252,4254],{"class":128,"line":553},[126,4244,4245],{"class":132},"   ed176e4..c875e0d",[126,4247,4248],{"class":140},"  master",[126,4250,4251],{"class":216},"     -",[126,4253,889],{"class":136},[126,4255,4256],{"class":140}," origin\u002Fmaster\n",[126,4258,4259,4262],{"class":128,"line":558},[126,4260,4261],{"class":132},"Updating",[126,4263,4264],{"class":140}," ed176e4..c875e0d\n",[126,4266,4267],{"class":128,"line":600},[126,4268,4269],{"class":132},"Fast-forward\n",[126,4271,4272,4275,4278,4281],{"class":128,"line":632},[126,4273,4274],{"class":132}," console\u002Fviews.py",[126,4276,4277],{"class":136},"         |",[126,4279,4280],{"class":132},"    3",[126,4282,4283],{"class":140}," ++-\n",[126,4285,4286,4289,4292,4295],{"class":128,"line":656},[126,4287,4288],{"class":132}," create\u002Fviews.py",[126,4290,4291],{"class":136},"          |",[126,4293,4294],{"class":132},"    7",[126,4296,4297],{"class":140}," ++++---\n",[126,4299,4300,4303,4306,4309],{"class":128,"line":667},[126,4301,4302],{"class":132}," hostdetail\u002Fviews.py",[126,4304,4305],{"class":136},"      |",[126,4307,4308],{"class":132},"    5",[126,4310,4311],{"class":140}," +++--\n",[126,4313,4314,4317,4320,4323],{"class":128,"line":682},[126,4315,4316],{"class":132}," instance\u002Fviews.py",[126,4318,4319],{"class":136},"        |",[126,4321,4322],{"class":132},"   15",[126,4324,4325],{"class":140}," ++++++++-------\n",[126,4327,4328,4331,4333,4335],{"class":128,"line":687},[126,4329,4330],{"class":132}," interfaces\u002Fviews.py",[126,4332,4305],{"class":136},[126,4334,4294],{"class":132},[126,4336,4297],{"class":140},[126,4338,4339,4342,4344,4347],{"class":128,"line":720},[126,4340,4341],{"class":132}," networks\u002Fviews.py",[126,4343,4319],{"class":136},[126,4345,4346],{"class":132},"    9",[126,4348,4349],{"class":140}," +++++----\n",[126,4351,4352,4355,4357,4359],{"class":128,"line":752},[126,4353,4354],{"class":132}," secrets\u002Fviews.py",[126,4356,4277],{"class":136},[126,4358,4280],{"class":132},[126,4360,4283],{"class":140},[126,4362,4363,4366,4368,4370],{"class":128,"line":784},[126,4364,4365],{"class":132}," servers\u002Fviews.py",[126,4367,4277],{"class":136},[126,4369,4346],{"class":132},[126,4371,4349],{"class":140},[126,4373,4374,4377,4379,4381],{"class":128,"line":815},[126,4375,4376],{"class":132}," storages\u002Fviews.py",[126,4378,4319],{"class":136},[126,4380,4346],{"class":132},[126,4382,4349],{"class":140},[126,4384,4385,4388,4390,4393],{"class":128,"line":847},[126,4386,4387],{"class":132}," templates\u002Fbase.html",[126,4389,4305],{"class":136},[126,4391,4392],{"class":132},"    2",[126,4394,4395],{"class":140}," +-\n",[126,4397,4398,4401,4404,4406],{"class":128,"line":878},[126,4399,4400],{"class":132}," templates\u002Fbase_auth.html",[126,4402,4403],{"class":136}," |",[126,4405,4392],{"class":132},[126,4407,4395],{"class":140},[126,4409,4410,4413,4416,4418],{"class":128,"line":911},[126,4411,4412],{"class":132}," templates\u002Flogin.html",[126,4414,4415],{"class":136},"     |",[126,4417,4392],{"class":132},[126,4419,4395],{"class":140},[126,4421,4422,4425,4427,4430,4433,4436,4438,4441,4443,4445,4448,4451,4453,4456],{"class":128,"line":919},[126,4423,4424],{"class":132}," 12",[126,4426,570],{"class":140},[126,4428,4429],{"class":140}," changed,",[126,4431,4432],{"class":500}," 41",[126,4434,4435],{"class":140}," insertions",[126,4437,1752],{"class":136},[126,4439,4440],{"class":132},"+",[126,4442,1758],{"class":136},[126,4444,2525],{"class":140},[126,4446,4447],{"class":500}," 32",[126,4449,4450],{"class":140}," deletions",[126,4452,1752],{"class":136},[126,4454,4455],{"class":132},"-",[126,4457,1773],{"class":136},[117,4459,4461],{"className":119,"code":4460,"language":121,"meta":74,"style":74},".\u002Fmanage.py collectstatic\n",[123,4462,4463],{"__ignoreMap":74},[126,4464,4465,4467],{"class":128,"line":129},[126,4466,1388],{"class":132},[126,4468,1788],{"class":140},[117,4470,4472],{"className":119,"code":4471,"language":121,"meta":74,"style":74},"WARNING:root:No local_settings file found.\n\nYou have requested to collect static files at the destination\nlocation as specified in your settings.\n\nThis will overwrite existing files!\nAre you sure you want to do this?\n\nType 'yes' to continue, or 'no' to cancel: yes\n\n0 static files copied, 75 unmodified.\n",[123,4473,4474,4484,4488,4515,4534,4538,4554,4577,4581,4609,4613],{"__ignoreMap":74},[126,4475,4476,4478,4480,4482],{"class":128,"line":129},[126,4477,1401],{"class":132},[126,4479,1404],{"class":140},[126,4481,1407],{"class":140},[126,4483,1410],{"class":140},[126,4485,4486],{"class":128,"line":220},[126,4487,488],{"emptyLinePlaceholder":487},[126,4489,4490,4492,4494,4497,4499,4502,4504,4506,4509,4512],{"class":128,"line":491},[126,4491,1539],{"class":132},[126,4493,1560],{"class":140},[126,4495,4496],{"class":140}," requested",[126,4498,976],{"class":140},[126,4500,4501],{"class":140}," collect",[126,4503,1831],{"class":140},[126,4505,570],{"class":140},[126,4507,4508],{"class":140}," at",[126,4510,4511],{"class":140}," the",[126,4513,4514],{"class":140}," destination\n",[126,4516,4517,4520,4523,4526,4529,4531],{"class":128,"line":522},[126,4518,4519],{"class":132},"location",[126,4521,4522],{"class":140}," as",[126,4524,4525],{"class":140}," specified",[126,4527,4528],{"class":140}," in",[126,4530,2181],{"class":140},[126,4532,4533],{"class":140}," settings.\n",[126,4535,4536],{"class":128,"line":534},[126,4537,488],{"emptyLinePlaceholder":487},[126,4539,4540,4543,4546,4549,4551],{"class":128,"line":553},[126,4541,4542],{"class":132},"This",[126,4544,4545],{"class":140}," will",[126,4547,4548],{"class":140}," overwrite",[126,4550,1321],{"class":140},[126,4552,4553],{"class":140}," files!\n",[126,4555,4556,4559,4561,4564,4566,4569,4571,4574],{"class":128,"line":558},[126,4557,4558],{"class":132},"Are",[126,4560,1577],{"class":140},[126,4562,4563],{"class":140}," sure",[126,4565,1577],{"class":140},[126,4567,4568],{"class":140}," want",[126,4570,976],{"class":140},[126,4572,4573],{"class":140}," do",[126,4575,4576],{"class":140}," this?\n",[126,4578,4579],{"class":128,"line":600},[126,4580,488],{"emptyLinePlaceholder":487},[126,4582,4583,4585,4587,4589,4591,4593,4595,4597,4599,4601,4603,4605,4607],{"class":128,"line":632},[126,4584,1797],{"class":132},[126,4586,137],{"class":136},[126,4588,1611],{"class":140},[126,4590,144],{"class":136},[126,4592,976],{"class":140},[126,4594,1808],{"class":140},[126,4596,1617],{"class":140},[126,4598,137],{"class":136},[126,4600,1622],{"class":140},[126,4602,144],{"class":136},[126,4604,976],{"class":140},[126,4606,1821],{"class":140},[126,4608,1630],{"class":140},[126,4610,4611],{"class":128,"line":656},[126,4612,488],{"emptyLinePlaceholder":487},[126,4614,4615,4618,4620,4622,4625,4628],{"class":128,"line":667},[126,4616,4617],{"class":132},"0",[126,4619,1831],{"class":140},[126,4621,570],{"class":140},[126,4623,4624],{"class":140}," copied,",[126,4626,4627],{"class":500}," 75",[126,4629,4630],{"class":140}," unmodified.\n",[117,4632,4634],{"className":119,"code":4633,"language":121,"meta":74,"style":74},"service supervisor stop\n",[123,4635,4636],{"__ignoreMap":74},[126,4637,4638,4640,4642],{"class":128,"line":129},[126,4639,2033],{"class":132},[126,4641,2036],{"class":140},[126,4643,1878],{"class":140},[15,4645,4646],{},"Je termine ma migration et j’espère que votre nouvelle infrastructure vous plaît !",[10,4648,4650],{"id":4649},"conclusion","Conclusion",[15,4652,4653],{},"Cet article a présenté la mise en place d’une infrastructure de virtualisation KVM\u002FQEMU pilotée par l’interface web WebVirtMgr : installation des paquets nécessaires, configuration des pools de stockage, des réseaux et interfaces bridgées, puis création et sauvegarde d’une instance. Cette solution open-source et interopérable permet de gérer facilement un hyperviseur KVM sans dépendre d’un éditeur propriétaire, tout en conservant la souplesse du terminal Linux pour les tâches les plus techniques. J’espère que cette nouvelle infrastructure, plus proche de mes habitudes Linux, continuera de bien fonctionner dans la durée.",[4655,4656,4657],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}",{"title":74,"searchDepth":220,"depth":220,"links":4659},[4660,4661,4662,4666,4669,4670,4671,4672,4673,4674,4677,4678,4679],{"id":12,"depth":220,"text":13},{"id":20,"depth":220,"text":21},{"id":44,"depth":220,"text":45,"children":4663},[4664,4665],{"id":79,"depth":491,"text":80},{"id":107,"depth":491,"text":108},{"id":245,"depth":220,"text":246,"children":4667},[4668],{"id":2053,"depth":491,"text":2054},{"id":2099,"depth":220,"text":2100},{"id":2318,"depth":220,"text":2319},{"id":2369,"depth":220,"text":2370},{"id":2482,"depth":220,"text":2483},{"id":2513,"depth":220,"text":2514},{"id":3702,"depth":220,"text":3703,"children":4675},[4676],{"id":4098,"depth":491,"text":4099},{"id":4121,"depth":220,"text":4122},{"id":4133,"depth":220,"text":4134},{"id":4649,"depth":220,"text":4650},null,"\u002Fimages\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr\u002F1ecef34685.jpg","2015-03-02","Vous souhaitez migrer vers KVM avec WebVirtMgr? Alors découvrez : kvm, libvirt, webvirtmgr, brctl et bien d'autres! Pré-requis : un serveur compatible KVM.","md",{},"\u002Fblog\u002Fmigration-vers-kvm-avec-webvirtmgr",{"title":5,"description":4683},"migration-vers-kvm-avec-webvirtmgr","blog\u002Fmigration-vers-kvm-avec-webvirtmgr","oWocxy76o5YhN7_quzNHOqys0m2kR06yIuX77xGpipI",[4692,4700,4706,4714,4721,4728,4736,4744],{"title":4693,"path":4694,"stem":4695,"date":4696,"cover":4697,"categories":4698,"children":-1},"Documentation numéro 8","\u002Fblog\u002Fbts-documentation-numero-8","blog\u002Fbts-documentation-numero-8","2015-04-13","\u002Fimages\u002Fblog\u002Fbts-documentation-numero-8\u002F36bb38ac4a.jpg",[4699],"BTS",{"title":4701,"path":4702,"stem":4703,"date":4696,"cover":4704,"categories":4705,"children":-1},"Documentation numéro 9","\u002Fblog\u002Fbts-documentation-numero-9","blog\u002Fbts-documentation-numero-9","\u002Fimages\u002Fblog\u002Fbts-documentation-numero-9\u002Fa7c04713bd.jpg",[4699],{"title":4707,"path":4708,"stem":4709,"date":4710,"cover":4711,"categories":4712,"children":-1},"Configuration de règles de sécurité sous JunoS","\u002Fblog\u002Fconfiguration-regles-securite-sous-junos","blog\u002Fconfiguration-regles-securite-sous-junos","2015-03-29","\u002Fimages\u002Fblog\u002Fconfiguration-regles-securite-sous-junos\u002F1b4814003c.jpg",[4713],"Réseau",{"title":4715,"path":4716,"stem":4717,"date":4718,"cover":4719,"categories":4720,"children":-1},"VMware vCenter dans le vRack d’OVH","\u002Fblog\u002Fvmware-vcenter-dans-vrack-ovh","blog\u002Fvmware-vcenter-dans-vrack-ovh","2015-03-05","\u002Fimages\u002Fblog\u002Fvmware-vcenter-dans-vrack-ovh\u002F1e5012367c.png",[4713],{"title":4722,"path":4723,"stem":4724,"date":4725,"cover":4726,"categories":4727,"children":-1},"Configuration d’un chassis virtuel sous Junos","\u002Fblog\u002Fconfiguration-chassis-virtuel-sous-junos","blog\u002Fconfiguration-chassis-virtuel-sous-junos","2014-12-15","\u002Fimages\u002Fblog\u002Fconfiguration-chassis-virtuel-sous-junos\u002F1b4814003c.jpg",[4713],{"title":4729,"path":4730,"stem":4731,"date":4732,"cover":4733,"categories":4734,"children":-1},"Le témoignage de ma formation au Greta-Viva5 de Valence : des anecdotes hallucinantes","\u002Fblog\u002Ftemoignage-formation-greta-viva5-valence-des-anecdotes-hallucinantes","blog\u002Ftemoignage-formation-greta-viva5-valence-des-anecdotes-hallucinantes","2014-12-01","\u002Fimages\u002Fblog\u002Ftemoignage-formation-greta-viva5-valence-des-anecdotes-hallucinantes\u002Fc0ef05db34.jpg",[4735],"Évènement",{"title":4737,"path":4738,"stem":4739,"date":4740,"cover":4741,"categories":4742,"children":-1},"Installer CyanogenMod Unofficial sur OnePlus One","\u002Fblog\u002Finstaller-cyanogenmod-unofficial-sur-oneplus-one","blog\u002Finstaller-cyanogenmod-unofficial-sur-oneplus-one","2014-11-24","\u002Fimages\u002Fblog\u002Finstaller-cyanogenmod-unofficial-sur-oneplus-one\u002F83621431fb.png",[4743],"Google",{"title":4745,"path":4746,"stem":4747,"date":4748,"cover":4749,"categories":4750,"children":-1},"Configuration de VLAN avec Junos","\u002Fblog\u002Fconfiguration-vlan-avec-junos","blog\u002Fconfiguration-vlan-avec-junos","2014-11-18","\u002Fimages\u002Fblog\u002Fconfiguration-vlan-avec-junos\u002F1b4814003c.jpg",[4713],[],1786644878025]