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

下載本文檔

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

文檔簡介

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

server2:

type:OS::Nova::Server如果一個資源依賴的資源不止一個,depends_on屬性值將以一個資源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ù)可以是所部署的實例的IP地址或者所部署的棧的web應(yīng)用實例的URLs,每個輸出參數(shù)將在輸出部分作為一個單獨的塊被定義,語法格式如下:outputs:<parametername>:description:<description>value:<parametervalue>parametername一個輸出參數(shù)塊中主要的是輸出參數(shù)的名字,這個輸出參數(shù)名字在模板中的輸出部分是獨一無二的。Desceiption這個元素提供一個關(guān)于輸出參數(shù)的簡短的描述。Parametervalue這部分是輸出參數(shù)的值,通常是通過一個函數(shù)來解析去獲得值,例如去獲得一個stack的資源屬性值。下面的例子表明一個計算資源的IP地址是如何作為一個輸出參數(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啟動的狀態(tài):heatstack-list查看stack詳情:heatresource-listdemo簡單實例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)入"棧"菜單項,選擇"啟動棧",支持三種方式〔直接輸入、url、文件加載模板,這里選擇直接輸入,將模板寫入的文本框中,如下圖:點擊"下一步",輸入棧名和密碼后,創(chuàng)建棧;創(chuàng)建完成后由于棧的資源為一臺虛擬機,所以可以在"云主機"中查看創(chuàng)建的虛擬機:實例: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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論