OpenStack Heat Translator是主要的OpenStack Heat编排项目之一。它简化OASIS TOSCA服务模板到Heat Orchestration Template(HOT)的转换,以及转换后的模板在OpenStack云中的部署。要使用它,你只需通过PyPI下载稳定的版本,或者通过主分支来使用最新的源代码。Docker容器现在广泛用于应用程序和工具,并且呈增长态势。构建容器很有趣,使用容器更加有趣和高效。我们已经创建了一个容器,它使用PyPI中可用的最新的Heat-Translator稳定版本。本文将展示镜像在的位置以及如何使用它。

 

获取映像

Heat Translator Docker容器镜像可在Docker hub上获得,名为patrocinio / h-t-container-stable。

 

使用容器

你可以在运行容器的同时调用Heat Translator。Heat Translator通常用于转换本地文件系统中可用的TOSCA服务模板或者通过URL提供该模板。我们将以两种方式调用Heat Translator。

(一)从本地文件系统转换TOSCA服务模板

假设你本地机器上的TOSCA服务模板名为tosca_helloworld.yaml,位于/ tmp / tosca_testfiles中。要将其转换为HOT,请按如下所示运行容器:

 

$ docker run -v /tmp/tosca_testfiles:/tosca patrocinio/h-t-container-stable --template-file /tosca/tosca_helloworld.yaml

 

如果你的环境中没有可用的镜像patrocinio / h-t-container-stable将拉入镜像。 另外请注意,容器要求你必须将/ tmp / tosca_testfiles目录作为将被映射为容器内的/ tosca目录的卷提供。你可以将/ tmp / tosca_testfiles想成host源目录。它的名称可以随意,但必须作为绝对路径提供。剩下的很简单:你提供Heat Translator所理解的参数。在本例下,我们为TOSCA服务模板提供了必需的-template-file参数并赋值。服务模板可以是上面提供的YAML文件,也可以是TOSCA CSAR文件。如果你是CSAR新手,请从Sahdev Zala的帖子(https://developer.ibm.com/opentech/2016/11/08/package-cloud-workloads-tosca-cloud-service-archive/)中了解更多信息。假设你的tosca_helloworld.yaml看起来如下所示:

 

tosca_definitions_version: tosca_simple_yaml_1_0

description: Template for deploying a single server with predefined properties.

topology_template:
  node_templates:
    my_server:
      type: tosca.nodes.Compute
      capabilities:
        # Host container properties
        host:
         properties:
           num_cpus: 2
           disk_size: 10 GB
           mem_size: 512 MB
        # Guest Operating System properties
        os:
          properties:
            # host Operating System image properties
            architecture: x86_64
            type: Linux
            distribution: RHEL
            version: 6.5

 

上述命令的输出将产生以下HOT模板:

 

heat_template_version: 2013-05-23

description: >
  Template for deploying a single server with predefined properties.
parameters: {}
resources:
  my_server:
    type: OS::Nova::Server
    properties:
      flavor: m1.medium
      image: rhel-6.5-test-image
      user_data_format: SOFTWARE_CONFIG
outputs: {}

 

(二)通过URL转换TOSCA服务模板

 

通过提供服务模板或CSAR作为URL进行转换非常简单。所有要做的就是提供一个URL作为-template-file参数的值。例如,可以使用以下命令转换位于TOSCA Parsergithub项目上的tosca_helloworld.yaml:

 

$ docker run patrocinio/h-t-container-stable
--template-file https://raw.githubusercontent.com/openstack/tosca-parser/master/toscaparser/tests/data/tosca_helloworld.yaml

 

(三)Heat Translator帮助

你可以通过运行以下命令获得关于Heat Translator的帮助:

 

docker run patrocinio/h-t-container-stable --help

 

Dockerfile

以下是用于构建h-t-container-stable镜像的Dockerfile的内容。该文件也可在Heat Translator项目中使用。

 

FROM ubuntu

MAINTAINER Eduardo Patrocinio and Sahdev P. Zala

RUN apt-get -y update && apt-get install -y \ 
    python-pip 

RUN pip install heat-translator

COPY heat_translator_logging.conf /usr/local/lib/python2.7/dist-packages/translator/conf/

# Have some test TOSCA templates in my_tosca directory to copy to the container as an example.
# This is an optional step and can be removed.
COPY my_tosca /tmp/my_toscahttps://mp.weixin.qq.com/cgi-bin/appmsg?t=media/appmsg_edit&action=edit&type=10&appmsgid=505005902&token=1851909988&lang=zh_CN

ENTRYPOINT ["heat-translator"]

 

结论

在本文中,我们展示了在 docker run 命令期间,如何通过传递源文件用Docker镜像来使用OpenStack Heat Translator。我们还分享了Dockerfile,它可以作为基础来创建一个改良的Heat Translator Docker容器。

 


 

编译:Jonathan Zhang

作者Sahdev Zala,Eduardo Patrocinio

来源:http://superuser.openstack.org/articles/docker-containerized-openstack-heat-translator/

投稿邮箱:openstackcn@sina.cn