91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2021-12-20 13:51:24 來源:億速云 閱讀:243 作者:小新 欄目:云計算

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

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

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

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

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


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

Namespaces:
  =: io.murano.resources  # 當前命名空間
  std: io.murano
	
	
Name: Cinder
	
	
Properties:
  # 要創建的Volume大小,單位GB
  size:
    Contract: $.int().notNull()
	
Methods:
  initialize:
    Body:
      - $._environment: $.find(std:Environment).require()
	
  genTemplate:
    Arguments:
      # volume要附加到的實例
      - instance:
          Contract: $.class(Instance).notNull()
    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

  1. 修改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”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

日喀则市| 且末县| 玛曲县| 长汀县| 依安县| 东丽区| 岚皋县| 闻喜县| 武功县| 高唐县| 文化| 泸定县| 逊克县| 南华县| 茶陵县| 莎车县| 高邮市| 蓝山县| 得荣县| 南郑县| 渭南市| 陇西县| 贵南县| 镇远县| 哈巴河县| 曲周县| 辽宁省| 宝山区| 太湖县| 同德县| 泌阳县| 松溪县| 曲周县| 深圳市| 双城市| 海盐县| 思南县| 云和县| 宁陕县| 巴彦县| 西华县|