Agenda: ex-ganeti-webmgr.htm

File ex-ganeti-webmgr.htm, 40.1 KB (added by admin, 4 years ago)
Line 
1<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2<html xmlns="http://www.w3.org/1999/xhtml">
3<head>
4  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
5  <meta http-equiv="Content-Style-Type" content="text/css" />
6  <meta name="generator" content="pandoc" />
7  <title>Ganeti web manager</title>
8  <style type="text/css">code{white-space: pre;}</style>
9  <link href="data:text/css,%2F%2A%0A%20%20%20%20Buttondown%0A%20%20%20%20A%20Markdown%2FMultiMarkdown%2FPandoc%20HTML%20output%20CSS%20stylesheet%0A%20%20%20%20Author%3A%20Ryan%20Gray%0A%20%20%20%20Date%3A%2015%20Feb%202011%0A%20%20%20%20Revised%3A%2021%20Feb%202012%0A%20%20%20%0A%20%20%20%20General%20style%20is%20clean%2C%20with%20minimal%20re%2Ddefinition%20of%20the%20defaults%20or%20%0A%20%20%20%20overrides%20of%20user%20font%20settings%2E%20The%20body%20text%20and%20header%20styles%20are%20%0A%20%20%20%20left%20alone%20except%20title%2C%20author%20and%20date%20classes%20are%20centered%2E%20A%20Pandoc%20TOC%20%0A%20%20%20%20is%20not%20printed%2C%20URLs%20are%20printed%20after%20hyperlinks%20in%20parentheses%2E%20%0A%20%20%20%20Block%20quotes%20are%20italicized%2E%20Tables%20are%20lightly%20styled%20with%20lines%20above%20%0A%20%20%20%20and%20below%20the%20table%20and%20below%20the%20header%20with%20a%20boldface%20header%2E%20Code%20%0A%20%20%20%20blocks%20are%20line%20wrapped%2E%20%0A%20%0A%20%20%20%20All%20elements%20that%20Pandoc%20and%20MultiMarkdown%20use%20should%20be%20listed%20here%2C%20even%20%0A%20%20%20%20if%20the%20style%20is%20empty%20so%20you%20can%20easily%20add%20styling%20to%20anything%2E%0A%20%20%20%20%0A%20%20%20%20There%20are%20some%20elements%20in%20here%20for%20HTML5%20output%20of%20Pandoc%2C%20but%20I%20have%20not%20%0A%20%20%20%20gotten%20around%20to%20testing%20that%20yet%2E%0A%2A%2F%0A%20%0A%2F%2A%20NOTES%3A%0A%20%0A%20%20%20%20Stuff%20tried%20and%20failed%3A%0A%20%20%20%20%0A%20%20%20%20It%20seems%20that%20specifying%20font%2Dfamily%3Aserif%20in%20Safari%20will%20always%20use%20%0A%20%20%20%20Times%20New%20Roman%20rather%20than%20the%20user%27s%20preferences%20setting%2E%0A%20%20%20%20%0A%20%20%20%20Making%20the%20font%20size%20different%20or%20a%20fixed%20value%20for%20print%20in%20case%20the%20screen%20%0A%20%20%20%20font%20size%20is%20making%20the%20print%20font%20too%20big%3A%20Making%20font%2Dsize%20different%20for%20%0A%20%20%20%20print%20than%20for%20screen%20causes%20horizontal%20lines%20to%20disappear%20in%20math%20when%20using%20%0A%20%20%20%20MathJax%20under%20Safari%2E%0A%2A%2F%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Front%20Matter%20%2D%2D%2D%2D%20%2A%2F%0A%20%0A%2F%2A%20Pandoc%20header%20DIV%2E%20Contains%20%2Etitle%2C%20%2Eauthor%20and%20%2Edate%2E%20Comes%20before%20div%23TOC%2E%20%0A%20%20%20Only%20appears%20if%20one%20of%20those%20three%20are%20in%20the%20document%2E%0A%2A%2F%0A%20%0Adiv%23header%2C%20header%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Put%20border%20on%20bottom%2E%20Separates%20it%20from%20TOC%20or%20body%20that%20comes%20after%20it%2E%20%2A%2F%0A%20%20%20%20border%2Dbottom%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%2Etitle%20%2F%2A%20Pandoc%20title%20header%20%28h1%2Etitle%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20%7D%0A%20%0A%2Eauthor%2C%20%2Edate%20%2F%2A%20Pandoc%20author%28s%29%20and%20date%20headers%20%28h2%2Eauthor%20and%20h3%2Edate%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20Pandoc%20table%20of%20contents%20DIV%20when%20using%20the%20%2D%2Dtoc%20option%2E%0A%20%20%20NOTE%3A%20this%20doesn%27t%20support%20Pandoc%27s%20%2D%2Did%2Dprefix%20option%20for%20%23TOC%20and%20%23header%2E%20%0A%20%20%20Probably%20would%20need%20to%20use%20div%5Bid%24%3D%27TOC%27%5D%20and%20div%5Bid%24%3D%27header%27%5D%20as%20selectors%2E%0A%2A%2F%0A%20%0Adiv%23TOC%2C%20nav%23TOC%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Put%20border%20on%20bottom%20to%20separate%20it%20from%20body%2E%20%2A%2F%0A%20%20%20%20border%2Dbottom%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20div%23TOC%2C%20nav%23TOC%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20Don%27t%20display%20TOC%20in%20print%20%2A%2F%0A%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Headers%20and%20sections%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Ah1%2C%20h2%2C%20h3%2C%20h4%2C%20h5%2C%20h6%0A%7B%0A%20%20%20%20font%2Dfamily%3A%20%22Helvetica%20Neue%22%2C%20Helvetica%2C%20%22Liberation%20Sans%22%2C%20Calibri%2C%20Arial%2C%20sans%2Dserif%3B%20%2F%2A%20Sans%2Dserif%20headers%20%2A%2F%0A%20%0A%20%20%20%20%2F%2A%20font%2Dfamily%3A%20%22Liberation%20Serif%22%2C%20%22Georgia%22%2C%20%22Times%20New%20Roman%22%2C%20serif%3B%20%2F%2A%20Serif%20headers%20%2A%2F%0A%20%0A%20%20%20%20page%2Dbreak%2Dafter%3A%20avoid%3B%20%2F%2A%20Firefox%2C%20Chrome%2C%20and%20Safari%20do%20not%20support%20the%20property%20value%20%22avoid%22%20%2A%2F%0A%7D%0A%20%0A%2F%2A%20Pandoc%20with%20%2D%2Dsection%2Ddivs%20option%20%2A%2F%0A%20%0Adiv%20div%2C%20section%20section%20%2F%2A%20Nested%20sections%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dleft%3A%202em%3B%20%2F%2A%20This%20will%20increasingly%20indent%20nested%20header%20sections%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Ap%20%7B%7D%0A%20%0Ablockquote%0A%20%20%20%20%7B%20%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20%7D%0A%20%0Ali%20%2F%2A%20All%20list%20items%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ali%20%3E%20p%20%2F%2A%20Loosely%20spaced%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dtop%3A%201em%3B%20%2F%2A%20IE%3A%20lack%20of%20space%20above%20a%20%3Cli%3E%20when%20the%20item%20is%20inside%20a%20%3Cp%3E%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Aul%20%2F%2A%20Whole%20unordered%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aul%20li%20%2F%2A%20Unordered%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aol%20%2F%2A%20Whole%20ordered%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Aol%20li%20%2F%2A%20Ordered%20list%20item%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ahr%20%7B%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Some%20span%20elements%20%2D%2D%2D%20%2A%2F%0A%20%0Asub%20%2F%2A%20Subscripts%2E%20Pandoc%3A%20H%7E2%7EO%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Asup%20%2F%2A%20Superscripts%2E%20Pandoc%3A%20The%202%5End%5E%20try%2E%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aem%20%2F%2A%20Emphasis%2E%20Markdown%3A%20%2Aemphasis%2A%20or%20%5Femphasis%5F%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aem%20%3E%20em%20%2F%2A%20Emphasis%20within%20emphasis%3A%20%2AThis%20is%20all%20%2Aemphasized%2A%20except%20that%2A%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dstyle%3A%20normal%3B%0A%20%20%20%20%7D%0A%20%0Astrong%20%2F%2A%20Markdown%20%2A%2Astrong%2A%2A%20or%20%5F%5Fstrong%5F%5F%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Links%20%28anchors%29%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aa%20%2F%2A%20All%20links%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Keep%20links%20clean%2E%20On%20screen%2C%20they%20are%20colored%3B%20in%20print%2C%20they%20do%20nothing%20anyway%2E%20%2A%2F%0A%20%20%20%20text%2Ddecoration%3A%20none%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20screen%0A%20%20%20%20%7B%0A%20%20%20%20a%3Ahover%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20On%20hover%2C%20we%20indicate%20a%20bit%20more%20that%20it%20is%20a%20link%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20text%2Ddecoration%3A%20underline%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20a%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20In%20print%2C%20a%20colored%20link%20is%20useless%2C%20so%20un%2Dstyle%20it%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20color%3A%20black%3B%0A%20%20%20%20%20%20%20%20background%3A%20transparent%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%0A%20%20%20%20a%5Bhref%5E%3D%22http%3A%2F%2F%22%5D%3Aafter%2C%20a%5Bhref%5E%3D%22https%3A%2F%2F%22%5D%3Aafter%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20However%2C%20links%20that%20go%20somewhere%20else%2C%20might%20be%20useful%20to%20the%20reader%2C%0A%20%20%20%20%20%20%20%20%20%20%20so%20for%20http%20and%20https%20links%2C%20print%20the%20URL%20after%20what%20was%20the%20link%20%0A%20%20%20%20%20%20%20%20%20%20%20text%20in%20parens%0A%20%20%20%20%20%20%20%20%2A%2F%0A%20%20%20%20%20%20%20%20content%3A%20%22%20%28%22%20attr%28href%29%20%22%29%20%22%3B%0A%20%20%20%20%20%20%20%20font%2Dsize%3A%2090%25%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Images%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aimg%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Let%20it%20be%20inline%20left%2Fright%20where%20it%20wants%20to%20be%2C%20but%20verticality%20make%20%0A%20%20%20%20%20%20%20it%20in%20the%20middle%20to%20look%20nicer%2C%20but%20opinions%20differ%2C%20and%20if%20in%20a%20multi%2Dline%20%0A%20%20%20%20%20%20%20paragraph%2C%20it%20might%20not%20be%20so%20great%2E%20%0A%20%20%20%20%2A%2F%0A%20%20%20%20vertical%2Dalign%3A%20middle%3B%0A%20%20%20%20%7D%0A%20%0Adiv%2Efigure%20%2F%2A%20Pandoc%20figure%2Dstyle%20image%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Center%20the%20image%20and%20caption%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20auto%3B%0A%20%20%20%20margin%2Dright%3A%20auto%3B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20%7D%0A%20%0Ap%2Ecaption%20%2F%2A%20Pandoc%20figure%2Dstyle%20caption%20within%20div%2Efigure%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Inherits%20div%2Efigure%20props%20by%20default%20%2A%2F%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Code%20blocks%20and%20spans%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Apre%2C%20code%20%0A%20%20%20%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23fdf7ee%3B%0A%20%20%20%20%2F%2A%20BEGIN%20word%20wrap%20%2A%2F%0A%20%20%20%20%2F%2A%20Need%20all%20the%20following%20to%20word%20wrap%20instead%20of%20scroll%20box%20%2A%2F%0A%20%20%20%20%2F%2A%20This%20will%20override%20the%20overflow%3Aauto%20if%20present%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20pre%2Dwrap%3B%20%2F%2A%20css%2D3%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Dmoz%2Dpre%2Dwrap%20%21important%3B%20%2F%2A%20Mozilla%2C%20since%201999%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Dpre%2Dwrap%3B%20%2F%2A%20Opera%204%2D6%20%2A%2F%0A%20%20%20%20white%2Dspace%3A%20%2Do%2Dpre%2Dwrap%3B%20%2F%2A%20Opera%207%20%2A%2F%0A%20%20%20%20word%2Dwrap%3A%20break%2Dword%3B%20%2F%2A%20Internet%20Explorer%205%2E5%2B%20%2A%2F%0A%20%20%20%20%2F%2A%20END%20word%20wrap%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Apre%20%2F%2A%20Code%20blocks%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Distinguish%20pre%20blocks%20from%20other%20text%20by%20more%20than%20the%20font%20with%20a%20background%20tint%2E%20%2A%2F%0A%20%20%20%20padding%3A%200%2E5em%3B%20%2F%2A%20Since%20we%20have%20a%20background%20color%20%2A%2F%0A%20%20%20%20border%2Dradius%3A%205px%3B%20%2F%2A%20Softens%20it%20%2A%2F%0A%20%20%20%20%2F%2A%20Give%20it%20a%20some%20definition%20%2A%2F%0A%20%20%20%20border%3A%201px%20solid%20%23aaa%3B%0A%20%20%20%20%2F%2A%20Set%20it%20off%20left%20and%20right%2C%20seems%20to%20look%20a%20bit%20nicer%20when%20we%20have%20a%20background%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20%200%2E5em%3B%0A%20%20%20%20margin%2Dright%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0A%40media%20screen%0A%20%20%20%20%7B%0A%20%20%20%20pre%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20On%20screen%2C%20use%20an%20auto%20scroll%20box%20for%20long%20lines%2C%20unless%20word%2Dwrap%20is%20enabled%20%2A%2F%0A%20%20%20%20%20%20%20%20white%2Dspace%3A%20pre%3B%0A%20%20%20%20%20%20%20%20overflow%3A%20auto%3B%0A%20%20%20%20%20%20%20%20%2F%2A%20Dotted%20looks%20better%20on%20screen%20and%20solid%20seems%20to%20print%20better%2E%20%2A%2F%0A%20%20%20%20%20%20%20%20border%3A%201px%20dotted%20%23777%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%0Acode%20%2F%2A%20All%20inline%20code%20spans%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Ap%20%3E%20code%2C%20li%20%3E%20code%20%2F%2A%20Code%20spans%20in%20paragraphs%20and%20tight%20lists%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Pad%20a%20little%20from%20adjacent%20text%20%2A%2F%0A%20%20%20%20padding%2Dleft%3A%20%202px%3B%0A%20%20%20%20padding%2Dright%3A%202px%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Ali%20%3E%20p%20code%20%2F%2A%20Code%20span%20in%20a%20loose%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20We%20have%20room%20for%20some%20more%20background%20color%20above%20and%20below%20%2A%2F%0A%20%20%20%20padding%3A%202px%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Math%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aspan%2Emath%20%2F%2A%20Pandoc%20inline%20math%20default%20and%20%2D%2Djsmath%20inline%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%2F%2A%20Tried%20font%2Dstyle%3Aitalic%20here%2C%20and%20it%20messed%20up%20MathJax%20rendering%20in%20some%20browsers%2E%20Maybe%20don%27t%20mess%20with%20at%20all%2E%20%2A%2F%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Emath%20%2F%2A%20Pandoc%20%2D%2Djsmath%20display%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Aspan%2ELaTeX%20%2F%2A%20Pandoc%20%2D%2Dlatexmathml%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0Aeq%20%2F%2A%20Pandoc%20%2D%2Dgladtex%20math%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Tables%20%2D%2D%2D%2D%20%2A%2F%0A%20%0A%2F%2A%20%20A%20clean%20textbook%2Dlike%20style%20with%20horizontal%20lines%20above%20and%20below%20and%20under%20%0A%20%20%20%20the%20header%2E%20Rows%20highlight%20on%20hover%20to%20help%20scanning%20the%20table%20on%20screen%2E%0A%2A%2F%0A%20%0Atable%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dcollapse%3A%20collapse%3B%0A%20%20%20%20border%2Dspacing%3A%200%3B%20%2F%2A%20IE%206%20%2A%2F%0A%20%0A%20%20%20%20border%2Dbottom%3A%202pt%20solid%20%23000%3B%0A%20%20%20%20border%2Dtop%3A%202pt%20solid%20%23000%3B%20%2F%2A%20The%20caption%20on%20top%20will%20not%20have%20a%20bottom%2Dborder%20%2A%2F%0A%20%0A%20%20%20%20%2F%2A%20Center%20%2A%2F%0A%20%20%20%20margin%2Dleft%3A%20auto%3B%0A%20%20%20%20margin%2Dright%3A%20auto%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Athead%20%2F%2A%20Entire%20table%20header%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dbottom%3A%201pt%20solid%20%23000%3B%0A%20%20%20%20background%2Dcolor%3A%20%23eee%3B%20%2F%2A%20Does%20this%20BG%20print%20well%3F%20%2A%2F%0A%20%20%20%20%7D%0A%20%0Atr%2Eheader%20%2F%2A%20Each%20header%20row%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%20%0A%20%0Atbody%20%2F%2A%20Entire%20table%20%20body%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20Table%20body%20rows%20%2A%2F%0A%20%0Atr%20%20%7B%0A%20%20%20%20%7D%0Atr%2Eodd%3Ahover%2C%20tr%2Eeven%3Ahover%20%2F%2A%20Use%20%2Eodd%20and%20%2Eeven%20classes%20to%20avoid%20styling%20rows%20in%20other%20tables%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20background%2Dcolor%3A%20%23eee%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20Odd%20and%20even%20rows%20%2A%2F%0Atr%2Eodd%20%7B%7D%0Atr%2Eeven%20%7B%7D%0A%20%0Atd%2C%20th%20%2F%2A%20Table%20cells%20and%20table%20header%20cells%20%2A%2F%0A%20%20%20%20%7B%20%0A%20%20%20%20vertical%2Dalign%3A%20top%3B%20%2F%2A%20Word%20%2A%2F%0A%20%20%20%20vertical%2Dalign%3A%20baseline%3B%20%2F%2A%20Others%20%2A%2F%0A%20%20%20%20padding%2Dleft%3A%20%20%200%2E5em%3B%0A%20%20%20%20padding%2Dright%3A%20%200%2E5em%3B%0A%20%20%20%20padding%2Dtop%3A%20%20%20%200%2E2em%3B%0A%20%20%20%20padding%2Dbottom%3A%200%2E2em%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20Removes%20padding%20on%20left%20and%20right%20of%20table%20for%20a%20tight%20look%2E%20Good%20if%20thead%20has%20no%20background%20color%2A%2F%0A%2F%2A%0Atr%20td%3Alast%2Dchild%2C%20tr%20th%3Alast%2Dchild%0A%20%20%20%20%7B%0A%20%20%20%20padding%2Dright%3A%200%3B%0A%20%20%20%20%7D%0Atr%20td%3Afirst%2Dchild%2C%20tr%20th%3Afirst%2Dchild%20%0A%20%20%20%20%7B%0A%20%20%20%20padding%2Dleft%3A%200%3B%0A%20%20%20%20%7D%0A%2A%2F%0A%20%0Ath%20%2F%2A%20Table%20header%20cells%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dweight%3A%20bold%3B%20%0A%20%20%20%20%7D%0A%20%0Atfoot%20%2F%2A%20Table%20footer%20%28what%20appears%20here%20if%20caption%20is%20on%20top%3F%29%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0Acaption%20%2F%2A%20This%20is%20for%20a%20table%20caption%20tag%2C%20not%20the%20p%2Ecaption%20Pandoc%20uses%20in%20a%20div%2Efigure%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20caption%2Dside%3A%20top%3B%0A%20%20%20%20border%3A%20none%3B%0A%20%20%20%20font%2Dsize%3A%200%2E9em%3B%0A%20%20%20%20font%2Dstyle%3A%20italic%3B%0A%20%20%20%20text%2Dalign%3A%20center%3B%0A%20%20%20%20margin%2Dbottom%3A%200%2E3em%3B%20%2F%2A%20Good%20for%20when%20on%20top%20%2A%2F%0A%20%20%20%20padding%2Dbottom%3A%200%2E2em%3B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20%2D%2D%2D%2D%20Definition%20lists%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Adl%20%2F%2A%20The%20whole%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%202pt%20solid%20black%3B%0A%20%20%20%20padding%2Dtop%3A%200%2E5em%3B%0A%20%20%20%20border%2Dbottom%3A%202pt%20solid%20black%3B%0A%20%20%20%20%7D%0A%20%0Adt%20%2F%2A%20Definition%20term%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20font%2Dweight%3A%20bold%3B%0A%20%20%20%20%7D%0A%20%0Add%2Bdt%20%2F%2A%202nd%20or%20greater%20term%20in%20the%20list%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%201pt%20solid%20black%3B%0A%20%20%20%20padding%2Dtop%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%20%20%20%0Add%20%2F%2A%20A%20definition%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20margin%2Dbottom%3A%200%2E5em%3B%0A%20%20%20%20%7D%0A%20%0Add%2Bdd%20%2F%2A%202nd%20or%20greater%20definition%20of%20a%20term%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20border%2Dtop%3A%201px%20solid%20black%3B%20%2F%2A%20To%20separate%20multiple%20definitions%20%2A%2F%0A%20%20%20%20%7D%0A%20%20%20%20%0A%2F%2A%20%2D%2D%2D%2D%20Footnotes%20%2D%2D%2D%2D%20%2A%2F%0A%20%0Aa%2Efootnote%2C%20a%2EfootnoteRef%20%7B%20%2F%2A%20Pandoc%2C%20MultiMarkdown%20footnote%20links%20%2A%2F%0A%20%20%20%20font%2Dsize%3A%20small%3B%20%0A%20%20%20%20vertical%2Dalign%3A%20text%2Dtop%3B%0A%7D%0A%20%0Aa%5Bhref%5E%3D%22%23fnref%22%5D%2C%20a%2Ereversefootnote%20%2F%2A%20Pandoc%2C%20MultiMarkdown%2C%20%3F%3F%20footnote%20back%20links%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20a%5Bhref%5E%3D%22%23fnref%22%5D%2C%20a%2Ereversefootnote%20%2F%2A%20Pandoc%2C%20MultiMarkdown%20%2A%2F%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20%2F%2A%20Don%27t%20display%20these%20at%20all%20in%20print%20since%20the%20arrow%20is%20only%20something%20to%20click%20on%20%2A%2F%0A%20%20%20%20%20%20%20%20display%3A%20none%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Efootnotes%20%2F%2A%20Pandoc%20footnotes%20div%20at%20end%20of%20the%20document%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%20%20%20%0Adiv%2Efootnotes%20li%5Bid%5E%3D%22fn%22%5D%20%2F%2A%20A%20footnote%20item%20within%20that%20div%20%2A%2F%0A%20%20%20%20%7B%0A%20%20%20%20%7D%0A%20%0A%2F%2A%20You%20can%20class%20stuff%20as%20%22noprint%22%20to%20not%20print%2E%20%0A%20%20%20Useful%20since%20you%20can%27t%20set%20this%20media%20conditional%20inside%20an%20HTML%20element%27s%20%0A%20%20%20style%20attribute%20%28I%20think%29%2C%20and%20you%20don%27t%20want%20to%20make%20another%20stylesheet%20that%20%0A%20%20%20imports%20this%20one%20and%20adds%20a%20class%20just%20to%20do%20this%2E%0A%2A%2F%0A%20%0A%40media%20print%0A%20%20%20%20%7B%0A%20%20%20%20%2Enoprint%0A%20%20%20%20%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20display%3Anone%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A" rel="stylesheet" type="text/css" />
10</head>
11<body>
12<div id="header">
13<h1 class="title">Ganeti web manager</h1>
14</div>
15<div id="TOC">
16<ul>
17<li><a href="#objectives"><span class="toc-section-number">1</span> Objectives</a></li>
18<li><a href="#choose-server"><span class="toc-section-number">2</span> Choose server</a></li>
19<li><a href="#choose-hostname"><span class="toc-section-number">3</span> Choose hostname</a></li>
20<li><a href="#installation"><span class="toc-section-number">4</span> Installation</a><ul>
21<li><a href="#install-dependencies"><span class="toc-section-number">4.1</span> Install dependencies</a></li>
22<li><a href="#unpack-and-build-the-source"><span class="toc-section-number">4.2</span> Unpack and build the source</a></li>
23<li><a href="#create-a-configuration-file"><span class="toc-section-number">4.3</span> Create a configuration file</a></li>
24<li><a href="#activate-environment"><span class="toc-section-number">4.4</span> Activate environment</a></li>
25<li><a href="#create-a-database"><span class="toc-section-number">4.5</span> Create a database</a></li>
26<li><a href="#populate-the-database"><span class="toc-section-number">4.6</span> Populate the database</a></li>
27<li><a href="#build-files"><span class="toc-section-number">4.7</span> Build files</a></li>
28<li><a href="#set-permissions"><span class="toc-section-number">4.8</span> Set permissions</a></li>
29<li><a href="#install-web-server"><span class="toc-section-number">4.9</span> Install web server</a></li>
30<li><a href="#enable-autostart-for-the-vnc-auth-proxy"><span class="toc-section-number">4.10</span> Enable autostart for the VNC auth proxy</a></li>
31<li><a href="#test"><span class="toc-section-number">4.11</span> Test</a></li>
32</ul></li>
33<li><a href="#adding-clusters"><span class="toc-section-number">5</span> Adding clusters</a><ul>
34<li><a href="#create-a-rapi-key"><span class="toc-section-number">5.1</span> Create a RAPI key</a></li>
35<li><a href="#add-cluster-in-web-interface"><span class="toc-section-number">5.2</span> Add cluster in web interface</a></li>
36<li><a href="#console-issues"><span class="toc-section-number">5.3</span> Console issues</a></li>
37</ul></li>
38<li><a href="#using-snf-image-with-ganeti-web-manager"><span class="toc-section-number">6</span> Using snf-image with Ganeti Web Manager</a></li>
39<li><a href="#troubleshooting"><span class="toc-section-number">7</span> Troubleshooting</a><ul>
40<li><a href="#errors-seen-at-the-console"><span class="toc-section-number">7.1</span> Errors seen at the console</a></li>
41<li><a href="#errors-seen-in-the-browser"><span class="toc-section-number">7.2</span> Errors seen in the browser</a></li>
42</ul></li>
43</ul>
44</div>
45<h1 id="objectives"><a href="#objectives"><span class="header-section-number">1</span> Objectives</a></h1>
46<p>Install and use the Ganeti Web Manager.</p>
47<h1 id="choose-server"><a href="#choose-server"><span class="header-section-number">2</span> Choose server</a></h1>
48<p>You could choose to install GWM on a server separate from your Ganeti nodes, or you could install it inside a VM. If it is installed in a VM it needs to be connected to your management network or able to route traffic there.</p>
49<p>It's not a good idea to install it directly on the host server, but for the purposes of this host it is sufficient; or if you have a running Debian VM instance you can install it there.</p>
50<h1 id="choose-hostname"><a href="#choose-hostname"><span class="header-section-number">3</span> Choose hostname</a></h1>
51<p>Ganeti web manager is best installed in its own virtual host with its own domain name. In this example we will use &quot;hostX.ws.nsrc.org&quot;, but replace it with your own hostname.</p>
52<p>The DNS must be set up so that this name resolves to the IP address of the server running ganeti web manager. (If you are installing into a VM instance, check with the instructors that the IP you are using has a resolvable hostname in the DNS)</p>
53<h1 id="installation"><a href="#installation"><span class="header-section-number">4</span> Installation</a></h1>
54<p>Ganeti Web Manager is a python/django web application, and is a little tricky to install and deploy the first time.</p>
55<p>As there is no installable package, you will have to install from source. These instructions are suitable for an Ubuntu or Debian host.</p>
56<p>Note: don't follow the instructions on the <a href="https://code.osuosl.org/projects/51/wiki/Install">osuosl.org wiki</a> as these are stale. The current documentation is at</p>
57<p><a href="http://ganeti-webmgr.readthedocs.org/en/develop/getting_started/installing.html">readthedocs.org</a></p>
58<p>The instructions below are for Ganeti Web Manager v. 0.11rc1.</p>
59<p>For this exercise you should be root. It's also helpful for debugging if you log your entire session into a file.</p>
60<pre><code>$ sudo -s
61# script install.log
62# </code></pre>
63<p>A transcript of the subsequent session is written to install.log until you type <code>exit</code>.</p>
64<h2 id="install-dependencies"><a href="#install-dependencies"><span class="header-section-number">4.1</span> Install dependencies</a></h2>
65<pre><code># apt-get install python-virtualenv wget sudo git libffi-dev python-dev \
66 mysql-server libmysqlclient-dev libssl-dev lsb-release</code></pre>
67<p>If this is the first time you've installed mysql you'll be asked to choose a mysql root password. Use the class password for this.</p>
68<h2 id="unpack-and-build-the-source"><a href="#unpack-and-build-the-source"><span class="header-section-number">4.2</span> Unpack and build the source</a></h2>
69<p>Fetch the ganeti-webmgr source tarball, preferably from a local copy to save time and bandwidth.</p>
70<p>Note: In case the file isn't available for download from <code>www.ws.nsrc.org</code>, the original file can be found at:</p>
71<p>https://code.osuosl.org/attachments/download/3387/ganeti-webmgr-0.11.0-rc1.tar.gz</p>
72<pre><code># cd /usr/local/src
73# mkdir gwm
74# cd gwm
75# wget http://www.ws.nsrc.org/downloads/ganeti/ganeti-webmgr-0.11.0-rc1.tar.gz
76# tar -xvzf ganeti-webmgr-0.11.0-rc1.tar.gz
77# ./scripts/setup.sh -D mysql</code></pre>
78<p>This last step will take a while as dependencies are downloaded and installed.</p>
79<h2 id="create-a-configuration-file"><a href="#create-a-configuration-file"><span class="header-section-number">4.3</span> Create a configuration file</a></h2>
80<pre><code># cd /opt/ganeti_webmgr/config</code></pre>
81<p>We need to generate two random keys to put in the configuration file we're about to create.</p>
82<p>In another window (terminal), run the following commands, copy the output, and paste them into the config at the places indicated below.</p>
83<p>These random strings don't need to be remembered or stored anywhere else.</p>
84<pre><code># head -c18 /dev/urandom | base64           # this will be random string 1
85# head -c18 /dev/urandom | base64           # this will be random string 2</code></pre>
86<p>ganeti webmgr also needs its own password to talk to the database; we'll use the class password for this.</p>
87<p>Create the file <code>config.yml</code></p>
88<pre><code>DATABASES:
89   default:
90        ENGINE: django.db.backends.mysql
91        NAME:   ganeti_webmgr
92        USER:   ganeti_webmgr
93        PASSWORD: '&lt;class_password&gt;'
94
95SECRET_KEY: '&lt;randomstring1&gt;'       # Use random string 1
96WEB_MGR_API_KEY: '&lt;randomstring2&gt;'  # Use random string 2
97
98VNC_PROXY: 'hostX.ws.nsrc.org:8888'
99
100SITE_DOMAIN: 'hostX.ws.nsrc.org'</code></pre>
101<h2 id="activate-environment"><a href="#activate-environment"><span class="header-section-number">4.4</span> Activate environment</a></h2>
102<p>We now need to &quot;activate&quot; the virtual environment where ganeti_webmgr is installed:</p>
103<pre><code># source /opt/ganeti_webmgr/bin/activate</code></pre>
104<p>The prompt changes to:</p>
105<pre><code>(ganeti_webmgr)root@ganeti:~#</code></pre>
106<p>... to keep things easy to read, we just write <code>#</code> below.</p>
107<p>Type this command as well to set an environment variable:</p>
108<pre><code># export DJANGO_SETTINGS_MODULE=&quot;ganeti_webmgr.ganeti_web.settings&quot;</code></pre>
109<h2 id="create-a-database"><a href="#create-a-database"><span class="header-section-number">4.5</span> Create a database</a></h2>
110<p>Connect to the database as the root user (you will be prompted for the database root password, which you created earlier)</p>
111<pre><code># mysql -u root -p</code></pre>
112<p>Now create a database and give access to a new user with a password of your choice. This is the password that the application will use to connect to the database. For security it should be different to the root password. For this lab, you may use the usual class password, it is up to you.</p>
113<pre><code>mysql&gt; create database ganeti_webmgr;
114mysql&gt; grant all on ganeti_webmgr.* to 'ganeti_webmgr'@'localhost'
115       identified by '&lt;class_password&gt;';
116mysql&gt; exit;</code></pre>
117<p>Test that the database has been created properly:</p>
118<pre><code># mysql -u ganeti_webmgr -p ganeti_webmgr
119Enter password:</code></pre>
120<p>Type the password you set.</p>
121<p>You should be back at the database prompt:</p>
122<pre><code>mysql&gt; exit</code></pre>
123<h2 id="populate-the-database"><a href="#populate-the-database"><span class="header-section-number">4.6</span> Populate the database</a></h2>
124<p>This creates the tables and also creates the first username/password which you will use to login to the web interface later.</p>
125<pre><code># cd /opt/ganeti_webmgr
126# django-admin.py syncdb --migrate</code></pre>
127<p>You should see something similar:</p>
128<pre><code>[ ... output about creating tables ...]
129
130You just installed Django's auth system, which means you don't have any
131superusers defined.
132Would you like to create one now? (yes/no):   Answer `yes`
133Username (leave blank to use 'root'):         Answer `admin`
134E-mail address:                               Answer with your own E-mail address
135Password:                                     Password you will use to login to web interface
136Password (again): </code></pre>
137<p>If there is a problem with creating the superuser, then you can retry just that step using:</p>
138<pre><code># cd /opt/ganeti_webmgr
139# source /opt/ganeti_webmgr/bin/activate
140# django-admin.py createsuperuser</code></pre>
141<h2 id="build-files"><a href="#build-files"><span class="header-section-number">4.7</span> Build files</a></h2>
142<p>Continue with the following commands:</p>
143<pre><code># django-admin.py rebuild_index
144
145WARNING: This will irreparably remove EVERYTHING from your search index.
146Your choices after this are to restore from backups or rebuild via the `rebuild_index` command.
147Are you sure you wish to continue? [y/N] y
148...</code></pre>
149<p>Then:</p>
150<pre><code># django-admin.py collectstatic
151
152You have requested to collect static files at the destination
153location as specified in your settings.
154
155This will overwrite existing files!
156Are you sure you want to do this?
157
158Type 'yes' to continue, or 'no' to cancel: yes</code></pre>
159<h2 id="set-permissions"><a href="#set-permissions"><span class="header-section-number">4.8</span> Set permissions</a></h2>
160<p>The <code>whoosh_index</code> directory created by rebuild_index needs to be writable by Apache.</p>
161<pre><code># chown -R www-data:www-data /opt/ganeti_webmgr/whoosh_index</code></pre>
162<h2 id="install-web-server"><a href="#install-web-server"><span class="header-section-number">4.9</span> Install web server</a></h2>
163<pre><code># apt-get install apache2 libapache2-mod-wsgi</code></pre>
164<p>In the following steps, remember to change <code>hostX.ws.nsrc.org</code> to the hostname you are using for the ganeti web manager.</p>
165<p>Create file <code>/etc/apache2/sites-available/ganeti_webmgr</code> containing:</p>
166<pre><code>&lt;VirtualHost *:80&gt;
167
168  ServerName hostX.ws.nsrc.org
169
170  WSGIDaemonProcess ganeti_webmgr processes=4 threads=1 python-path=/opt/ganeti_webmgr/lib/python2.7/site-packages
171  WSGIProcessGroup ganeti_webmgr
172  WSGIScriptAlias / /opt/ganeti_webmgr/lib/python2.7/site-packages/ganeti_webmgr/ganeti_web/wsgi.py
173
174  ErrorLog /var/log/apache2/ganeti-error.log
175  CustomLog /var/log/apache2/ganeti-access.log common
176
177  Alias /static/ /opt/ganeti_webmgr/collected_static/
178
179  &lt;Directory /opt/ganeti_webmgr/collected_static&gt;
180    Order deny,allow
181    Allow from all
182  &lt;/Directory&gt;
183
184  &lt;Directory /opt/ganeti_webmgr&gt;
185    &lt;Files wsgi.py&gt;
186      Order allow,deny
187      Allow from all
188    &lt;/Files&gt;
189  &lt;/Directory&gt;
190
191&lt;/VirtualHost&gt;</code></pre>
192<p>Enable the virtual host:</p>
193<pre><code># a2ensite ganeti_webmgr
194# service apache2 reload</code></pre>
195<h2 id="enable-autostart-for-the-vnc-auth-proxy"><a href="#enable-autostart-for-the-vnc-auth-proxy"><span class="header-section-number">4.10</span> Enable autostart for the VNC auth proxy</a></h2>
196<pre><code># cd /usr/local/src/gwm
197# cp scripts/vncauthproxy/init-ubuntu /etc/init.d/vncauthproxy
198# update-rc.d vncauthproxy defaults</code></pre>
199<pre><code># service vncauthproxy start</code></pre>
200<p>You should see a warning about limited TLS support, then:</p>
201<pre><code>Daemon started successfully</code></pre>
202<h2 id="test"><a href="#test"><span class="header-section-number">4.11</span> Test</a></h2>
203<p>Point web browser at <a href="http://hostX.ws.nsrc.org/">http://hostX.ws.nsrc.org/</a></p>
204<p>If you just get &quot;It works!&quot; then disable the default site:</p>
205<pre><code># a2dissite default
206# service apache2 reload</code></pre>
207<p>then try again. You should get the Ganeti web manager login page.</p>
208<p>If, at this point, things don't work, jump straight down to the <a href="#troubleshooting">Troubleshooting</a> section.</p>
209<h1 id="adding-clusters"><a href="#adding-clusters"><span class="header-section-number">5</span> Adding clusters</a></h1>
210<p>If everything works, you should get a login page where you can login with the admin username and password you created earlier. So you now want to connect to the cluster(s) you wish to manage.</p>
211<h2 id="create-a-rapi-key"><a href="#create-a-rapi-key"><span class="header-section-number">5.1</span> Create a RAPI key</a></h2>
212<p>You need to set up a password for ganeti_webmgr to talk to the ganeti cluster daemons using the ganeti remote API (RAPI).</p>
213<p>On the ganeti master node, generate a strong random password like this:</p>
214<pre><code># head -c18 /dev/urandom | base64
2150GReg6zUJqIGZ77FkK7+Qiua</code></pre>
216<p>Take a careful note of this raw password, e.g. by pasting it into a file on your laptop, as you will need to enter it into ganeti web manager.</p>
217<p>Now take a specially-formatted hash of this password (use your random password in place of 0GReg...):</p>
218<pre><code># echo -n 'ganeti_webmgr:Ganeti Remote API:0GReg6zUJqIGZ77FkK7+Qiua' | openssl md5
219
220&lt;&lt; the response will be something like this &gt;&gt;
221(stdin)= 2e6d881bf6a705413bf6a88a051af17e</code></pre>
222<p>Finally, as root create a file <code>/var/lib/ganeti/rapi/users</code> containing this one line (use your hash in place of 2e6d8...)</p>
223<pre><code>ganeti_webmgr {HA1}2e6d881bf6a705413bf6a88a051af17e write</code></pre>
224<p>and replicate it to the other nodes:</p>
225<pre><code># gnt-cluster copyfile /var/lib/ganeti/rapi/users</code></pre>
226<p>You don't need to remember this hash, only the original random password.</p>
227<h2 id="add-cluster-in-web-interface"><a href="#add-cluster-in-web-interface"><span class="header-section-number">5.2</span> Add cluster in web interface</a></h2>
228<ul>
229<li>Click on &quot;Clusters&quot;, &quot;Add Cluster&quot;</li>
230<li>Hostname: gntN.ws.nsrc.org
231<ul>
232<li>Username: ganeti_webmgr</li>
233<li>Password: 0GReg6zUJqIGZ77FkK7+Qiua (i.e. the RAPI password you created)</li>
234<li>(It's possible to leave username and password blank, but then you will only have read-only access to the cluster)</li>
235</ul></li>
236<li>Leave the rest as defaults and click &quot;Add&quot;</li>
237</ul>
238<p>If the page doesn't refresh, click on &quot;Clusters&quot; in the left menu again, then click on the name of you cluster. You should now see an overview of the cluster details.</p>
239<p>Click on the &quot;Refresh&quot; button to update all the information in the ganeti web manager database (this may be necessary if some changes to the cluster were made via the gnt command line)</p>
240<p>Click on the &quot;Nodes&quot; tab to see the state of the individual nodes in the cluster, and the &quot;Virtual Machines&quot; tab to see VMs.</p>
241<h2 id="console-issues"><a href="#console-issues"><span class="header-section-number">5.3</span> Console issues</a></h2>
242<p>If you cannot get the console to work in the web interface, it may be because you have set a VNC password. If you intend to use the ganeti web manager for console access, you should turn this off.</p>
243<p>On your cluster master:</p>
244<pre><code>gnt-cluster modify -H kvm:vnc_password_file=,vnc_bind_address=</code></pre>
245<h1 id="using-snf-image-with-ganeti-web-manager"><a href="#using-snf-image-with-ganeti-web-manager"><span class="header-section-number">6</span> Using snf-image with Ganeti Web Manager</a></h1>
246<p>With snf-image 0.15.1 and later you can define OS variants such as <code>snf-image+wheezy</code> which can be selected from the drop-down in the GWM instance creation wizard.</p>
247<p>Here's a sample file for <code>wheezy</code>, found in <code>/etc/ganeti/snf-image/variants/wheezy.conf</code>. You may have created such a file on your cluster nodes during the <code>snf-image</code> lab.</p>
248<pre><code>IMG_PASSWD=abc123
249IMG_FORMAT=diskdump
250IMG_ID=debian_base-7.0-x86_64
251IMG_PROPERTIES='{&quot;OSFAMILY&quot;:&quot;linux&quot;,&quot;ROOT_PARTITION&quot;:&quot;1&quot;,&quot;USERS&quot;:&quot;root&quot;}'</code></pre>
252<p>Create one of these for each available OS type. You will also need to edit <code>/etc/ganeti/snf-image/variants.list</code> to list your available variants.</p>
253<p>A <a href="https://github.com/grnet/snf-image/issues/36">future version of snf-image</a> will allow you to store a hashed version of the password instead of cleartext:</p>
254<pre><code>IMG_PASSWD_HASH='$1$zzzz$2H9FclhReiwMQ4x.16GH0/'</code></pre>
255<h1 id="troubleshooting"><a href="#troubleshooting"><span class="header-section-number">7</span> Troubleshooting</a></h1>
256<p>Things may not have gone smoothly! If you get an error when you try to access Ganeti Web Manager in the browser, take a look at the steps below.</p>
257<h2 id="errors-seen-at-the-console"><a href="#errors-seen-at-the-console"><span class="header-section-number">7.1</span> Errors seen at the console</a></h2>
258<ul>
259<li><p>If you get a python error involving AES keys then ensure that the two random keys you generated in <code>config.yml</code> are exactly 16, 24 or 32 characters long.</p></li>
260<li><p>If you get a python error about getlocale returning null then try typing</p>
261<pre><code>export LANG=en_US</code></pre>
262<p>and then re-run the command which gave the error.</p></li>
263<li><p>Other locale errors can be fixed by:</p>
264<pre><code>apt-get install locales
265vi /etc/locale.gen   # uncomment the line &quot;en_US.UTF-8 UTF-8&quot; and save
266locale-gen
267update-locale LANG=&quot;en_US.UTF-8&quot; LANGUAGE=&quot;en_US:en&quot;</code></pre></li>
268<li><p>If you forget the mysql password which you gave to the ganeti_webmgr account, you can reset it using the mysql root password.</p>
269<pre><code># mysql -u root -p
270&lt;&lt; enter the mysql root password &gt;&gt;
271
272mysql&gt; set password for 'ganeti_webmgr'@'localhost' = PASSWORD('SomePassWord');
273mysql&gt; exit;</code></pre>
274<p>If you have forgotten the mysql root password, follow <a href="http://dev.mysql.com/doc/refman/5.1/en/resetting-permissions.html#resetting-permissions-generic">these instructions</a></p></li>
275</ul>
276<h2 id="errors-seen-in-the-browser"><a href="#errors-seen-in-the-browser"><span class="header-section-number">7.2</span> Errors seen in the browser</a></h2>
277<ul>
278<li><p>If you get &quot;Internal Server Error&quot; then start by looking at <code>/var/log/apache2/ganeti-error.log</code> - the problem may be with the length of the SECRET_KEY and WEB_MGR_API_KEY keys, which must be 16, 24 or 32 characters as stated above.</p></li>
279<li><p>If you still get the default webserver page, then edit <code>/etc/apache2/sites-available/default</code> and insert the following line after <code>&lt;VirtualHost *:80&gt;</code></p>
280<pre><code>ServerName localhost</code></pre>
281<p>Then reload apache (<code>service apache2 reload</code>)</p></li>
282<li><p>If you get an error involving sqlite3 then you probably forgot to change the ENGINE value in <code>config.yml</code>. Go back, change this setting, then re-run the commands under the heading &quot;Populate the database&quot;</p></li>
283<li><p>If you get a login page but the username/password does not work, you can (re)create the user account using</p>
284<pre><code># cd /opt/ganeti_webmgr
285# django-admin.py createsuperuser</code></pre></li>
286</ul>
287<p>Note: consult <a href="http://ganeti-webmgr.readthedocs.org/en/develop/getting_started/configuring.html">the configuration settings page</a> for a list of supported settings you can adjust on Ganeti Web Manager.</p>
288</body>
289</html>