Track3Agenda: ex-ganeti-instance-debootstrap.htm

File ex-ganeti-instance-debootstrap.htm, 37.2 KB (added by b.candler, 5 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 VM building using instance-debootstrap</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 VM building using instance-debootstrap</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="#installing-instances-creating-vms"><span class="toc-section-number">2</span> Installing instances (creating VMs)</a><ul>
19<li><a href="#install-an-instance-vm-with-debootstrap"><span class="toc-section-number">2.1</span> Install an instance (VM) with debootstrap</a><ul>
20<li><a href="#replace-the-debootstrap-installer-with-a-newer-version"><span class="toc-section-number">2.1.1</span> Replace the debootstrap installer with a newer version</a></li>
21<li><a href="#set-a-default-root-password-for-all-instances"><span class="toc-section-number">2.1.2</span> Set a default root password for all instances</a></li>
22<li><a href="#configure-parameters-for-our-vm"><span class="toc-section-number">2.1.3</span> Configure parameters for our VM</a></li>
23<li><a href="#create-a-debian-instance"><span class="toc-section-number">2.1.4</span> Create a Debian instance</a></li>
24</ul></li>
25</ul></li>
26<li><a href="#configuring-the-network-service"><span class="toc-section-number">3</span> Configuring the network service</a><ul>
27<li><a href="#install-openssh"><span class="toc-section-number">3.1</span> Install OpenSSH</a></li>
28</ul></li>
29<li><a href="#additional-hooks"><span class="toc-section-number">4</span> Additional hooks</a></li>
30<li><a href="#installing-ubuntu"><span class="toc-section-number">5</span> Installing Ubuntu</a></li>
31</ul>
32</div>
33<h1 id="objectives"><a href="#objectives"><span class="header-section-number">1</span> Objectives</a></h1>
34<ul>
35<li>Learn various ganeti commands</li>
36<li>Install a simple machine, automatically, on an LVM volume</li>
37</ul>
38<p>NOTE: all the commands in this exercise are run as the root user. If you are logged in as a regular user, use <code>sudo -s</code> to get a root shell.</p>
39<pre><code>$ sudo -s
40# </code></pre>
41<h1 id="installing-instances-creating-vms"><a href="#installing-instances-creating-vms"><span class="header-section-number">2</span> Installing instances (creating VMs)</a></h1>
42<p>Before we create and install VMs, we need to change default settings in the cluster (this should have been done before, but we're doing it to be safe).</p>
43<p>Do this on the MASTER node:</p>
44<pre><code># gnt-cluster modify -H kvm:kernel_path=,initrd_path=,vnc_bind_address=0.0.0.0</code></pre>
45<h2 id="install-an-instance-vm-with-debootstrap"><a href="#install-an-instance-vm-with-debootstrap"><span class="header-section-number">2.1</span> Install an instance (VM) with debootstrap</a></h2>
46<p>We are going to install our VMs using debootstrap - we don't feel like spending time installing an OS using an ISO image: it takes too long, and that's not what we would be doing in production if we had many customers or users asking for VMs all the time.</p>
47<p>First, we need to adjust a few things.</p>
48<h3 id="replace-the-debootstrap-installer-with-a-newer-version"><a href="#replace-the-debootstrap-installer-with-a-newer-version"><span class="header-section-number">2.1.1</span> Replace the debootstrap installer with a newer version</a></h3>
49<p>There is an old version of the package &quot;ganeti-instance-debootstrap&quot; in Debian wheezy, but a newer one in wheezy-backports (version 0.14 at the time of writing). So check that you have the newer version:</p>
50<pre><code># apt-get install ganeti-instance-debootstrap/wheezy-backports</code></pre>
51<p>You will need to do this on all nodes in the cluster, because instances can be created on any node and you want them to be consistent.</p>
52<p>Test that the &quot;instance OS&quot; type is recognized: on the master node,</p>
53<pre><code># gnt-os list</code></pre>
54<p>This should show: debootstrap+default</p>
55<h3 id="set-a-default-root-password-for-all-instances"><a href="#set-a-default-root-password-for-all-instances"><span class="header-section-number">2.1.2</span> Set a default root password for all instances</a></h3>
56<p>Ganeti provides some sample &quot;hooks&quot; you can use to customize the VMs you create.</p>
57<p>Normally you would do this once on the master node and then use <code>gnt-cluster copyfile</code> to copy the files to the other nodes, but for this exercise, you can each do it on your own host.</p>
58<p>For example, let's say we want all our instances to have a root password of our choosing. To do this we need a small shell script, and a data file containing the desired password.</p>
59<p>First, we need to copy the script into the 'hooks' directory:</p>
60<pre><code># cd /etc/ganeti/instance-debootstrap/hooks
61# cp /usr/share/doc/ganeti-instance-debootstrap/examples/defaultpasswords .
62# chmod +x defaultpasswords</code></pre>
63<p>(Notice the &quot;.&quot; which means &quot;into the current directory&quot;)</p>
64<p>And now we need to give it a password file:</p>
65<pre><code># mkdir confdata
66# cd confdata
67# cp /usr/share/doc/ganeti-instance-debootstrap/examples/confdata/defaultpasswords .
68# chmod 600 defaultpasswords</code></pre>
69<p>Edit this file &quot;defaultpasswords&quot; and change the default password from <code>s3cr3t</code> to the password we use in class. This file should be just one line:</p>
70<pre><code>root:XXXXXX</code></pre>
71<p>where XXXXXX is the password.</p>
72<h3 id="configure-parameters-for-our-vm"><a href="#configure-parameters-for-our-vm"><span class="header-section-number">2.1.3</span> Configure parameters for our VM</a></h3>
73<p>We're almost ready to build our VM. Before, we need to set a few parameters so it builds the version and architecture we want.</p>
74<p>Have a look in the file <code>/etc/default/ganeti-instance-debootstrap</code>, which contains the default <code>debootstrap</code> settings for Ganeti.</p>
75<p>You can see various options that we covered before in the scripted installs:</p>
76<p><code>ARCH</code>, <code>SUITE</code> and <code>EXTRA_PKGS</code> in particular, control which version of the OS and architecture, as well as which package, get installed.</p>
77<p>We need to override (change) two of these parameters: <code>ARCH</code> and <code>EXTRA_PKGS</code>, but we're not going to modify this file.</p>
78<p>Instead, we'll edit the file <code>/etc/ganeti/instance-debootstrap/variants/default.conf</code>, which allows us to make the change without touching the installed version. Like this, when Ganeti is upgraded, your settings file isn't overwritten.</p>
79<p>Therefore:</p>
80<pre><code># editor /etc/ganeti/instance-debootstrap/variants/default.conf</code></pre>
81<p>And add the following lines:</p>
82<pre><code>ARCH=&quot;amd64&quot;
83EXTRA_PKGS=&quot;acpi-support-base,console-tools,udev,linux-image-amd64,sudo,vim,grub-pc,openssh-server&quot;
84PROXY=&quot;http://apt.ws.nsrc.org:3142/&quot;</code></pre>
85<p>Summary:</p>
86<ul>
87<li>We changed the architecture from i386 to amd64</li>
88<li>We enabled extra packages, including the boot loader (GRUB)</li>
89<li>We are using out local apt-cacher-ng proxy for downloading packages (which will be much faster than everyone in the class fetching them directly across the Internet)</li>
90</ul>
91<h3 id="create-a-debian-instance"><a href="#create-a-debian-instance"><span class="header-section-number">2.1.4</span> Create a Debian instance</a></h3>
92<blockquote>
93<p>As with the previous exercise: each pair of people can create a VM called <code>debianX</code> and place it on your node <code>hostX</code>, but you will need to be logged into the MASTER node of your cluster to issue these commands</p>
94</blockquote>
95<pre><code># gnt-instance add -t plain -o debootstrap+default \
96    --disk 0:size=4G -B minmem=256M,maxmem=512M \
97    -n hostX.ws.nsrc.org \
98    --no-name-check --no-ip-check \
99    debianX</code></pre>
100<p>Note: if you are only going to have one disk, instead of writing <code>--disk 0:size=4G</code>, you could simply write <code>-s 4G</code>.</p>
101<p>The build is going to take a while the first time - it should fetch most packages from the local cache, which should speed things up.</p>
102<p>It needs to fetch packages just like for debootstrap in the previous labs. Be patient...</p>
103<pre><code>Sat Jan 18 09:52:14 2014 * disk 0, size 4.0G
104Sat Jan 18 09:52:14 2014 * creating instance disks...
105Sat Jan 18 09:52:15 2014 adding instance debianX to cluster config
106Sat Jan 18 09:52:15 2014  - INFO: Waiting for instance debianX to sync disks
107Sat Jan 18 09:52:15 2014  - INFO: Instance debianX's disks are in sync
108Sat Jan 18 09:52:15 2014 * running the instance OS create scripts...
109Sat Jan 18 10:02:53 2014 * starting instance...</code></pre>
110<p>Ok, the build is done! The good thing is, in the future, Ganeti has cached the image of your host (by default, for two weeks), so if you install more VMs with the same command, it will only take a few seconds to create and start the machine <sup><a href="#fn1" class="footnoteRef" id="fnref1">1</a></sup>.</p>
111<p>Unfortunately, there is currently a problem currently with this way of installing VMs on Ganeti.</p>
112<p>Your VM will not come up, and KVM will hang with 99% cpu:</p>
113<pre><code># top
114
115...
116  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND
117 5981 root      20   0  765m  11m 3144 S  98.8  1.1   6:05.41 kvm</code></pre>
118<p>If you attach a VNC console you will see it stuck at &quot;Booting from Hard Disk...&quot;. This is because the grub bootloader wasn't installed in the instance <sup><a href="#fn2" class="footnoteRef" id="fnref2">2</a></sup>.</p>
119<p>Let's fix it.</p>
120<p>Bring down the host (immediate shutdown):</p>
121<pre><code># gnt-instance shutdown --timeout=0 debianX
122Waiting for job 211 for debianX ...</code></pre>
123<p>We're going to boot the instance using the kernel from the <em>Host</em>, just temporarily, so we can fix the bug:</p>
124<pre><code># gnt-instance start \
125    -H kernel_path=/vmlinuz,initrd_path=/initrd.img,kernel_args=&quot;ro single&quot; \
126    debianX</code></pre>
127<p>Wait a few seconds, then start a serial console:</p>
128<pre><code># gnt-instance console debianX</code></pre>
129<p>Press ENTER</p>
130<p>You should see:</p>
131<pre><code>Login incorrect.
132Give root password for maintenance
133(or type Control-D to continue):</code></pre>
134<p>Here, enter the password we set for the root (class password). If all goes well, you are in:</p>
135<pre><code>root@debianX:~#</code></pre>
136<p>Now we can fix the GRUB bootloader on the VM:</p>
137<p>Note: you are typing this in the console, NOT ON YOUR HOST!</p>
138<p>Update the GRUB config and install the bootloader in the boot sector of our VM disk:</p>
139<pre><code># update-grub
140
141Generating grub.cfg ...
142cat: /boot/grub/video.lst: No such file or directory
143Found linux image: /boot/vmlinuz-3.2.0-4-amd64
144Found initrd image: /boot/initrd.img-3.2.0-4-amd64
145done
146
147# grub-install /dev/vda
148
149Installation finished. No error reported.</code></pre>
150<p>Exit the serial console by pressing <code>^]</code> (control + right square bracket)</p>
151<p>Back at the master node prompt, shutdown and restart the guest:</p>
152<pre><code># gnt-instance reboot --shutdown-timeout=30 debianX</code></pre>
153<p>Wait until the prompt returns. If all goes well, you should now be able to get a console on your instance, either using <code>gnt-instance console debianX</code> or using VNC <sup><a href="#fn3" class="footnoteRef" id="fnref3">3</a></sup></p>
154<p>Our machine still doesn't have any network configuration - we will deal with it now.</p>
155<h1 id="configuring-the-network-service"><a href="#configuring-the-network-service"><span class="header-section-number">3</span> Configuring the network service</a></h1>
156<p>One thing remains to be done - our machines still don't have any network connectivity.</p>
157<p>Log in using VNC or serial to the console of your VM - if you're in doubt which node it's running on, use</p>
158<pre><code># gnt-instance list -o +network_port</code></pre>
159<p>Once logged in to the <em>guest</em>:</p>
160<pre><code># ifconfig eth0</code></pre>
161<p>Notice there isn't any IP.</p>
162<p>Remember, that this VM is attached to <code>br-svc</code> from the point of view of the <em>HOST</em>. That network's address and subnet is <code>10.10.255.0/24</code>.</p>
163<p>You will give an IP address to your VM, from the following table:</p>
164<table>
165<thead>
166<tr class="header">
167<th align="center">Cluster/Group</th>
168<th align="center">IP address</th>
169</tr>
170</thead>
171<tbody>
172<tr class="odd">
173<td align="center">Group 1</td>
174<td align="center">10.10.255.5 6 7 or 8</td>
175</tr>
176<tr class="even">
177<td align="center">Group 2</td>
178<td align="center">10.10.255.21 22 23 or 24</td>
179</tr>
180<tr class="odd">
181<td align="center">Group 3</td>
182<td align="center">10.10.255.37 38 39 or 40</td>
183</tr>
184<tr class="even">
185<td align="center">Group 4</td>
186<td align="center">10.10.255.53 54 55 or 56</td>
187</tr>
188<tr class="odd">
189<td align="center">Group 5</td>
190<td align="center">10.10.255.69 70 71 or 72</td>
191</tr>
192<tr class="even">
193<td align="center">Group 6</td>
194<td align="center">10.10.255.85 86 87 or 88</td>
195</tr>
196<tr class="odd">
197<td align="center">Group 7</td>
198<td align="center">10.10.255.101 102 103 or 104</td>
199</tr>
200</tbody>
201</table>
202<ul>
203<li>The netmask is going to be 255.255.255.0</li>
204<li>The gateway is going to be 10.10.255.254</li>
205</ul>
206<p>We need to edit <code>/etc/network/interfaces</code> and give your VM an IP address from the table above. Do this now, and it should end up looking like this:</p>
207<pre><code>auto lo
208iface lo inet loopback
209
210auto eth0
211iface eth0 inet static
212    address 10.10.255.XX
213    netmask 255.255.255.0
214    gateway 10.10.255.254</code></pre>
215<p>Replace <code>XX</code> with the IP from the table above.</p>
216<p>Finally, modify <code>/etc/resolv.conf</code> and set the nameserver as follows:</p>
217<pre><code>nameserver 10.10.0.241</code></pre>
218<p>You can now bring up the interface:</p>
219<pre><code># ifup eth0</code></pre>
220<p>Test that connectivity works, by pinging the class webserver:</p>
221<pre><code># ping www.ws.nsrc.org</code></pre>
222<p>Does it work ?</p>
223<h2 id="install-openssh"><a href="#install-openssh"><span class="header-section-number">3.1</span> Install OpenSSH</a></h2>
224<p>Let's make sure we are using the in-class package cache:</p>
225<p>Edit the file <code>/etc/apt/apt.conf</code> and add this line:</p>
226<pre><code>Acquire::http::Proxy &quot;http://apt.ws.nsrc.org:3142/&quot;;</code></pre>
227<p>Now we can install OpenSSH <sup><a href="#fn4" class="footnoteRef" id="fnref4">4</a></sup></p>
228<pre><code># apt-get install openssh-server</code></pre>
229<p>You should now be able to log in to your VM as <code>root</code>, on the IP address you gave it earlier (10.10.255.X).</p>
230<p><strong>Congratulations! The remainder of this worksheet is extra information in case you finish early, or which you can review at your leisure later</strong></p>
231<h1 id="additional-hooks"><a href="#additional-hooks"><span class="header-section-number">4</span> Additional hooks</a></h1>
232<p>Here's an example of how to automatically customize your OS installation. Let's say we want to install <code>/etc/resolv.conf</code> with particular contents.</p>
233<p>Change to the hooks directory:</p>
234<pre><code># cd /etc/ganeti/instance-debootstrap/hooks</code></pre>
235<p>Create a new file in this directory called <code>resolv</code> with the following contents:</p>
236<pre><code>#!/bin/bash
237if [ ! -d &quot;$TARGET/etc&quot; ]; then
238  echo &quot;Missing target etc directory&quot;
239  exit 1
240fi
241
242cat &lt;&lt;EOS &gt;&quot;$TARGET/etc/resolv.conf&quot;
243nameserver 10.10.0.241
244nameserver 10.10.0.242
245search ws.nsrc.org
246EOS</code></pre>
247<p>Make it executable:</p>
248<pre><code># chmod +x resolv</code></pre>
249<p>Now the next time you install a debootstrap image, it should have this customization applied automatically.</p>
250<h1 id="installing-ubuntu"><a href="#installing-ubuntu"><span class="header-section-number">5</span> Installing Ubuntu</a></h1>
251<p>You can also create other Debian-derived OSes this way. Here is how to install Ubuntu 12.04 (&quot;precise&quot;)</p>
252<p>On the master node, create `/etc/ganeti/instance-debootstrap/variants/precise.conf'</p>
253<pre><code>MIRROR=&quot;http://archive.ubuntu.com/ubuntu/&quot;
254PROXY=&quot;http://apt.ws.nsrc.org:3142/&quot;
255SUITE=&quot;precise&quot;
256EXTRA_PKGS=&quot;acpid,console-tools,udev,linux-image-virtual,openssh-server&quot;
257COMPONENTS=&quot;main,restricted,universe,multiverse&quot;
258ARCH=&quot;amd64&quot;</code></pre>
259<p>Update <code>/etc/ganeti/instance-debootstrap/variants.list</code> so it looks like this:</p>
260<pre><code>default
261precise</code></pre>
262<p>Distribute these files to the other nodes:</p>
263<pre><code># gnt-cluster copyfile /etc/ganeti/instance-debootstrap/variants/precise.conf
264# gnt-cluster copyfile /etc/ganeti/instance-debootstrap/variants.list
265# gnt-os list</code></pre>
266<p>Now you can create an instance of Ubuntu Precise using the same <code>gnt-instance add</code> command as before but with <code>-o debootstrap+precise</code> as the operating system selection.</p>
267<div class="footnotes">
268<hr />
269<ol>
270<li id="fn1"><p>If you are curious: <code>ls -l /var/cache/ganeti-instance-debootstrap/</code><a href="#fnref1"></a></p></li>
271<li id="fn2"><p>There is a hook for doing this, but it's broken. There is a modified version you can <a href="https://code.google.com/p/ganeti/issues/detail?id=549#c5">download</a> - it only works when creating plain (non-drbd) images, but you can convert them to drbd afterwards. This is likely to be fixed with the <a href="http://docs.ganeti.org/ganeti/2.12/html/design-os.html">OS installation redesign</a><a href="#fnref2"></a></p></li>
272<li id="fn3"><p>Reminder: <code>gnt-instance list -o name,pnode,network_port</code> then connect with VNC to the host &amp; port listed <sub>~</sub><a href="#fnref3"></a></p></li>
273<li id="fn4"><p>Note: would it not have been possible to add <code>openssh-server</code> to the <code>EXTRA_PKGS</code> section of the Ganeti debootstrap earlier ? Then we wouldn't need to install openssh manually on every instance we create.<a href="#fnref4"></a></p></li>
274</ol>
275</div>
276</body>
277</html>