Track2Virt: ex-ganetimgr.htm

File ex-ganetimgr.htm, 37.4 KB (added by Brian Candler, 6 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>Installing Ganeti Manager (ganetimgr)</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">Installing Ganeti Manager (ganetimgr)</h1>
14</div>
15<div id="TOC">
16<ul>
17<li><a href="#install-ganeti-manager-ganetimgr"><span class="toc-section-number">1</span> Install Ganeti Manager (ganetimgr)</a><ul>
18<li><a href="#run-this-as-root"><span class="toc-section-number">1.1</span> Run this as root</a></li>
19<li><a href="#install-required-packages"><span class="toc-section-number">1.2</span> Install required packages</a></li>
20<li><a href="#enable-beanstalkd"><span class="toc-section-number">1.3</span> Enable beanstalkd</a></li>
21<li><a href="#create-database"><span class="toc-section-number">1.4</span> Create database</a></li>
22<li><a href="#check-out-the-current-version-of-ganetimgr"><span class="toc-section-number">1.5</span> Check out the current version of Ganetimgr</a><ul>
23<li><a href="#copy-the-default-settings-for-ganetimgr-end-edit-them"><span class="toc-section-number">1.5.1</span> Copy the default settings for ganetimgr end edit them</a></li>
24</ul></li>
25<li><a href="#populate-the-database"><span class="toc-section-number">1.6</span> Populate the database</a></li>
26<li><a href="#create-the-admin-interface-page"><span class="toc-section-number">1.7</span> Create the admin interface page</a></li>
27<li><a href="#start-the-watcher-process"><span class="toc-section-number">1.8</span> Start the watcher process</a></li>
28<li><a href="#create-a-configuration-for-gunicorn"><span class="toc-section-number">1.9</span> Create a configuration for gunicorn</a></li>
29<li><a href="#restart-gunicorn"><span class="toc-section-number">1.10</span> Restart gunicorn</a></li>
30<li><a href="#create-an-nginx-configuration"><span class="toc-section-number">1.11</span> Create an Nginx configuration</a></li>
31<li><a href="#vnc-proxy"><span class="toc-section-number">1.12</span> VNC proxy</a></li>
32</ul></li>
33<li><a href="#create-rapi-user"><span class="toc-section-number">2</span> Create RAPI user</a></li>
34<li><a href="#navigate-to-the-ganetimgr-web-interface."><span class="toc-section-number">3</span> Navigate to the ganetimgr web interface.</a></li>
35<li><a href="#additional-notes"><span class="toc-section-number">4</span> Additional notes</a><ul>
36<li><a href="#whats-missing"><span class="toc-section-number">4.1</span> What's missing ?</a></li>
37<li><a href="#why-we-had-to-install-vncauthproxy-from-a-pip-package"><span class="toc-section-number">4.2</span> Why we had to install VNCAuthProxy from a pip package:</a></li>
38<li><a href="#issues-with-vnc-consoles-and-using-etchosts-on-ganetimgr"><span class="toc-section-number">4.3</span> Issues with VNC consoles and using <code>/etc/hosts</code> on ganetimgr</a></li>
39</ul></li>
40</ul>
41</div>
42<!-- NOTE: This document has had a number of updates to match latest
43ganetimgr installation instructions, but has not been fully tested -->
44
45<h1 id="install-ganeti-manager-ganetimgr"><a href="#install-ganeti-manager-ganetimgr"><span class="header-section-number">1</span> Install Ganeti Manager (ganetimgr)</a></h1>
46<p>Note: This is partly based on the instructions at <a href="https://ganetimgr.readthedocs.org/en/stable/install.html">https://ganetimgr.readthedocs.org/en/stable/install.html</a> with some modifications.</p>
47<h2 id="run-this-as-root"><a href="#run-this-as-root"><span class="header-section-number">1.1</span> Run this as root</a></h2>
48<p>Most of the commands below will require root access, so we'll start by going to the root user (use su or sudo)</p>
49<pre><code>$ sudo -s
50Password:
51
52#</code></pre>
53<h2 id="install-required-packages"><a href="#install-required-packages"><span class="header-section-number">1.2</span> Install required packages</a></h2>
54<pre><code># apt-get install git nginx mysql-server gunicorn python-gevent \
55    redis-server beanstalkd</code></pre>
56<p>When prompted for a password for the mysql root user, pick one and remember it. Continue to install further packages:</p>
57<pre><code># apt-get install python-mysqldb python-django python-redis \
58    python-django-south python-django-registration python-paramiko \
59    python-simplejson python-daemon python-setproctitle python-pycurl \
60    python-recaptcha python-ipaddr python-bs4 python-requests \
61    python-markdown
62# apt-get install python-memcache memcached</code></pre>
63<h2 id="enable-beanstalkd"><a href="#enable-beanstalkd"><span class="header-section-number">1.3</span> Enable beanstalkd</a></h2>
64<p>Edit <code>/etc/default/beanstalkd</code> and uncomment the following line:</p>
65<pre><code>START=yes</code></pre>
66<p>Save and exit the file, then run</p>
67<pre><code># service beanstalkd start</code></pre>
68<h2 id="create-database"><a href="#create-database"><span class="header-section-number">1.4</span> Create database</a></h2>
69<pre><code># mysql -u root -p
70Enter password: &lt;mysql root passwork picked earlier here&gt;
71
72mysql&gt; CREATE DATABASE ganetimgr CHARACTER SET utf8;
73mysql&gt; CREATE USER 'ganetimgr'@'localhost' IDENTIFIED BY '&lt;PICK_A_PASSWORD_FOR_GANETIMGR_DB_USER&gt;';
74mysql&gt; GRANT ALL PRIVILEGES ON ganetimgr.* TO 'ganetimgr';
75mysql&gt; flush privileges;
76mysql&gt; exit</code></pre>
77<p>Test that the database created works</p>
78<pre><code># mysql -u ganetimgr -p ganetimgr
79Enter password: &lt;password_for_ganetimgr_db_user&gt;
80
81mysql&gt; exit</code></pre>
82<h2 id="check-out-the-current-version-of-ganetimgr"><a href="#check-out-the-current-version-of-ganetimgr"><span class="header-section-number">1.5</span> Check out the current version of Ganetimgr</a></h2>
83<pre><code># mkdir /srv/www
84# mkdir /var/log/ganetimgr
85# cd /srv/www
86# git clone https://code.grnet.gr/git/ganetimgr
87# cd ganetimgr
88# pip install -r requirements.txt</code></pre>
89<p>(Note: at the time of version the 'stable' branch of ganetimgr did not include the <code>requirements.txt</code> file, so this is using the 'master' branch)</p>
90<h3 id="copy-the-default-settings-for-ganetimgr-end-edit-them"><a href="#copy-the-default-settings-for-ganetimgr-end-edit-them"><span class="header-section-number">1.5.1</span> Copy the default settings for ganetimgr end edit them</a></h3>
91<pre><code># cd ganetimgr
92# cp settings.py.dist settings.py
93# cp urls.py.dist urls.py</code></pre>
94<pre><code># editor settings.py</code></pre>
95<p>The following changes will need to be made</p>
96<p>Find the section:</p>
97<pre><code>ADMINS = (
98    # ('Your Name', 'your_email@domain.com'),
99)</code></pre>
100<p>Change the line above, adding and entry for the main admin user, for example:</p>
101<pre><code>('admin','your@email.address'),</code></pre>
102<p>Next, find the line:</p>
103<pre><code>'ENGINE' : 'django.db.backends.',</code></pre>
104<p>And change it to:</p>
105<pre><code>'ENGINE' : 'django.db.backends.mysql'</code></pre>
106<p>This tells the Django application framework that we'll be using MySQL as a backend.</p>
107<p>Next, set the NAME, USER and PASSWORD to those of the database you created earlier:</p>
108<pre><code>'NAME' : 'ganetimgr',            # Or path to database file if using sqlite3.
109'USER' : 'ganetimgr                       # Not used with sqlite3.
110'PASSWORD' : '&lt;PASSWORD_PICKED_EARLIER&gt;', # Not used with sqlite3.</code></pre>
111<p>Set TIME_ZONE to your location, for instance:</p>
112<pre><code>TIME_ZONE = 'Africa/Nairobi'</code></pre>
113<p>Next, find the section:</p>
114<pre><code>SECRET_KEY = &lt;CHANGE_ME&gt;</code></pre>
115<p>And change it to a random string, for example:</p>
116<pre><code>SECRET_KEY = 'wlj84oaliehgzi48ol9qo3ijhesrbykjdzn,.38h,u4gbrg'</code></pre>
117<p>Please, don't copy the above key! Generate your own!</p>
118<p>Next, find <code>SERVER_EMAIL</code> and <code>DEFAULT_FROM_EMAIL</code> and set them accordingly, for example:</p>
119<pre><code>SERVER_EMAIL = &quot;no-reply@ganetimgrX.virt.nsrc.org&quot;
120DEFAULT_FROM_EMAIL = &quot;no-reply@ganetimgrX.virt.nsrc.org&quot;</code></pre>
121<p>Comment out <code>COLLECTD_URL</code>:</p>
122<pre><code>#COLLECTD_URL = &quot;http://stats.example.com&quot;</code></pre>
123<p>Find the section concerning the websockets console and change it as follows:</p>
124<pre><code>WEBSOCK_VNC_ENABLED = True
125NOVNC_PROXY = &quot;ganetimgrX.virt.nsrc.org:8888&quot;
126NOVNC_USE_TLS = False</code></pre>
127<p>(since we have no valid certificate)</p>
128<p>Optionally, find the BRANDING section and update it with the information for your organization.</p>
129<p>You could update the file <code>/srv/www/ganetimgr/static/branding/logo.png</code> if you want to change the default organization logo in the Ganeti Manager interface.</p>
130<h2 id="populate-the-database"><a href="#populate-the-database"><span class="header-section-number">1.6</span> Populate the database</a></h2>
131<p>Next it's time to get the database populated and create a user.</p>
132<pre><code># cd /srv/www/ganetimgr
133# python manage.py syncdb --noinput</code></pre>
134<p>If everything goes well some output about tables being created will scroll past, and end with:</p>
135<pre><code>Not synced (use migrations):
136...
137(use ./manage.py migrate to migrate these)</code></pre>
138<p>This is normal - you now need to run:</p>
139<pre><code># python manage.py migrate</code></pre>
140<p>Enter &quot;yes&quot; if asked to delete stale content.</p>
141<p>Again, some output will flash by. It should end with:</p>
142<pre><code>...
143 - Loading initial data for oauth2_provider.
144Installed 0 object(s) from 0 fixture(s)</code></pre>
145<p>Now, let's create a superuser:</p>
146<pre><code># python manage.py createsuperuser</code></pre>
147<p>Here, we'll create an <code>admin</code> user, so at the question:</p>
148<pre><code>Username (leave blank to use 'root'):</code></pre>
149<p>Enter <code>admin</code></p>
150<p>Next, you'll be prompted for an email address. Here, you can enter your email address, although for testing it might be better to start by using the mail address of the local user, <code>root@ganetimgrX.virt.nsrc.org</code>.</p>
151<p>Finally, you'll be asked to provide a password. Don't use something too easy to guess when deploying this in production!</p>
152<p>If all goes well, you'll see:</p>
153<pre><code>Superuser created successfully.</code></pre>
154<h2 id="create-the-admin-interface-page"><a href="#create-the-admin-interface-page"><span class="header-section-number">1.7</span> Create the admin interface page</a></h2>
155<p>The next command creates the pages that will be displayed in the administrative interface:</p>
156<pre><code># cd /srv/www/ganetimgr
157# python manage.py collectstatic</code></pre>
158<p>You will be prompted:</p>
159<pre><code>This will overwrite existing files!
160Are you sure you want to do this?
161
162Type 'yes' to continue, or 'no' to cancel:</code></pre>
163<p>Answer <code>yes</code> and press <code>&lt;enter&gt;</code>.</p>
164<h2 id="start-the-watcher-process"><a href="#start-the-watcher-process"><span class="header-section-number">1.8</span> Start the watcher process</a></h2>
165<p>This is responsible for tracking the state of jobs (tasks)</p>
166<pre><code># ./watcher.py</code></pre>
167<p>Note: we'll have to remember to have <code>watcher.py</code> automatically be started a boot time.</p>
168<h2 id="create-a-configuration-for-gunicorn"><a href="#create-a-configuration-for-gunicorn"><span class="header-section-number">1.9</span> Create a configuration for gunicorn</a></h2>
169<p><code>gunicorn</code> is a python web server, which will run the Ganeti Manager application.</p>
170<p>Create the configuration by editing the file <code>/etc/gunicorn.d/ganetimgr</code>, and copy paste the lines below:</p>
171<pre><code>CONFIG = {
172    'mode': 'django',
173    'working_dir': '/srv/www/ganetimgr',
174    'user': 'www-data',
175    'group': 'www-data',
176    'args': (
177        '--bind=127.0.0.1:8088',
178        '--workers=2',
179        '--worker-class=egg:gunicorn#gevent',
180        '--timeout=30',
181        '--log-file=/var/log/ganetimgr/ganetimgr.log',
182    ),
183}</code></pre>
184<h2 id="restart-gunicorn"><a href="#restart-gunicorn"><span class="header-section-number">1.10</span> Restart gunicorn</a></h2>
185<pre><code># service gunicorn restart</code></pre>
186<h2 id="create-an-nginx-configuration"><a href="#create-an-nginx-configuration"><span class="header-section-number">1.11</span> Create an Nginx configuration</a></h2>
187<p>Nginx, the web server, runs as the &quot;front-end&quot; for <code>gunicorn</code>.</p>
188<p>Here's a minimal configuration get the web interface up and running:</p>
189<p>Edit the file <code>/etc/nginx/sites-enabled/default</code>, erasing ALL THE LINES IN THE FILE, and copy the following lines into it:</p>
190<pre><code>server {
191        server_name ganetimgrX.virt.nsrc.org;
192
193        location / {
194                proxy_pass http://127.0.0.1:8088;
195        }
196
197        location /static {
198                root   /srv/www/ganetimgr;
199        }
200}</code></pre>
201<p>Test the configuration:</p>
202<pre><code># service nginx configtest</code></pre>
203<p>And if all is well, proceed to restart nginx:</p>
204<pre><code># service nginx restart</code></pre>
205<h2 id="vnc-proxy"><a href="#vnc-proxy"><span class="header-section-number">1.12</span> VNC proxy</a></h2>
206<p>We can now install the VNC Auth Proxy that will allow for browser-based VNC consoles!</p>
207<pre><code># apt-get install python-dev
208# pip install six --upgrade
209# pip install service_identity
210# pip install VNCAuthProxy</code></pre>
211<p>And start it:</p>
212<pre><code># twistd --pidfile=/tmp/proxy.pid -n vncap -c tcp:8888:interface=0.0.0.0 &amp;</code></pre>
213<p>(Note: this needs to be done at server startup too)</p>
214<h1 id="create-rapi-user"><a href="#create-rapi-user"><span class="header-section-number">2</span> Create RAPI user</a></h1>
215<p>We now need to create a user on the Ganeti cluster nodes, that will allow Ganeti Manager to control the cluster.</p>
216<p>Pick a random string (for example, generate it with):</p>
217<pre><code>head -c18 /dev/urandom | base64</code></pre>
218<p>... and run it through the following command:</p>
219<pre><code>echo -n 'ganetimgr_api_user:Ganeti Remote API:random_string' | openssl md5</code></pre>
220<p>Note that random string should probably not contain ':'.</p>
221<p>Here's a sample output, which is a hashed password:</p>
222<pre><code>b20990f88c544cea982645e99b08d8c8</code></pre>
223<p>The final authentication / authorization line will look like this:</p>
224<pre><code>ganetimgr_api_user {HA1}b20990f88c544cea982645e99b08d8c8 write</code></pre>
225<p>... where <code>write</code> indicates that this user <code>ganetimgr_api_user</code> has write access to the cluster (i.e: can modify/create/delete instances!)</p>
226<p>Now, on the master node (NOT ON THE GANETIMGR MACHINE!), create the following file (as root):</p>
227<pre><code># editor /var/lib/ganeti/rapi/users</code></pre>
228<p>... and copy the authentication/authorization line, with the correct hashed password.</p>
229<p>Once you've done this, distribute this file to the other nodes in the cluster with the following command:</p>
230<pre><code># gnt-cluster copyfile /var/lib/ganeti/rapi/users</code></pre>
231<blockquote>
232<p>Note: In Debian Jessie onwards, remote access for RAPI is disabled by default. To check for this, look in <code>/etc/default/ganeti</code>. If the flags for the RAPI daemon include <code>-b 127.0.0.1</code> then remove that part and then restart ganeti.</p>
233</blockquote>
234<p>That's it! We are now ready to test the front-end!</p>
235<h1 id="navigate-to-the-ganetimgr-web-interface."><a href="#navigate-to-the-ganetimgr-web-interface."><span class="header-section-number">3</span> Navigate to the ganetimgr web interface.</a></h1>
236<p>Open <code>http://ganetimgrX.virt.nsrc.org/</code> in your browser.</p>
237<p>You should be presented with the login screen.</p>
238<p>Login with the <code>admin</code> user and password you created earlier.</p>
239<p>Now, click on <code>Admin</code> in the bottom of the left menu. If your browser window isn't wide enough, you'll only see a small &quot;Gears&quot; icon. Click on that.</p>
240<p>Click on <code>Add</code> next to <code>Clusters</code> under the <code>Ganeti</code> section.</p>
241<p>For hostname, enter the hostname (it must be in the DNS!) of the cluster, i.e.: <code>gntX.virt.nsrc.org</code>.</p>
242<p>For the &quot;Slug&quot;, you can put &quot;nsrc&quot; for instance. It's best to avoid '-' in the cluster name, it seems.</p>
243<p>For username, use the <code>ganetimgr_api_user</code> specified earlier.</p>
244<p>For password, you use the randomly generated password (NOT the hashed version!) created earlier.</p>
245<p>Leave default disk template to <code>plain</code>.</p>
246<p>Now it's time to navigate back to the mainpage:</p>
247<pre><code>`http://ganetimgrX.virt.nsrc.org`</code></pre>
248<h1 id="additional-notes"><a href="#additional-notes"><span class="header-section-number">4</span> Additional notes</a></h1>
249<h2 id="whats-missing"><a href="#whats-missing"><span class="header-section-number">4.1</span> What's missing ?</a></h2>
250<ul>
251<li>start script for watcher.py</li>
252<li>upstart or systemd script for twistd (twistd --pidfile=/tmp/proxy.pid -n vncap -c tcp:8888:interface=0.0.0.0)</li>
253<li>Secure direct access to the VNC consoles via ACLs or using a VNC password on the nodes/cluster</li>
254<li>set OPERATING_SYSTEMS_URLS and SNF_OPERATING_SYSTEMS_URLS appropriately (point to local cache of images)</li>
255</ul>
256<h2 id="why-we-had-to-install-vncauthproxy-from-a-pip-package"><a href="#why-we-had-to-install-vncauthproxy-from-a-pip-package"><span class="header-section-number">4.2</span> Why we had to install VNCAuthProxy from a pip package:</a></h2>
257<p>The VNCAuthProxy binary package is missing the vncap module (not being built):</p>
258<ul>
259<li>https://code.osuosl.org/issues/16227</li>
260</ul>
261<h2 id="issues-with-vnc-consoles-and-using-etchosts-on-ganetimgr"><a href="#issues-with-vnc-consoles-and-using-etchosts-on-ganetimgr"><span class="header-section-number">4.3</span> Issues with VNC consoles and using <code>/etc/hosts</code> on ganetimgr</a></h2>
262<p>We have the cluster node names and the ganetimgr host names in <code>/etc/hosts</code> as vncauthproxy uses gevent and greenlets for the event loop and connection handling / forwarding. gevent (&lt;1.0beta) uses libevent2 and its async DNS resolver, and libevent2-dns doesn't read <code>/etc/hosts</code>.</p>
263<ul>
264<li>https://groups.google.com/forum/?fromgroups=#!topic/gevent/xhYajAbofW0</li>
265<li>https://groups.google.com/forum/#!topic/synnefo/5DJLzhg4rvI</li>
266<li>https://groups.google.com/forum/#!msg/synnefo/bKuy4pajqvw/sV-KjDRefEIJ</li>
267</ul>
268</body>
269</html>