OpenstackHeat設(shè)計(jì)研究文檔_第1頁(yè)
OpenstackHeat設(shè)計(jì)研究文檔_第2頁(yè)
OpenstackHeat設(shè)計(jì)研究文檔_第3頁(yè)
OpenstackHeat設(shè)計(jì)研究文檔_第4頁(yè)
OpenstackHeat設(shè)計(jì)研究文檔_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

./文件狀態(tài):[√]草稿[]正式發(fā)布[]正在修改中類別云計(jì)算項(xiàng)目名稱OpenstackHeat組件研究版本日期作者備注說(shuō)明1.02015/08/31程成初稿審核密級(jí)秘密應(yīng)用范圍XX省信息化工程研究院軟件研發(fā)部版權(quán)所有XX省信息化工程研究院OpenstackHeat組件研究目錄TOC\o"1-4"\h\z\uOpenstackHeat研究31.Heat簡(jiǎn)介32.Heat架構(gòu)32.1Heat-engine42.2HeatClient42.3Heat-api52.4heat-api-cfn52.5Heat-cfntools53.Heat模板53.1*formatversion字段介紹63.2heat_template_version字段介紹74.Heat應(yīng)用154.1命令行使用154.2界面Dashboard使用164.3實(shí)例:Wordpress應(yīng)用部署175.參考文獻(xiàn):21OpenstackHeat研究Heat簡(jiǎn)介heat簡(jiǎn)單來(lái)說(shuō)就是用戶可以預(yù)先定義一個(gè)規(guī)定格式的任務(wù)模版,任務(wù)模版中定義了一連串的相關(guān)任務(wù)〔例如用某配置開(kāi)幾臺(tái)虛擬機(jī),然后在其中一臺(tái)中安裝一個(gè)mysql服務(wù),設(shè)定相關(guān)數(shù)據(jù)庫(kù)屬性,然后再配置幾臺(tái)虛擬機(jī)安裝web服務(wù)群集等等,然后將模版交由Heat執(zhí)行,就會(huì)按一定的順序執(zhí)行heat模版中定義的一連串任務(wù)。任務(wù)模板中的一連串任務(wù)就是用來(lái)指導(dǎo)openstack創(chuàng)建應(yīng)用系統(tǒng)。在heat中,這個(gè)創(chuàng)建的應(yīng)用系統(tǒng)稱之為Stack。Nova是直接創(chuàng)建虛擬機(jī),Heat則是直接創(chuàng)建應(yīng)用系統(tǒng)。Heat作為相對(duì)獨(dú)立的模塊建立在Openstack其他模塊之上。Heat架構(gòu)基于預(yù)先定義的模板,Heat通過(guò)自身的orchestrationEngine來(lái)實(shí)現(xiàn)復(fù)雜應(yīng)用的創(chuàng)建啟動(dòng)。Heat原生的模板格式目前還在不停地演進(jìn)中,但是對(duì)CloudFormation的格式具有良好的支持。存在的CloudFormation的模板可以在OpenStack平臺(tái)通過(guò)heat來(lái)啟動(dòng)。從架構(gòu)來(lái)看,Heat有一些重要的組件,下圖為各組件之間的關(guān)系圖。Heat-engineheat-engine是heat中的核心模塊,主要的邏輯業(yè)務(wù)處理模塊。此模塊最終完成應(yīng)用系統(tǒng)的創(chuàng)建和部署。整個(gè)heat的實(shí)現(xiàn)最為關(guān)鍵的代碼在heat-engine,heat就是來(lái)操作stack,管理stack的整個(gè)生命周期:create,update,delete。重點(diǎn)看create的過(guò)程,查看heatstack-create命令:三個(gè)關(guān)鍵的optionalarguments:template-file:模板文件environment-file:環(huán)境文件parameters:設(shè)置模板文件中的parametersHeatClientHeatclient是Heatproject提供的CLI工具,類似于其他項(xiàng)目的client。對(duì)于heattools的使用,可以通過(guò)安裝后查看。Heat-apiHeat-api類似于nova-api,提供了原生的restfulAPI對(duì)外使用。用戶對(duì)API的調(diào)用,由heat-api處理之后,最終通過(guò)RPC傳遞給Heat-engine來(lái)進(jìn)一步處理。heat-api-cfnheat-api-cfn組件則提供了Amazonstyle的查詢API,因此可以完全兼容于Amazon的CloudFormation,對(duì)于API的請(qǐng)求,同heat-api類似,處理之后,通過(guò)RPC傳遞給heat-engine進(jìn)一步處理.Heat-cfntools這個(gè)工具是一個(gè)單獨(dú)的工具,代碼沒(méi)在heatproject里面,可以單獨(dú)下載。這個(gè)工具主要用來(lái)完成虛擬機(jī)實(shí)例內(nèi)部的操作配置任務(wù)。在創(chuàng)建虛擬機(jī)竟像時(shí),需要在鏡像中安裝heat-cfntools工具。Heat模板Heat的目的之一就是致力于應(yīng)用系統(tǒng)的自動(dòng)化部署,那么若要自動(dòng)化部署,則需要存在某個(gè)語(yǔ)言規(guī)范來(lái)描述應(yīng)用系統(tǒng),并且解決應(yīng)用系統(tǒng)在不同場(chǎng)合下的配置適應(yīng)問(wèn)題。Heat模板文件則是用來(lái)對(duì)前者的支持。模板文件的格式多種多樣,例如,Amazon提供的cloudformation格式,Heat自有的格式HOT,Json等等,格式之間的差別在于表現(xiàn)形式。template中有三個(gè)formatversion,第一種是aws的格式,表示這是一個(gè)json文件;第二種是heat為了擴(kuò)展aws并且更好的加入注釋,引入的yaml格式文件;第三種是openstack的heat特有的hot格式的頭部,也是基于yaml格式的。"AWSTemplateFormatVersion":"2010-09-09""HeatTemplateFormatVersion":"2012-12-12""heat_template_version":"2013-05-23"*formatversion字段介紹AWSTemplateFormatVersion和HeatTemplateFormatVersion支持的字段"AWSTemplateFormatVersio"格式版本,指定了編寫模板時(shí)依據(jù)的AWSCloudFormation模板版本;"HeatTemplateFormatVersion"格式版本,指定了編寫模板時(shí)依據(jù)的HeatTemplateFormation模板版本"Description"字段,可選描述,記錄該模板的描述。"Mappings"可選映像,通過(guò)映像部分,可以聲明條件值,可在Resources和Outputs部分使用內(nèi)建函數(shù)Fn::FindInMap將與鍵對(duì)應(yīng)的值返回到Mappings部分聲明的雙層映射中。"Parameters",可選字段,可以定義用于控制是否創(chuàng)建某些資源或者是否在堆棧創(chuàng)建或更新過(guò)程中為某些資源屬性分配值的條件。"Resources",資源部分將列出堆棧的成員資源。每項(xiàng)資源將予以分別列明,并指定創(chuàng)建此特定資源所必需的資源屬性??稍谫Y源和輸出部分取消資源參考。"Outputs",可選輸出,在Outputs部分,您可以選擇對(duì)響應(yīng)awscloudformationdescribe-stacks命令而返回的自定義值進(jìn)行定義。這些輸出值將包括基于文本、資源、參數(shù)、虛擬參數(shù)和內(nèi)部函數(shù)的信息。heat_template_version字段介紹這里具體介紹,openstack的hot模板格式,后邊的應(yīng)用實(shí)例也以基于hot格式。heat_template_version:2013-05-232013-05-23或者是在這個(gè)日期之后的日期表明YAML被定義為是HOT模板description:用來(lái)描述模板的一些信息,通常可以在創(chuàng)建完模板之后看到。parameter_groups:用來(lái)表明一些參數(shù)應(yīng)該被怎樣分組以及提供參數(shù)的方式,這部分是可選的,當(dāng)沒(méi)有輸出值時(shí)可以省略。Parameters:用來(lái)對(duì)初始化模板時(shí)必須要提供的一些參數(shù)的說(shuō)明,是可選的,當(dāng)沒(méi)有輸出值時(shí)可以省略。Resources:這部分包含模板單一資源的聲明,必須包含至少一個(gè)應(yīng)該在HOT模板中被定義的資源,否則模板不會(huì)做任何實(shí)例化的事。Outputs:這部分用于在模板被實(shí)例化后輸出給用戶可以使用參數(shù)信息,這部分是可選的,當(dāng)沒(méi)有輸出值時(shí)可以省略parameter_groups詳細(xì)介紹這些組被定義為一個(gè)列表,列表中每個(gè)組包含一個(gè)相關(guān)的參數(shù)列表。這些列表用于定義參數(shù)的期望順序。每個(gè)參數(shù)應(yīng)該跟只使用一次參數(shù)名稱同時(shí)將這個(gè)參數(shù)綁定到parameterssection中的參數(shù)定義部分的指定的組相關(guān)聯(lián)。下面看下parameter_groups具體內(nèi)容:parameter_groups:-label:<human-readablelabelofparametergroup>description:<descriptionoftheparametergroup>parameters:-<paramname>-<paramname>label標(biāo)簽一個(gè)定義與參數(shù)相關(guān)聯(lián)的組的可讀的標(biāo)簽。description這個(gè)屬性允許給參數(shù)組一個(gè)可讀的描述。Parameters與參數(shù)組相關(guān)聯(lián)的參數(shù)列表。Paramname在后面參數(shù)部分被定義的參數(shù)的名字。Parameters詳細(xì)介紹參數(shù)部分允許為在實(shí)例化模板的時(shí)候指定輸入?yún)?shù),這些參數(shù)通常被用于自定義每個(gè)部署或者應(yīng)用,例如設(shè)定自定義的用戶名和密碼。每個(gè)參數(shù)會(huì)在一個(gè)單獨(dú)的小模塊〔嵌套塊中被定義,模塊中第一行是參數(shù)的名稱,其他的屬性比如類型或者默認(rèn)值將作為模塊中其他的的元素。下面看下parameter的具體內(nèi)容:parameters:<paramname>:type:<string|number|json|comma_delimited_list|boolean>label:<human-readablenameoftheparameter>description:<descriptionoftheparameter>default:<defaultvalueforparameter>hidden:<true|false>constraints:<parameterconstraints>paramname每個(gè)參數(shù)模塊中所定義的參數(shù)的名字。Type這個(gè)屬性是參數(shù)的類型。目前所支持的類型有tring、number、comma_delimited_list、json、boolean。Label這個(gè)可選屬性允許為參數(shù)提供一個(gè)可讀的名字,通常省略。Description這個(gè)可選屬性允許為參數(shù)提供一個(gè)可讀的描述。Default這個(gè)可選屬性是為了在部署或者應(yīng)用中沒(méi)有指定參數(shù)的值時(shí)定義一個(gè)默認(rèn)的值。Hidden這個(gè)可選屬性允許當(dāng)從模板運(yùn)行時(shí)創(chuàng)建一個(gè)棧的時(shí)候隱藏參數(shù)的值,如果沒(méi)有指明,默認(rèn)值是false。Constraints這個(gè)可選屬性允許指明其他的參數(shù)限制條件,比如數(shù)字參數(shù)的最大值或者最小值。下面是一個(gè)關(guān)于兩個(gè)參數(shù)定義的簡(jiǎn)單的例子,可以看出description和label實(shí)際上是可選的,但是為每個(gè)參數(shù)提供description和label是很好的做法。Parameters:user_name:type:stringlabel:UserNamedescription:Usernametobeconfiguredfortheappport_number:type:numberlabel:PortNumberdescription:Portnumbertobeconfigured參數(shù)定義的限制模塊允許定義額外的參數(shù)值的限制條件,在模板實(shí)例化的時(shí)候,用戶所提供的參數(shù)值會(huì)被這些條件去驗(yàn)證以確保用戶所提供的值是符合用戶的期望的,限制條件被定義在一個(gè)列表中,如下所示:constraints:-<constrainttype>:<constraintdefinition>description:<constraintdescription>constrainttype限制條件的類型表明所定義的限制條件的種類constraintdefinition這個(gè)是根據(jù)限制類型所定義的具體的限制條件description這個(gè)可選屬性允許指定當(dāng)前限制條件的具體描述,例如,當(dāng)所提供的輸入值不符合限制條件,這個(gè)描述內(nèi)容將會(huì)被呈現(xiàn)給用戶〔其實(shí)就是創(chuàng)建過(guò)程中如果出現(xiàn)錯(cuò)誤,錯(cuò)誤的具體描述,如果省略,一個(gè)默認(rèn)的值將會(huì)呈現(xiàn)給用戶。下面的例子是定義了一個(gè)帶有兩個(gè)限制條件的一個(gè)字符串參數(shù),表明當(dāng)盡管每個(gè)限制條件的描述是可選的,為每個(gè)應(yīng)用部署時(shí)提供限制條件的描述是非常重要的。Parameters:user_name:type:stringlabel:UserNamedescription:Usernametobeconfiguredfortheapplicationconstraints:-length:{min:6,max:8}description:Usernamemustbebetween6and8長(zhǎng)度的限制適用于字符串類型的參數(shù),允許定義字符串參數(shù)值的最大長(zhǎng)度和最小長(zhǎng)度,語(yǔ)法格式如下:length:{min:<lowerlimit>,max:<upperlimit>}范圍的限制適用于數(shù)值類型的參數(shù),允許定義數(shù)值類型的參數(shù)的最大值和最小值,語(yǔ)法格式如下:range:{min:0,max:10}allowed_values限制條件適用于字符串或者數(shù)字類型的參數(shù),指明一組可用的參數(shù)值,在部署的時(shí)候,用戶提供的參數(shù)值必須在這一組參數(shù)值中。語(yǔ)法格式如下:allowed_values:[<value>,<value>,...]或者可以使用下面的格式:allowed_values:-<value>-<value>-...allowed_pattern允許模式限制條件適用于字符串參數(shù),定義一個(gè)具體的正則表達(dá)式,用于匹配用戶提供的參數(shù)值,語(yǔ)法格式如下:allowed_pattern:<regularexpression>custom_constraint限制條件提供一個(gè)額外的驗(yàn)證步驟,通常用于檢驗(yàn)后臺(tái)中資源是否存在,custom_constraint限制條件是通過(guò)插件的方式實(shí)現(xiàn)的,能夠提供更高級(jí)的限制條件驗(yàn)證邏輯。語(yǔ)法格式如下:custom_constraint:<name>PseudoParameters模板中除了用戶自定義的參數(shù)外,Heat也為每個(gè)stack創(chuàng)建了兩個(gè)參數(shù),一個(gè)是"OS::stack_name",是stack的名字,另一個(gè)是"OS::stack_id",是stack的id,這兩個(gè)值可以像用戶自定義的參數(shù)一樣通過(guò)"get_param"內(nèi)建函數(shù)被訪問(wèn)。Resources詳細(xì)介紹在資源部分,實(shí)際資源的模板將從被定義的HOT模板中構(gòu)成一個(gè)stack的部署,每個(gè)資源在資源部分被定義成一個(gè)單獨(dú)的塊,語(yǔ)法格式如下:resources:<resourceID>:type:<resourcetype>properties:<propertyname>:<propertyvalue>metadata:<resourcespecificmetadata>depends_on:<resourceIDorlistofID>update_policy:<updatepolicy>deletion_policy:<deletionpolicy>resourceID一個(gè)資源塊是由資源ID所標(biāo)識(shí),使模板中資源部分獨(dú)一無(wú)二的。type這個(gè)屬性表明資源的類型,比如OS::Nova::Sperties這個(gè)可選部分包含一個(gè)資源指定屬性的列表,屬性值可以在適當(dāng)?shù)奈恢锰峁┗蛘咄ㄟ^(guò)函數(shù)提供。metadata這個(gè)可選部分包含資源類型的特定metadata。depends_on這個(gè)可選屬性允許指明當(dāng)前資源跟其他資源的依賴關(guān)系。update_policy該可選屬性允許以嵌套字典的形式指明資源更新的策略,支持更新或者不更新策略,同時(shí)確切的語(yǔ)義依賴于當(dāng)前的資源。deletion_policy該可選屬性允許為資源指明刪除策略,具體哪種刪除策略依賴于當(dāng)前資源的類型。根據(jù)資源的類型,資源塊可以包含更多的資源具體數(shù)據(jù),基本上能被用于CFN模板的所有資源類型同樣可以被用于HOT模板中,適用于上文所述YMAL結(jié)構(gòu)。下面是一個(gè)簡(jiǎn)單的帶有固定屬性值的計(jì)算資源定義的例子:resources:my_instance:type:OS::Nova::Serverproperties:flavor:m1.smallimage:F18-x86_64-cfntoolsResourceDependencies通過(guò)在一個(gè)屬性部分的depends_on屬性,能夠定義資源與資源之間的依賴關(guān)系,如果一個(gè)資源僅僅依賴另外一個(gè)資源,那么另外一個(gè)資源的ID將作為depends_on屬性的值,如下例所示:resources:server1:type:OS::Nova::Serverdepends_on:server2

server2:

type:OS::Nova::Server如果一個(gè)資源依賴的資源不止一個(gè),depends_on屬性值將以一個(gè)資源IDs列表的形式呈現(xiàn),如下例所示:resources:server1:type:OS::Nova::Serverdepends_on:[server2,server3]server2:type:OS::Nova::Serverserver3:type:OS::Nova::ServerOutputs詳細(xì)介紹OutputsSection在輸出部分,任何向用戶于提供可用輸出參數(shù)將被定義,通常,參數(shù)可以是所部署的實(shí)例的IP地址或者所部署的棧的web應(yīng)用實(shí)例的URLs,每個(gè)輸出參數(shù)將在輸出部分作為一個(gè)單獨(dú)的塊被定義,語(yǔ)法格式如下:outputs:<parametername>:description:<description>value:<parametervalue>parametername一個(gè)輸出參數(shù)塊中主要的是輸出參數(shù)的名字,這個(gè)輸出參數(shù)名字在模板中的輸出部分是獨(dú)一無(wú)二的。Desceiption這個(gè)元素提供一個(gè)關(guān)于輸出參數(shù)的簡(jiǎn)短的描述。Parametervalue這部分是輸出參數(shù)的值,通常是通過(guò)一個(gè)函數(shù)來(lái)解析去獲得值,例如去獲得一個(gè)stack的資源屬性值。下面的例子表明一個(gè)計(jì)算資源的IP地址是如何作為一個(gè)輸出參數(shù):outputs:instance_ip:description:IPaddressofthedeployedcomputeinstancevalue:

{

get_attr:

[my_instance,

first_address]

}以上只是介紹部分字段,各字段參數(shù)詳情可參考:/developer/heat/template_guide/hot_spec.html#heat-template-versionHeat應(yīng)用命令行使用創(chuàng)建名為demo的Stack:heatstack-createdemo–f./template1.yaml觀察stack啟動(dòng)的狀態(tài):heatstack-list查看stack詳情:heatresource-listdemo簡(jiǎn)單實(shí)例template1.yaml:heat_template_version:2013-05-23description:Simpletemplatetodeployasinglecomputeinstanceresources:my_instance:type:OS::Nova::Serverproperties:key_name:heat_keyimage:9a51863b-e58a-4bbe-bddc-920178c738a2flavor:m1.smallnetworks:-{network:7e83541b-3bb9-4649-b307-9d3fbcd9e998}界面Dashboard使用 在Dashboard上的操作:進(jìn)入"棧"菜單項(xiàng),選擇"啟動(dòng)棧",支持三種方式〔直接輸入、url、文件加載模板,這里選擇直接輸入,將模板寫入的文本框中,如下圖:點(diǎn)擊"下一步",輸入棧名和密碼后,創(chuàng)建棧;創(chuàng)建完成后由于棧的資源為一臺(tái)虛擬機(jī),所以可以在"云主機(jī)"中查看創(chuàng)建的虛擬機(jī):實(shí)例:Wordpress應(yīng)用部署heat模板文件:heat_template_version:2013-05-23description:>HeatWordPresstemplatedeploymentusingalocalMySQLdatabasetostorethedata.parameters:key_name:type:string default:heat_keydescription:NameofaKeyPairtoenableSSHaccesstotheinstanceinstance_type:type:stringdescription:InstancetypeforWordPressserverdefault:m1.smallconstraints:-allowed_values:[m1.small,m1.medium,m1.large]description:instance_typemustbeoneofm1.small,m1.mediumorm1.largeimage_id:type:stringdescription:IDoftheimagetousefortheWordPressserverdb_name:type:stringdescription:WordPressdatabasenamedefault:wordpressconstraints:-length:{min:1,max:64}description:db_namemustbebetween1and64characters-allowed_pattern:'[a-zA-Z][a-zA-Z0-9]*'description:>db_namemustbeginwithaletterandcontainonlyalphanumericcharactersdb_username:type:stringdescription:TheWordPressdatabaseadminaccountusernamedefault:roothidden:trueconstraints:-length:{min:1,max:16}description:db_usernamemustbebetween1and64characters-allowed_pattern:'[a-zA-Z][a-zA-Z0-9]*'description:>db_usernamemustbeginwithaletterandcontainonlyalphanumericcharactersdb_password:type:stringdescription:TheWordPressdatabaseadminaccountpassworddefault:adminhidden:trueconstraints:-length:{min:1,max:41}description:db_usernamemustbebetween1and64characters-allowed_pattern:'[a-zA-Z0-9]*'description:db_passwordmustcontainonlyalphanumericcharactersdb_root_password:type:stringdescription:RootpasswordforMySQLdefault:adminhidden:trueconstraints:-length:{min:1,max:41}description:db_usernamemustbebetween1and64characters-allowed_pattern:'[a-zA-Z0-9]*'description:db_passwordmustcontainonlyalphanumericcharacterssecgroup_id:type:stringdescription:Idofthesecuritygroupedefault:defaultpublic_net:type:stringdescription:publicnetworkiddefault:004df4b2-3050-4646-958f-f0f2621df687private_net:type:stringdescription:privatenetworkiddefault:7e83541b-3bb9-4649-b307-9d3fbcd9e998private_subnet:type:stringdescription:private_subnetiddefault:b20dfcde-55f0-40c6-b645-2eae7d116ee2resources:wordpress_port:type:OS::Neutron::Portproperties:network_id:{get_param:private_net}security_groups:{get_param:secgroup_id}fixed_ips:-subnet_id:{get_param:private_subnet}wordpress_floating_ip:type:OS::Neutron::FloatingIPproperties:floating_network_id:{get_param:public_net}port_id:{get_resource:wordpress_port}wordpress_instance:type:OS::Nova::Serverproperties:image:{get_param:image_id}flavor:{get_param:instance_type}key_name:{get_param:key_name} networks:-port:{get_resource:wordpress_port}user_data:str_replace:template:|#!/bin/bash-vapt-getinstall-yapache2libapache2-mod-php5php5php5-mysqlmysql-server-5.5mysql-s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論