久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

Openstack Murano二次開發之如何添加Volume

156次閱讀
沒有評論

共計 3401 個字符,預計需要花費 9 分鐘才能閱讀完成。

這篇文章主要為大家展示了“Openstack Murano 二次開發之如何添加 Volume”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓丸趣 TV 小編帶領大家一起研究并學習一下“Openstack Murano 二次開發之如何添加 Volume”這篇文章吧。

## 需求 現在 murano 還不支持在實例中添加 volume,不過 murano 是通過 heat 創建資源的,而 heat 是可以創建并附加 volume 的,heat 可以做到的事,murano 就可以做到(當然還可以做的更多),下面我們就來一步一步的實現這個功能。

## 修改 io.murano ### 創建 Cinder.yaml

murano 的核心庫放在 murano/meta/io.murano 中, 首先在 murano/meta/io.murano/manifest.yaml 中注冊 Cinder 類, 將下面的內容復制到 manifest.yaml 中并保存:

io.murano.resources.Cinder: resources/Cinder.yaml

創建 murano/meta/io.murano/Class/resources/Cinder.yaml 文件:

Namespaces:
 =: io.murano.resources #  當前命名空間
 std: io.murano

 Body:  # $volumeName 表示將要創建的 volume 名字,$instance.name 是實例的名字,同時也是 heat 模板中 instance 的名字。 - $volumeName: format(volume-{0}-{1} , $.id(), $instance.name)  - $volumeAttachment: format(volumeAttachment-{0}-{1} , $.id(), $instance.name)  # $template 里保存的是標準的 heta 模板  #  模板首先創建了一個 Volume,然后用 VolumeAttachment 附加到指定的實例上  - $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 }  #  返回創建的模板,改模版會在后面的步驟中合并到一個完整的 heat 模板中去。 - Return: $template

### 修改 Instance.yaml

修改 murano/meta/io.murano/Class/resources/Instance.yaml

(1) 在 Properties: 塊里追加下面的內容:

 volumeSize:
 Contract: $.int()
 Default: null

這個是給 app 傳參數進來用的。

(2) 在第 99 行 (也就是 - $.networks.customNetworks.select($this.joinNet($, $securityGroupName))) 后面添加如下內容:

- If: $.volumeSize != null
 Then:
 - $cinder: new(Cinder, size =  $.volumeSize)
 - $volumeTemplate: $cinder.genTemplate($this)
 - $.instanceTemplate: $.instanceTemplate.mergeWith($volumeTemplate)

這幾行代碼很好理解:如果 $.volumeSize 不為空,則實例化一個 Cinder 對象,然后將生成的 volume 模板合并的到 $.instanceTemplate 模板中去。

### 更新 io.murano

```
murano-manage --config-file ./etc/murano/murano.conf import-package meta/io.murano/ --update
```

## 修改 murano-app murano 現在可以添加 volume 了,現在還要修改一個 app 來讓它使用該功能,需要注意的是,Instance.yaml 中的 volumeSize 參數是可選參數, 所以現有的 app 不修改也不會有問題的。

這里我們用 Tomcatapp 來測試,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.

上文中的 […] 表示省略掉的內容,需要修改的地方有注釋。修改完后,創建 Tomcat 時會多一個可選的參數 VolumeSize,如果該參數不為空就會創建 volume 了。

更新 Tomcat 代碼:

murano-manage --config-file ./etc/murano/murano.conf import-package ../murano-apps/Tomcat/package --update

以上是“Openstack Murano 二次開發之如何添加 Volume”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注丸趣 TV 行業資訊頻道!

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-08-16發表,共計3401字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 海兴县| 农安县| 兴安县| 思茅市| 洪江市| 鹰潭市| 邳州市| 镇康县| 桂阳县| 浦城县| 门源| 玉环县| 武鸣县| 新巴尔虎左旗| 东莞市| 两当县| 额敏县| 东乡| 汾西县| 门头沟区| 忻州市| 清水河县| 大安市| 虎林市| 大埔区| 蒲城县| 若尔盖县| 丘北县| 桑植县| 西华县| 都昌县| 连南| 吴旗县| 青冈县| 汽车| 赣榆县| 三亚市| 宁南县| 汤阴县| 通江县| 温泉县|