您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Openstack Murano二次開發(fā)之如何添加Volume”,內(nèi)容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“Openstack Murano二次開發(fā)之如何添加Volume”這篇文章吧。
##需求 現(xiàn)在murano還不支持在實(shí)例中添加volume,不過murano是通過heat創(chuàng)建資源的,而heat是可以創(chuàng)建并附加volume的,heat可以做到的事,murano就可以做到(當(dāng)然還可以做的更多),下面我們就來一步一步的實(shí)現(xiàn)這個功能。
##修改io.murano ###創(chuàng)建Cinder.yaml
murano的核心庫放在murano/meta/io.murano
中,首先在murano/meta/io.murano/manifest.yaml
中注冊Cinder類,將下面的內(nèi)容復(fù)制到manifest.yaml中并保存:
io.murano.resources.Cinder: resources/Cinder.yaml
創(chuàng)建murano/meta/io.murano/Class/resources/Cinder.yaml
文件:
Namespaces: =: io.murano.resources # 當(dāng)前命名空間 std: io.murano Name: Cinder Properties: # 要創(chuàng)建的Volume大小,單位GB size: Contract: $.int().notNull() Methods: initialize: Body: - $._environment: $.find(std:Environment).require() genTemplate: Arguments: # volume要附加到的實(shí)例 - instance: Contract: $.class(Instance).notNull() Body: # $volumeName表示將要創(chuàng)建的volume名字,$instance.name是實(shí)例的名字,同時也是heat模板中instance的名字。 - $volumeName: format('volume-{0}-{1}', $.id(), $instance.name) - $volumeAttachment: format('volumeAttachment-{0}-{1}', $.id(), $instance.name) # $template里保存的是標(biāo)準(zhǔn)的heta模板 # 模板首先創(chuàng)建了一個Volume,然后用VolumeAttachment附加到指定的實(shí)例上 - $template: resources: $volumeName: type: OS::Cinder::Volume properties: size: $.size $volumeAttachment: type: OS::Cinder::VolumeAttachment properties: volume_id: { get_resource: $volumeName } instance_uuid: { get_resource: $instance.name } # 返回創(chuàng)建的模板,改模版會在后面的步驟中合并到一個完整的heat模板中去。 - Return: $template
###修改Instance.yaml
修改murano/meta/io.murano/Class/resources/Instance.yaml
(1) 在Properties:
塊里追加下面的內(nèi)容:
volumeSize: Contract: $.int() Default: null
這個是給app傳參數(shù)進(jìn)來用的。
(2) 在第99行(也就是- $.networks.customNetworks.select($this.joinNet($, $securityGroupName))
)后面添加如下內(nèi)容:
- If: $.volumeSize != null Then: - $cinder: new(Cinder, size => $.volumeSize) - $volumeTemplate: $cinder.genTemplate($this) - $.instanceTemplate: $.instanceTemplate.mergeWith($volumeTemplate)
這幾行代碼很好理解:如果$.volumeSize
不為空,則實(shí)例化一個Cinder對象,然后將生成的volume模板合并的到$.instanceTemplate
模板中去。
###更新io.murano
``` murano-manage --config-file ./etc/murano/murano.conf import-package meta/io.murano/ --update ```
##修改murano-app murano現(xiàn)在可以添加volume了,現(xiàn)在還要修改一個app來讓它使用該功能,需要注意的是,Instance.yaml中的volumeSize
參數(shù)是可選參數(shù),所以現(xiàn)有的app不修改也不會有問題的。
這里我們用Tomcat
app來測試,Tomcat
可以在https://github.com/openstack/murano-apps.git
下載,下載完后記得git checkout -t origin/stable/kilo
切換到的正確的分支。
編輯murano-apps/Tomcat/package/UI/ui.yaml
:
Version: 2 Application: ?: type: io.murano.apps.apache.Tomcat name: $.appConfiguration.name instance: ?: type: io.murano.resources.LinuxMuranoInstance name: generateHostname($.instanceConfiguration.unitNamingPattern, 1) flavor: $.instanceConfiguration.flavor image: $.instanceConfiguration.osImage keyname: $.instanceConfiguration.keyPair availabilityZone: $.instanceConfiguration.availabilityZone assignFloatingIp: $.appConfiguration.assignFloatingIP volumeSize: $.instanceConfiguration.volumeSize #添加這一行 [...] - name: unitNamingPattern type: string label: Instance Naming Pattern required: false maxLength: 64 regexpValidator: '^[a-zA-z][-_\w]*$' errorMessages: invalid: Just letters, numbers, underscores and hyphens are allowed. helpText: Just letters, numbers, underscores and hyphens are allowed. description: >- Specify a string, that will be used in instance hostname. Just A-Z, a-z, 0-9, dash and underline are allowed. # 添加下面幾行 - name: volumeSize type: integer label: Volume Size(GB) required: false description: Instance Volume Size.
上文中的[...]
表示省略掉的內(nèi)容,需要修改的地方有注釋。修改完后,創(chuàng)建Tomcat時會多一個可選的參數(shù)VolumeSize
,如果該參數(shù)不為空就會創(chuàng)建volume了。
更新Tomcat代碼:
murano-manage --config-file ./etc/murano/murano.conf import-package ../murano-apps/Tomcat/package --update
以上是“Openstack Murano二次開發(fā)之如何添加Volume”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。